From cbe8fce6f9798dfdb9c5575b5b189e7b32c3e814 Mon Sep 17 00:00:00 2001 From: shoutcool Date: Mon, 6 Sep 2021 17:25:40 +0200 Subject: [PATCH 01/10] improved bip39 api --- README.md | 8 +++++--- dist/lamden.js | 33 +++++++++++++++++---------------- src/js/wallet.js | 30 ++++++++++++++++++------------ test/wallet-test.js | 11 +++++++---- 4 files changed, 47 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 28160f5..6b084f7 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ console.log(lamdenWallet) ``` ### Create a new BIP39 / BIP 32 compatible wallet -- **BIP39** = 24 seed phrase +- **BIP39** = 24 word mnemonic - **BIP32** = derivation path ```javascript @@ -49,6 +49,7 @@ console.log(lamdenWallet) sk: 'a6b72cb3d1160c26f9f39a8f1d4a3c7c0da2ac59d193b66ac5f919ec77f28915', vk: '53d016586ce35c5f6ea581cadf4693dd2850621dfad6a2261e8dd311c83e11d5', derivationIndex: 0, + seed: '3626c59ee5bce833a8bf5024645eb10415b39c6f9fd0ff0fb1b00b8ca9fd6ff4b8a0ed7077296cdaff1b955f03318f244dfd3fead404d93f11a3f301c0e3e1c6', mnemonic: 'evidence rifle behave normal duty mean junk chicken salute relief raw chunk region ocean guard swarm taste toy loop ozone spell crumble apart echo' } @@ -59,7 +60,7 @@ console.log(lamdenWallet) - **BIP32** = derivation path ```javascript -const mnemonic = 'evidence rifle behave normal duty mean junk chicken salute relief raw chunk region ocean guard swarm taste toy loop ozone spell crumble apart echo' +const seed = '3626c59ee5bce833a8bf5024645eb10415b39c6f9fd0ff0fb1b00b8ca9fd6ff4b8a0ed7077296cdaff1b955f03318f244dfd3fead404d93f11a3f301c0e3e1c6' const derivationIndex = 0; let lamdenWallet = Lamden.wallet.new_wallet_bip39(mnemonic, derivationIndex) @@ -68,7 +69,8 @@ console.log(lamdenWallet) sk: 'a6b72cb3d1160c26f9f39a8f1d4a3c7c0da2ac59d193b66ac5f919ec77f28915', vk: '53d016586ce35c5f6ea581cadf4693dd2850621dfad6a2261e8dd311c83e11d5', derivationIndex: 0, - mnemonic: 'evidence rifle behave normal duty mean junk chicken salute relief raw chunk region ocean guard swarm taste toy loop ozone spell crumble apart echo' + seed: null, + mnemonic: null } ``` diff --git a/dist/lamden.js b/dist/lamden.js index fd31506..5d5c545 100644 --- a/dist/lamden.js +++ b/dist/lamden.js @@ -2483,26 +2483,26 @@ function new_wallet(seed = null) { * * @param mnemonic 24 word seed phrase * @param derivationIndex bip32 derivation key index - * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} + * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} * derivationIndex: bip32 derivation key index * vk: Verify Key (VK) represented as a 64 character hex string * sk: Signing Key (SK) represented as a 64 character hex string - * mnemonic: 24 word seed phrase - + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { +function generate_keys_bip39(seed = undefined, derivationIndex = 0) { + let finalSeed; let finalMnemonic; - if (mnemonic !== undefined){ - finalMnemonic = mnemonic; + if (seed !== undefined){ + finalSeed = seed; }else { finalMnemonic = bip39.generateMnemonic(256); + finalSeed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); } - const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); + const { key, chainCode } = bip32.derivePath(derivationPath, finalSeed, 0x80000000); const privateKey = key.toString('hex'); const publicKey = bip32.getPublicKey(key, false).toString('hex'); @@ -2515,23 +2515,24 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { sk: privateKey, vk: publicKey, derivationIndex: derivationIndex, - mnemonic: finalMnemonic + seed: seed !== undefined ? null : finalSeed, + mnemonic: seed !== undefined ? null : finalMnemonic, } } /** - * @param Uint8Array(length: 32) seed - * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be - * avoided by everyday users + * @param mnemonic 24 word seed phrase + * @param derivationIndex bip32 derivation key index * * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } * sk: Signing Key (SK) represented as a 64 character hex string * vk: Verify Key (VK) represented as a 64 character hex string * derivationIndex: Bip32 derivation index - * mnemonic: 24 word seed phrase (just returned if method was called without existing mnemonic) + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); +function new_wallet_bip39(seed = undefined, derivationIndex = 0) { + return generate_keys_bip39(seed, derivationIndex); } /** diff --git a/src/js/wallet.js b/src/js/wallet.js index 7a39c00..0cdf0b8 100644 --- a/src/js/wallet.js +++ b/src/js/wallet.js @@ -129,22 +129,22 @@ export function new_wallet(seed = null) { * derivationIndex: bip32 derivation key index * vk: Verify Key (VK) represented as a 64 character hex string * sk: Signing Key (SK) represented as a 64 character hex string - * mnemonic: 24 word seed phrase - + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { +function generate_keys_bip39(seed = undefined, derivationIndex = 0) { + let finalSeed; let finalMnemonic; - if (mnemonic !== undefined){ - finalMnemonic = mnemonic; + if (seed !== undefined){ + finalSeed = seed; }else { finalMnemonic = bip39.generateMnemonic(256) + finalSeed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); } - const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); + const { key, chainCode } = bip32.derivePath(derivationPath, finalSeed, 0x80000000); const privateKey = key.toString('hex'); const publicKey = bip32.getPublicKey(key, false).toString('hex'); @@ -153,11 +153,16 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { throw Error('Bip32 public key does not match with Lamden public key!') } + if (finalMnemonic !== undefined){ + + } + return { sk: privateKey, vk: publicKey, derivationIndex: derivationIndex, - mnemonic: finalMnemonic + seed: seed !== undefined ? null : finalSeed, + mnemonic: seed !== undefined ? null : finalMnemonic, } } @@ -169,10 +174,11 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { * sk: Signing Key (SK) represented as a 64 character hex string * vk: Verify Key (VK) represented as a 64 character hex string * derivationIndex: Bip32 derivation index - * mnemonic: 24 word seed phrase + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -export function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); +export function new_wallet_bip39(seed = undefined, derivationIndex = 0) { + return generate_keys_bip39(seed, derivationIndex); } /** diff --git a/test/wallet-test.js b/test/wallet-test.js index 4924768..a4861c8 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -17,18 +17,21 @@ describe('Test Lamden Wallet methods', () => { expect( validateTypes.isStringWithValue(newWallet.mnemonic) ).to.be( true ) expect( validateTypes.isNumber(newWallet.derivationIndex) ).to.be( true ) expect( newWallet.derivationIndex ).to.be( 0 ) + expect( validateTypes.isStringHex(newWallet.seed) ).to.be( true ) + expect( newWallet.seed.length ).to.be( 128 ) }), - it('creates a bip39 / bip32 compatible lamden keypair from mnemonic', () => { - const mnemonic = 'ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort' + it('creates a bip39 / bip32 compatible lamden keypair from seed', () => { + const seed = 'd3ad26bd89d54d0c22bb32d34ea9f06c567ba060d8e1518974d807180b886c643bfb7f455bd3db2c767a17c089aab20db97cf0f0184d730b9d20be0c7b6cc6cc' const derivationIndex = 127 - let newWallet = wallet.new_wallet_bip39(mnemonic, derivationIndex); + let newWallet = wallet.new_wallet_bip39(seed, derivationIndex); expect( validateTypes.isStringHex(newWallet.vk) ).to.be( true ) expect( newWallet.vk ).to.be( 'd0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607' ) expect( validateTypes.isStringHex(newWallet.sk) ).to.be( true ) expect( newWallet.sk ).to.be( '86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8' ) - expect( newWallet.mnemonic ).to.be( mnemonic ) + expect( newWallet.mnemonic ).to.be( null ) + expect( newWallet.seed ).to.be( null ) expect( validateTypes.isNumber(newWallet.derivationIndex) ).to.be( true ) expect( newWallet.derivationIndex ).to.be( 127 ) }) From c15e4813cb7f974a8517d56300032885754c651a Mon Sep 17 00:00:00 2001 From: shoutcool Date: Mon, 6 Sep 2021 17:40:38 +0200 Subject: [PATCH 02/10] fixed doco --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6b084f7..bf7f2fb 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,13 @@ console.log(lamdenWallet) ``` ### Restore a BIP39 / BIP 32 compatible wallet -- **BIP39** = 24 seed phrase +- **BIP39** = 24 word mnemonic - **BIP32** = derivation path ```javascript const seed = '3626c59ee5bce833a8bf5024645eb10415b39c6f9fd0ff0fb1b00b8ca9fd6ff4b8a0ed7077296cdaff1b955f03318f244dfd3fead404d93f11a3f301c0e3e1c6' const derivationIndex = 0; -let lamdenWallet = Lamden.wallet.new_wallet_bip39(mnemonic, derivationIndex) +let lamdenWallet = Lamden.wallet.new_wallet_bip39(seed, derivationIndex) console.log(lamdenWallet) >> { From c92b85ae77b5941637c29806d666ed030b0fc9c9 Mon Sep 17 00:00:00 2001 From: yaezah Date: Thu, 4 Nov 2021 04:14:09 -0700 Subject: [PATCH 03/10] node-js & browser fix --- dist/cjs/lamden.js | 8731 +++++++ dist/cjs/lamden.js.map | 1 + dist/esm/lamden.js | 40617 ++++++++++++++++++++++++++++++ dist/esm/lamden.js.map | 1 + dist/lamden.js | 6633 ----- package-lock.json | 2755 +- package.json | 12 +- rollup.config.js | 45 +- src/bip39.browser.js | 16654 ++++++++++++ src/index.js | 37 +- src/js/encoder.js | 364 +- src/js/helpers.js | 206 +- src/js/masternode-api.js | 401 +- src/js/network.js | 131 +- src/js/transactionBuilder.js | 667 +- src/js/wallet.js | 200 +- test/encoder-test.js | 487 +- test/keystore-test.js | 485 +- test/masternode_api-test.js | 397 +- test/network-test.js | 169 +- test/transactionBatcher-test.js | 97 +- test/transactionBuilder-test.js | 643 +- test/wallet-test.js | 220 +- 23 files changed, 68604 insertions(+), 11349 deletions(-) create mode 100644 dist/cjs/lamden.js create mode 100644 dist/cjs/lamden.js.map create mode 100644 dist/esm/lamden.js create mode 100644 dist/esm/lamden.js.map delete mode 100644 dist/lamden.js create mode 100644 src/bip39.browser.js diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js new file mode 100644 index 0000000..3afd62b --- /dev/null +++ b/dist/cjs/lamden.js @@ -0,0 +1,8731 @@ +'use strict'; + +var nacl = require('tweetnacl'); +var bip39 = require('bip39'); +var bip32 = require('ed25519-hd-key'); +var Stream = require('stream'); +var http = require('http'); +var Url = require('url'); +var https = require('https'); +var zlib = require('zlib'); +var buffer = require('buffer'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); +} + +var nacl__default = /*#__PURE__*/_interopDefaultLegacy(nacl); +var bip39__namespace = /*#__PURE__*/_interopNamespace(bip39); +var bip32__default = /*#__PURE__*/_interopDefaultLegacy(bip32); +var Stream__default = /*#__PURE__*/_interopDefaultLegacy(Stream); +var http__default = /*#__PURE__*/_interopDefaultLegacy(http); +var Url__default = /*#__PURE__*/_interopDefaultLegacy(Url); +var https__default = /*#__PURE__*/_interopDefaultLegacy(https); +var zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var dist = {exports: {}}; + +(function (module, exports) { +(function (global, factory) { + factory(exports) ; +}(commonjsGlobal, (function (exports) { + class ValidateTypes { + constructor() {} + + getType(value) { + return Object.prototype.toString.call(value); + } + + getClassName(value) { + try { + return value.constructor.name; + } catch (e) {} + + return this.getType(value); + } //Validation functions + + + isObject(value) { + if (this.getType(value) === "[object Object]") return true; + return false; + } + + isFunction(value) { + if (this.getType(value) === "[object Function]") return true; + return false; + } + + isString(value) { + if (this.getType(value) === "[object String]") return true; + return false; + } + + isBoolean(value) { + if (this.getType(value) === "[object Boolean]") return true; + return false; + } + + isArray(value) { + if (this.getType(value) === "[object Array]") return true; + return false; + } + + isNumber(value) { + if (this.getType(value) === "[object Number]") return true; + return false; + } + + isInteger(value) { + if (this.getType(value) === "[object Number]" && Number.isInteger(value)) return true; + return false; + } + + isRegEx(value) { + if (this.getType(value) === "[object RegExp]") return true; + return false; + } + + isStringHex(value) { + if (!this.isStringWithValue(value)) return false; + let hexRegEx = /([0-9]|[a-f])/gim; + return (value.match(hexRegEx) || []).length === value.length; + } + + hasKeys(value, keys) { + if (keys.map(key => key in value).includes(false)) return false; + return true; + } + + isStringWithValue(value) { + if (this.isString(value) && value !== '') return true; + return false; + } + + isObjectWithKeys(value) { + if (this.isObject(value) && Object.keys(value).length > 0) return true; + return false; + } + + isArrayWithValues(value) { + if (this.isArray(value) && value.length > 0) return true; + return false; + } + + isSpecificClass(value, className) { + if (!this.isObject(value)) return false; + if (this.getClassName(value) !== className) return false; + return true; + } + + } + + class AssertTypes { + constructor() { + this.validate = new ValidateTypes(); + } //Validation functions + + + isObject(value) { + if (!this.validate.isObject(value)) { + throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isFunction(value) { + if (!this.validate.isFunction(value)) { + throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isString(value) { + if (!this.validate.isString(value)) { + throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isBoolean(value) { + if (!this.validate.isBoolean(value)) { + throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isArray(value) { + if (!this.validate.isArray(value)) { + throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isNumber(value) { + if (!this.validate.isNumber(value)) { + throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isInteger(value) { + if (!this.validate.isInteger(value)) { + throw new TypeError(`Expected "${value}" to be an integer but got non-integer value`); + } + + return true; + } + + isRegEx(value) { + if (!this.validate.isRegEx(value)) { + throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isStringHex(value) { + if (!this.validate.isStringHex(value)) { + throw new TypeError(`Expected "${value}" to be hex but got non-hex value`); + } + + return true; + } + + hasKeys(value, keys) { + if (!this.validate.hasKeys(value, keys)) { + throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`); + } + + return true; + } + + isStringWithValue(value) { + if (!this.validate.isStringWithValue(value)) { + throw new TypeError(`Expected "${value}" to be [object String] and not empty`); + } + + return true; + } + + isObjectWithKeys(value) { + if (!this.validate.isObjectWithKeys(value)) { + throw new TypeError(`Expected "${value}" to be [object Object] and have keys`); + } + + return true; + } + + isArrayWithValues(value) { + if (!this.validate.isArrayWithValues(value)) { + throw new TypeError(`Expected "${value}" to be [object Array] and not empty`); + } + + return true; + } + + isSpecificClass(value, className) { + if (!this.validate.isSpecificClass(value, className)) { + throw new TypeError(`Expected Object Class to be "${className}" but got ${this.validate.getClassName(value)}`); + } + + return true; + } + + } + + const validateTypes = new ValidateTypes(); + const assertTypes = new AssertTypes(); + + exports.assertTypes = assertTypes; + exports.validateTypes = validateTypes; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +}(dist, dist.exports)); + +var validators = /*@__PURE__*/getDefaultExportFromCjs(dist.exports); + +var cryptojs = {}; + +var core = {}; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ + +/** + * CryptoJS core components. + */ +var CryptoJS$8 = CryptoJS$8 || (function (Math, undefined$1) { + /** + * CryptoJS namespace. + */ + var C = {}; + + /** + * Library namespace. + */ + var C_lib = C.lib = {}; + + /** + * Base object for prototypal inheritance. + */ + var Base = C_lib.Base = (function () { + function F() {} + + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ + extend: function (overrides) { + // Spawn + F.prototype = this; + var subtype = new F(); + + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + + // Create default initializer + if (!subtype.hasOwnProperty('init')) { + subtype.init = function () { + subtype.$super.init.apply(this, arguments); + }; + } + + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + + // Reference supertype + subtype.$super = this; + + return subtype; + }, + + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ + create: function () { + var instance = this.extend(); + instance.init.apply(instance, arguments); + + return instance; + }, + + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ + init: function () { + }, + + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ + mixIn: function (properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + + // IE won't copy toString using the loop above + if (properties.hasOwnProperty('toString')) { + this.toString = properties.toString; + } + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ + clone: function () { + return this.init.prototype.extend(this); + } + }; + }()); + + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var WordArray = C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined$1) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ + toString: function (encoder) { + return (encoder || Hex).stringify(this); + }, + + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ + concat: function (wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + + // Clamp excess bits + this.clamp(); + + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else if (thatWords.length > 0xffff) { + // Copy one word at a time + for (var i = 0; i < thatSigBytes; i += 4) { + thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; + } + } else { + // Copy all words at once + thisWords.push.apply(thisWords, thatWords); + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function () { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function (nBytes) { + var words = []; + for (var i = 0; i < nBytes; i += 4) { + words.push((Math.random() * 0x100000000) | 0); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function (hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function (latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function (wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function (utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function () { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function (data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function (doFlush) { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + var processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function (cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function (messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512/32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function (hasher) { + return function (message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function (hasher) { + return function (message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; +}(Math)); + +core.CryptoJS = CryptoJS$8; + +var CryptoJS$7 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$7; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function (base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex != -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2); + var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2); + words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + + return WordArray.create(words, nBytes); + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; +}()); + +var CryptoJS$6 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function (Math) { + // Shortcuts + var C = CryptoJS$6; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function () { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); +}(Math)); + +var CryptoJS$5 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$5; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ + var EvpKDF = C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: MD5, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init hasher + var hasher = cfg.hasher.create(); + + // Initial values + var derivedKey = WordArray.create(); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + var block = hasher.update(password).finalize(salt); + hasher.reset(); + + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.EvpKDF = function (password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; +}()); + +var CryptoJS$4 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** + * Cipher core components. + */ +CryptoJS$4.lib.Cipher || (function (undefined$1) { + // Shortcuts + var C = CryptoJS$4; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function (key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function (key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function (xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function (dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function (dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128/32, + + ivSize: 128/32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function () { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function (cipher) { + return { + encrypt: function (message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function (ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function () { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function (cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function (cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function (cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function () { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + var block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined$1; + } else { + var block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function () { + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + var modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + var modeCreator = mode.createDecryptor; + + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + this._mode = modeCreator.call(mode, this, iv && iv.words); + }, + + _doProcessBlock: function (words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function () { + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128/32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function (cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function (formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function (cipherParams) { + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + var wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function (openSSLStr) { + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + var salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ ciphertext: ciphertext, salt: salt }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function (ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function (password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64/8); + } + + // Derive key and IV + var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ key: key, iv: iv, salt: salt }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); +}()); + +var CryptoJS$3 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$3; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function () { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + var t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function (M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); +}()); + +var jsonformatter = {}; + +var CryptoJS$2 = core.CryptoJS; + +// create custom json serialization format +var JsonFormatter$2 = { + stringify: function (cipherParams) { + // create json object with ciphertext + var jsonObj = { + ct: cipherParams.ciphertext.toString(CryptoJS$2.enc.Base64) + }; + + // optionally add iv and salt + if (cipherParams.iv) { + jsonObj.iv = cipherParams.iv.toString(); + } + + if (cipherParams.salt) { + jsonObj.s = cipherParams.salt.toString(); + } + + // stringify json object + return JSON.stringify(jsonObj) + }, + + parse: function (jsonStr) { + // parse json string + var jsonObj = JSON.parse(jsonStr); + + // extract ciphertext from json object, and create cipher params object + var cipherParams = CryptoJS$2.lib.CipherParams.create({ + ciphertext: CryptoJS$2.enc.Base64.parse(jsonObj.ct) + }); + + // optionally extract iv and salt + if (jsonObj.iv) { + cipherParams.iv = CryptoJS$2.enc.Hex.parse(jsonObj.iv); + } + + if (jsonObj.s) { + cipherParams.salt = CryptoJS$2.enc.Hex.parse(jsonObj.s); + } + + return cipherParams; + } +}; + +jsonformatter.JsonFormatter = JsonFormatter$2; + +var CryptoJS$1 = core.CryptoJS; + + + + + +var JsonFormatter$1 = jsonformatter.JsonFormatter; + +cryptojs.CryptoJS = CryptoJS$1; +cryptojs.JsonFormatter = JsonFormatter$1; + +const { CryptoJS, JsonFormatter } = cryptojs; +const { validateTypes: validateTypes$5, assertTypes: assertTypes$1 } = validators; + +/** + * Encrypt a Javascript object with a string password + * The object passed must pass JSON.stringify or the method will fail. + * + * @param {string} password A password to encrypt the object with + * @param {Object} obj A javascript object (must be JSON compatible) + * @return {string} Encrypted string + */ +function encryptObject(password, obj) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isObject(obj); + + const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { + format: JsonFormatter, + }).toString(); + return encrypted; +} + +/** + * Decrypt an Object using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} objString A javascript object as JSON string + * @return {string} Encrypted string + */ +function decryptObject(password, objString) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isStringWithValue(objString); + + try { + const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }); + return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); + } catch (e) { + return false; + } +} + +/** + * Encrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} string A string to be password encrypted + * @return {string} Encrypted string + */ +function encryptStrHash(password, string) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isString(string); + + const encrypt = CryptoJS.AES.encrypt(string, password).toString(); + return encrypt; +} + +/** + * Decrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} encryptedString A string to decrypt + * @return {string} Decrypted string + */ +function decryptStrHash(password, encryptedString) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isStringWithValue(encryptedString); + + try { + const decrypted = CryptoJS.AES.decrypt(encryptedString, password); + return CryptoJS.enc.Utf8.stringify(decrypted) === "" + ? false + : CryptoJS.enc.Utf8.stringify(decrypted); + } catch (e) { + return false; + } +} + +function buf2hex(buffer) { + return Array.prototype.map + .call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)) + .join(""); +} +function hex2buf(hexString) { + var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); + for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); + return bytes; +} +function str2buf(string) { + var buf = new Buffer.from(string); + return new Uint8Array(buf); +} +function concatUint8Arrays(array1, array2) { + var arr = new Uint8Array(array1.length + array2.length); + arr.set(array1); + arr.set(array2, array1.length); + return arr; +} +function ab2str(buf) { + return String.fromCharCode.apply(null, new Uint8Array(buf)); +} +function str2ab(str) { + var buf = new ArrayBuffer(str.length); + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +function str2hex(str) { + var hex = ""; + for (var i = 0; i < str.length; i++) { + hex += "" + str.charCodeAt(i).toString(16); + } + return hex; +} +function hex2str(hexx) { + var hex = hexx.toString(); //force conversion + var str = ""; + for (var i = 0; i < hex.length && hex.substr(i, 2) !== "00"; i += 2) + str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + return str; +} +function randomString(length) { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (var i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +} +function isStringHex(string = "") { + let hexRegEx = /([0-9]|[a-f])/gim; + return typeof string === "string" && (string.match(hexRegEx) || []).length === string.length; +} + +function isLamdenKey(string) { + if (validateTypes$5.isStringHex(string) && string.length === 64) return true; + return false; +} + +var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + encryptObject: encryptObject, + decryptObject: decryptObject, + encryptStrHash: encryptStrHash, + decryptStrHash: decryptStrHash, + buf2hex: buf2hex, + hex2buf: hex2buf, + str2buf: str2buf, + concatUint8Arrays: concatUint8Arrays, + ab2str: ab2str, + str2ab: str2ab, + str2hex: str2hex, + hex2str: hex2str, + randomString: randomString, + isStringHex: isStringHex, + isLamdenKey: isLamdenKey +}); + +/** + * Create a wallet object for signing and verifying messages + * + * @param {Object} [args={}] Args Object + * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from + * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users + * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages + * @return {Object} Wallet Object with sign and verify methods + */ +let create_wallet = (args = {}) => { + let { sk = undefined, keepPrivate = false, seed = null } = args; + + let vk; + + if (sk) { + vk = get_vk(sk); + } else { + let keyPair = new_wallet(seed); + vk = keyPair.vk; + sk = keyPair.sk; + } + + const wallet = () => { + return { + sign: (msg) => sign(sk, msg), + verify: (msg, sig) => verify(vk, msg, sig), + vk, + sk: !keepPrivate ? sk : undefined, + }; + }; + + return wallet(); +}; + +/** + * @param Uint8Array(length: 32) seed + * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be + * avoided by everyday users + * + * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + */ +function generate_keys(seed = null) { + var kp = null; + if (seed == null) { + kp = nacl__default['default'].sign.keyPair(); + } else { + kp = nacl__default['default'].sign.keyPair.fromSeed(seed); + } + // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey + // and the vk is the last 32 bytes of the secretKey as well as the publicKey + // { + // 'publicKey': , + // 'secretKey': + // } + return { + sk: new Uint8Array(kp["secretKey"].slice(0, 32)), + vk: new Uint8Array(kp["secretKey"].slice(32, 64)), + }; +} +/** + * @param String sk + * sk: A 64 character long hex representation of a signing key (private key) + * + * @return String vk + * vk: A 64 character long hex representation of a verify key (public key) + */ +function get_vk(sk) { + var kp = format_to_keys(sk); + var kpf = keys_to_format(kp); + return kpf.vk; +} +/** + * @param String sk + * sk: A 64 character long hex representation of a signing key (private key) + * + * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + */ +function format_to_keys(sk) { + var skf = hex2buf(sk); + var kp = generate_keys(skf); + return kp; +} +/** + * @param Object kp + * kp: Object containing the properties sk and vk + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + * + * @return {string, string} { sk, vk } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + */ +function keys_to_format(kp) { + return { + vk: buf2hex(kp.vk), + sk: buf2hex(kp.sk), + }; +} +/** + * @param Uint8Array(length: 32) seed + * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be + * avoided by everyday users + * + * @return {string, string} { sk, vk } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + */ +function new_wallet(seed = null) { + const keys = generate_keys(seed); + return keys_to_format(keys); +} + +/** + * + * @param mnemonic 24 word seed phrase + * @param derivationIndex bip32 derivation key index + * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} + * derivationIndex: bip32 derivation key index + * vk: Verify Key (VK) represented as a 64 character hex string + * sk: Signing Key (SK) represented as a 64 character hex string + * mnemonic: 24 word seed phrase + + */ +function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { + let finalMnemonic; + + if (mnemonic !== undefined) { + finalMnemonic = mnemonic; + } else { + finalMnemonic = bip39__namespace.generateMnemonic(256); + } + + const seed = bip39__namespace.mnemonicToSeedSync(finalMnemonic).toString("hex"); + + const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; + const { key, chainCode } = bip32__default['default'].derivePath(derivationPath, seed, 0x80000000); + + const privateKey = key.toString("hex"); + const publicKey = bip32__default['default'].getPublicKey(key, false).toString("hex"); + + if (publicKey !== get_vk(privateKey)) { + throw Error("Bip32 public key does not match with Lamden public key!"); + } + + return { + sk: privateKey, + vk: publicKey, + derivationIndex: derivationIndex, + mnemonic: finalMnemonic, + }; +} + +/** + * @param mnemonic 24 word seed phrase + * @param derivationIndex bip32 derivation key index + * + * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + * derivationIndex: Bip32 derivation index + * mnemonic: 24 word seed phrase + */ +function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { + return generate_keys_bip39(mnemonic, derivationIndex); +} + +/** + * @param String sk + * @param Uint8Array msg + * sk: A 64 character long hex representation of a signing key (private key) + * msg: A Uint8Array of bytes representing the message you would like to sign + * + * @return String sig + * sig: A 128 character long hex string representing the message's signature + */ +function sign(sk, msg) { + var kp = format_to_keys(sk); + // This is required due to the secretKey required to sign a transaction + // in the js implementation of NaCL being the combination of the sk and + // vk for some stupid reason. That being said, we still want the sk and + // vk objects to exist in 32-byte string format (same as cilantro's + // python implementation) when presented to the user. + var jsnacl_sk = concatUint8Arrays(kp.sk, kp.vk); + return buf2hex(nacl__default['default'].sign.detached(msg, jsnacl_sk)); +} +/** + * @param String vk + * @param Uint8Array msg + * @param String sig + * vk: A 64 character long hex representation of a verify key (public key) + * msg: A Uint8Array (bytes) representation of a message that has been signed + * sig: A 128 character long hex representation of a nacl signature + * + * @return Bool result + * result: true if verify checked out, false if not + */ +function verify(vk, msg, sig) { + var vkb = hex2buf(vk); + var sigb = hex2buf(sig); + try { + return nacl__default['default'].sign.detached.verify(msg, sigb, vkb); + } catch (_a) { + return false; + } +} + +var wallet = /*#__PURE__*/Object.freeze({ + __proto__: null, + create_wallet: create_wallet, + generate_keys: generate_keys, + get_vk: get_vk, + format_to_keys: format_to_keys, + keys_to_format: keys_to_format, + new_wallet: new_wallet, + new_wallet_bip39: new_wallet_bip39, + sign: sign, + verify: verify +}); + +class EventEmitter { + constructor() { + this._events = {}; + } + + on(name, listener) { + if (!this._events[name]) { + this._events[name] = []; + } + + this._events[name].push(listener); + } + + removeListener(name, listenerToRemove) { + if (!this._events[name]) { + throw new Error(`Can't remove a listener. Event "${name}" doesn't exits.`); + } + + const filterListeners = (listener) => listener !== listenerToRemove; + this._events[name] = this._events[name].filter(filterListeners); + } + + emit(name, data) { + if (!this._events[name]) return + + const fireCallbacks = (callback) => { + callback(data); + }; + + this._events[name].forEach(fireCallbacks); + } + } + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream__default['default'].Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = require('encoding').convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream__default['default'].PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream__default['default']) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream__default['default']) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream__default['default'])) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http__default['default'].STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + const headers = new Headers(opts.headers); + + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + + get url() { + return this[INTERNALS$1].url || ''; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get redirected() { + return this[INTERNALS$1].counter > 0; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone$1(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +const INTERNALS$2 = Symbol('Request internals'); + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url__default['default'].parse; +const format_url = Url__default['default'].format; + +const streamDestructionSupported = 'destroy' in Stream__default['default'].Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parse_url(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parse_url(`${input}`); + } + input = {}; + } else { + parsedURL = parse_url(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone$1(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; + + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + get signal() { + return this[INTERNALS$2].signal; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + if (request.signal && request.body instanceof Stream__default['default'].Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } + + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream__default['default'].PassThrough; +const resolve_url = Url__default['default'].resolve; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https__default['default'] : http__default['default']).request; + const signal = request.signal; + + let response = null; + + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream__default['default'].Readable) { + request.body.destroy(error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + const req = send(options); + let reqTimeout; + + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } + + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + const locationURL = location === null ? null : resolve_url(request.url, location); + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib__default['default'].Z_SYNC_FLUSH, + finishFlush: zlib__default['default'].Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib__default['default'].createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib__default['default'].createInflate()); + } else { + body = body.pipe(zlib__default['default'].createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib__default['default'].createBrotliDecompress === 'function') { + body = body.pipe(zlib__default['default'].createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +/* + * bignumber.js v9.0.0 + * A JavaScript library for arbitrary-precision arithmetic. + * https://github.com/MikeMcl/bignumber.js + * Copyright (c) 2019 Michael Mclaughlin + * MIT Licensed. + * + * BigNumber.prototype methods | BigNumber methods + * | + * absoluteValue abs | clone + * comparedTo | config set + * decimalPlaces dp | DECIMAL_PLACES + * dividedBy div | ROUNDING_MODE + * dividedToIntegerBy idiv | EXPONENTIAL_AT + * exponentiatedBy pow | RANGE + * integerValue | CRYPTO + * isEqualTo eq | MODULO_MODE + * isFinite | POW_PRECISION + * isGreaterThan gt | FORMAT + * isGreaterThanOrEqualTo gte | ALPHABET + * isInteger | isBigNumber + * isLessThan lt | maximum max + * isLessThanOrEqualTo lte | minimum min + * isNaN | random + * isNegative | sum + * isPositive | + * isZero | + * minus | + * modulo mod | + * multipliedBy times | + * negated | + * plus | + * precision sd | + * shiftedBy | + * squareRoot sqrt | + * toExponential | + * toFixed | + * toFormat | + * toFraction | + * toJSON | + * toNumber | + * toPrecision | + * toString | + * valueOf | + * + */ + + +var + isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, + + mathceil = Math.ceil, + mathfloor = Math.floor, + + bignumberError = '[BigNumber Error] ', + tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ', + + BASE = 1e14, + LOG_BASE = 14, + MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 + // MAX_INT32 = 0x7fffffff, // 2^31 - 1 + POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], + SQRT_BASE = 1e7, + + // EDITABLE + // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and + // the arguments to toExponential, toFixed, toFormat, and toPrecision. + MAX = 1E9; // 0 to MAX_INT32 + + +/* + * Create and return a BigNumber constructor. + */ +function clone(configObject) { + var div, convertBase, parseNumeric, + P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null }, + ONE = new BigNumber(1), + + + //----------------------------- EDITABLE CONFIG DEFAULTS ------------------------------- + + + // The default values below must be integers within the inclusive ranges stated. + // The values can also be changed at run-time using BigNumber.set. + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + // The rounding mode used when rounding to the above decimal places, and when using + // toExponential, toFixed, toFormat and toPrecision, and round (default value). + // UP 0 Away from zero. + // DOWN 1 Towards zero. + // CEIL 2 Towards +Infinity. + // FLOOR 3 Towards -Infinity. + // HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -1e7, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. + MAX_EXP = 1e7, // 1 to MAX + + // Whether to use cryptographically-secure random number generation, if available. + CRYPTO = false, // true or false + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend. + // This modulo mode is commonly known as 'truncated division' and is + // equivalent to (a % n) in JavaScript. + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). + // The remainder is always positive. + // + // The truncated division, floored division, Euclidian division and IEEE 754 remainder + // modes are commonly used for the modulus operation. + // Although the other rounding modes can also be used, they may not give useful results. + MODULO_MODE = 1, // 0 to 9 + + // The maximum number of significant digits of the result of the exponentiatedBy operation. + // If POW_PRECISION is 0, there will be unlimited significant digits. + POW_PRECISION = 0, // 0 to MAX + + // The format specification used by the BigNumber.prototype.toFormat method. + FORMAT = { + prefix: '', + groupSize: 3, + secondaryGroupSize: 0, + groupSeparator: ',', + decimalSeparator: '.', + fractionGroupSize: 0, + fractionGroupSeparator: '\xA0', // non-breaking space + suffix: '' + }, + + // The alphabet used for base conversion. It must be at least 2 characters long, with no '+', + // '-', '.', whitespace, or repeated character. + // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' + ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; + + + //------------------------------------------------------------------------------------------ + + + // CONSTRUCTOR + + + /* + * The BigNumber constructor and exported function. + * Create and return a new instance of a BigNumber object. + * + * v {number|string|BigNumber} A numeric value. + * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive. + */ + function BigNumber(v, b) { + var alphabet, c, caseChanged, e, i, isNum, len, str, + x = this; + + // Enable constructor call without `new`. + if (!(x instanceof BigNumber)) return new BigNumber(v, b); + + if (b == null) { + + if (v && v._isBigNumber === true) { + x.s = v.s; + + if (!v.c || v.e > MAX_EXP) { + x.c = x.e = null; + } else if (v.e < MIN_EXP) { + x.c = [x.e = 0]; + } else { + x.e = v.e; + x.c = v.c.slice(); + } + + return; + } + + if ((isNum = typeof v == 'number') && v * 0 == 0) { + + // Use `1 / n` to handle minus zero also. + x.s = 1 / v < 0 ? (v = -v, -1) : 1; + + // Fast path for integers, where n < 2147483648 (2**31). + if (v === ~~v) { + for (e = 0, i = v; i >= 10; i /= 10, e++); + + if (e > MAX_EXP) { + x.c = x.e = null; + } else { + x.e = e; + x.c = [v]; + } + + return; + } + + str = String(v); + } else { + + if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum); + + x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; + } + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + + // Exponential form? + if ((i = str.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + + // Integer. + e = str.length; + } + + } else { + + // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + intCheck(b, 2, ALPHABET.length, 'Base'); + + // Allow exponential notation to be used with base 10 argument, while + // also rounding to DECIMAL_PLACES as with other bases. + if (b == 10) { + x = new BigNumber(v); + return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE); + } + + str = String(v); + + if (isNum = typeof v == 'number') { + + // Avoid potential interpretation of Infinity and NaN as base 44+ values. + if (v * 0 != 0) return parseNumeric(x, str, isNum, b); + + x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if (BigNumber.DEBUG && str.replace(/^0\.0*|\./, '').length > 15) { + throw Error + (tooManyDigits + v); + } + } else { + x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; + } + + alphabet = ALPHABET.slice(0, b); + e = i = 0; + + // Check that str is a valid base b number. + // Don't use RegExp, so alphabet can contain special characters. + for (len = str.length; i < len; i++) { + if (alphabet.indexOf(c = str.charAt(i)) < 0) { + if (c == '.') { + + // If '.' is not the first character and it has not be found before. + if (i > e) { + e = len; + continue; + } + } else if (!caseChanged) { + + // Allow e.g. hexadecimal 'FF' as well as 'ff'. + if (str == str.toUpperCase() && (str = str.toLowerCase()) || + str == str.toLowerCase() && (str = str.toUpperCase())) { + caseChanged = true; + i = -1; + e = 0; + continue; + } + } + + return parseNumeric(x, String(v), isNum, b); + } + } + + // Prevent later check for length on converted number. + isNum = false; + str = convertBase(str, b, 10, x.s); + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + else e = str.length; + } + + // Determine leading zeros. + for (i = 0; str.charCodeAt(i) === 48; i++); + + // Determine trailing zeros. + for (len = str.length; str.charCodeAt(--len) === 48;); + + if (str = str.slice(i, ++len)) { + len -= i; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if (isNum && BigNumber.DEBUG && + len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { + throw Error + (tooManyDigits + (x.s * v)); + } + + // Overflow? + if ((e = e - i - 1) > MAX_EXP) { + + // Infinity. + x.c = x.e = null; + + // Underflow? + } else if (e < MIN_EXP) { + + // Zero. + x.c = [x.e = 0]; + } else { + x.e = e; + x.c = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first element of the coefficient array. + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; // i < 1 + + if (i < len) { + if (i) x.c.push(+str.slice(0, i)); + + for (len -= LOG_BASE; i < len;) { + x.c.push(+str.slice(i, i += LOG_BASE)); + } + + i = LOG_BASE - (str = str.slice(i)).length; + } else { + i -= len; + } + + for (; i--; str += '0'); + x.c.push(+str); + } + } else { + + // Zero. + x.c = [x.e = 0]; + } + } + + + // CONSTRUCTOR PROPERTIES + + + BigNumber.clone = clone; + + BigNumber.ROUND_UP = 0; + BigNumber.ROUND_DOWN = 1; + BigNumber.ROUND_CEIL = 2; + BigNumber.ROUND_FLOOR = 3; + BigNumber.ROUND_HALF_UP = 4; + BigNumber.ROUND_HALF_DOWN = 5; + BigNumber.ROUND_HALF_EVEN = 6; + BigNumber.ROUND_HALF_CEIL = 7; + BigNumber.ROUND_HALF_FLOOR = 8; + BigNumber.EUCLID = 9; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object with the following optional properties (if the value of a property is + * a number, it must be an integer within the inclusive range stated): + * + * DECIMAL_PLACES {number} 0 to MAX + * ROUNDING_MODE {number} 0 to 8 + * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX] + * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX] + * CRYPTO {boolean} true or false + * MODULO_MODE {number} 0 to 9 + * POW_PRECISION {number} 0 to MAX + * ALPHABET {string} A string of two or more unique characters which does + * not contain '.'. + * FORMAT {object} An object with some of the following properties: + * prefix {string} + * groupSize {number} + * secondaryGroupSize {number} + * groupSeparator {string} + * decimalSeparator {string} + * fractionGroupSize {number} + * fractionGroupSeparator {string} + * suffix {string} + * + * (The values assigned to the above FORMAT object properties are not checked for validity.) + * + * E.g. + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * + * Ignore properties/parameters set to null or undefined, except for ALPHABET. + * + * Return an object with the properties current values. + */ + BigNumber.config = BigNumber.set = function (obj) { + var p, v; + + if (obj != null) { + + if (typeof obj == 'object') { + + // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) { + v = obj[p]; + intCheck(v, 0, MAX, p); + DECIMAL_PLACES = v; + } + + // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. + // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) { + v = obj[p]; + intCheck(v, 0, 8, p); + ROUNDING_MODE = v; + } + + // EXPONENTIAL_AT {number|number[]} + // Integer, -MAX to MAX inclusive or + // [integer -MAX to 0 inclusive, 0 to MAX inclusive]. + // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, 0, p); + intCheck(v[1], 0, MAX, p); + TO_EXP_NEG = v[0]; + TO_EXP_POS = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); + } + } + + // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or + // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. + // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}' + if (obj.hasOwnProperty(p = 'RANGE')) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, -1, p); + intCheck(v[1], 1, MAX, p); + MIN_EXP = v[0]; + MAX_EXP = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + if (v) { + MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); + } else { + throw Error + (bignumberError + p + ' cannot be zero: ' + v); + } + } + } + + // CRYPTO {boolean} true or false. + // '[BigNumber Error] CRYPTO not true or false: {v}' + // '[BigNumber Error] crypto unavailable' + if (obj.hasOwnProperty(p = 'CRYPTO')) { + v = obj[p]; + if (v === !!v) { + if (v) { + if (typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes)) { + CRYPTO = v; + } else { + CRYPTO = !v; + throw Error + (bignumberError + 'crypto unavailable'); + } + } else { + CRYPTO = v; + } + } else { + throw Error + (bignumberError + p + ' not true or false: ' + v); + } + } + + // MODULO_MODE {number} Integer, 0 to 9 inclusive. + // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'MODULO_MODE')) { + v = obj[p]; + intCheck(v, 0, 9, p); + MODULO_MODE = v; + } + + // POW_PRECISION {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'POW_PRECISION')) { + v = obj[p]; + intCheck(v, 0, MAX, p); + POW_PRECISION = v; + } + + // FORMAT {object} + // '[BigNumber Error] FORMAT not an object: {v}' + if (obj.hasOwnProperty(p = 'FORMAT')) { + v = obj[p]; + if (typeof v == 'object') FORMAT = v; + else throw Error + (bignumberError + p + ' not an object: ' + v); + } + + // ALPHABET {string} + // '[BigNumber Error] ALPHABET invalid: {v}' + if (obj.hasOwnProperty(p = 'ALPHABET')) { + v = obj[p]; + + // Disallow if only one character, + // or if it contains '+', '-', '.', whitespace, or a repeated character. + if (typeof v == 'string' && !/^.$|[+-.\s]|(.).*\1/.test(v)) { + ALPHABET = v; + } else { + throw Error + (bignumberError + p + ' invalid: ' + v); + } + } + + } else { + + // '[BigNumber Error] Object expected: {v}' + throw Error + (bignumberError + 'Object expected: ' + obj); + } + } + + return { + DECIMAL_PLACES: DECIMAL_PLACES, + ROUNDING_MODE: ROUNDING_MODE, + EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], + RANGE: [MIN_EXP, MAX_EXP], + CRYPTO: CRYPTO, + MODULO_MODE: MODULO_MODE, + POW_PRECISION: POW_PRECISION, + FORMAT: FORMAT, + ALPHABET: ALPHABET + }; + }; + + + /* + * Return true if v is a BigNumber instance, otherwise return false. + * + * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed. + * + * v {any} + * + * '[BigNumber Error] Invalid BigNumber: {v}' + */ + BigNumber.isBigNumber = function (v) { + if (!v || v._isBigNumber !== true) return false; + if (!BigNumber.DEBUG) return true; + + var i, n, + c = v.c, + e = v.e, + s = v.s; + + out: if ({}.toString.call(c) == '[object Array]') { + + if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) { + + // If the first element is zero, the BigNumber value must be zero. + if (c[0] === 0) { + if (e === 0 && c.length === 1) return true; + break out; + } + + // Calculate number of digits that c[0] should have, based on the exponent. + i = (e + 1) % LOG_BASE; + if (i < 1) i += LOG_BASE; + + // Calculate number of digits of c[0]. + //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) { + if (String(c[0]).length == i) { + + for (i = 0; i < c.length; i++) { + n = c[i]; + if (n < 0 || n >= BASE || n !== mathfloor(n)) break out; + } + + // Last element cannot be zero, unless it is the only element. + if (n !== 0) return true; + } + } + + // Infinity/NaN + } else if (c === null && e === null && (s === null || s === 1 || s === -1)) { + return true; + } + + throw Error + (bignumberError + 'Invalid BigNumber: ' + v); + }; + + + /* + * Return a new BigNumber whose value is the maximum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.maximum = BigNumber.max = function () { + return maxOrMin(arguments, P.lt); + }; + + + /* + * Return a new BigNumber whose value is the minimum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.minimum = BigNumber.min = function () { + return maxOrMin(arguments, P.gt); + }; + + + /* + * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, + * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing + * zeros are produced). + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}' + * '[BigNumber Error] crypto unavailable' + */ + BigNumber.random = (function () { + var pow2_53 = 0x20000000000000; + + // Return a 53 bit integer n, where 0 <= n < 9007199254740992. + // Check if Math.random() produces more than 32 bits of randomness. + // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. + // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. + var random53bitInt = (Math.random() * pow2_53) & 0x1fffff + ? function () { return mathfloor(Math.random() * pow2_53); } + : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + + (Math.random() * 0x800000 | 0); }; + + return function (dp) { + var a, b, e, k, v, + i = 0, + c = [], + rand = new BigNumber(ONE); + + if (dp == null) dp = DECIMAL_PLACES; + else intCheck(dp, 0, MAX); + + k = mathceil(dp / LOG_BASE); + + if (CRYPTO) { + + // Browsers supporting crypto.getRandomValues. + if (crypto.getRandomValues) { + + a = crypto.getRandomValues(new Uint32Array(k *= 2)); + + for (; i < k;) { + + // 53 bits: + // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) + // 11111 11111111 11111111 11111111 11100000 00000000 00000000 + // ((Math.pow(2, 32) - 1) >>> 11).toString(2) + // 11111 11111111 11111111 + // 0x20000 is 2^21. + v = a[i] * 0x20000 + (a[i + 1] >>> 11); + + // Rejection sampling: + // 0 <= v < 9007199254740992 + // Probability that v >= 9e15, is + // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 + if (v >= 9e15) { + b = crypto.getRandomValues(new Uint32Array(2)); + a[i] = b[0]; + a[i + 1] = b[1]; + } else { + + // 0 <= v <= 8999999999999999 + // 0 <= (v % 1e14) <= 99999999999999 + c.push(v % 1e14); + i += 2; + } + } + i = k / 2; + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + a = crypto.randomBytes(k *= 7); + + for (; i < k;) { + + // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 + // 0x100000000 is 2^32, 0x1000000 is 2^24 + // 11111 11111111 11111111 11111111 11111111 11111111 11111111 + // 0 <= v < 9007199254740992 + v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) + + (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) + + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6]; + + if (v >= 9e15) { + crypto.randomBytes(7).copy(a, i); + } else { + + // 0 <= (v % 1e14) <= 99999999999999 + c.push(v % 1e14); + i += 7; + } + } + i = k / 7; + } else { + CRYPTO = false; + throw Error + (bignumberError + 'crypto unavailable'); + } + } + + // Use Math.random. + if (!CRYPTO) { + + for (; i < k;) { + v = random53bitInt(); + if (v < 9e15) c[i++] = v % 1e14; + } + } + + k = c[--i]; + dp %= LOG_BASE; + + // Convert trailing digits to zeros according to dp. + if (k && dp) { + v = POWS_TEN[LOG_BASE - dp]; + c[i] = mathfloor(k / v) * v; + } + + // Remove trailing elements which are zero. + for (; c[i] === 0; c.pop(), i--); + + // Zero? + if (i < 0) { + c = [e = 0]; + } else { + + // Remove leading elements which are zero and adjust exponent accordingly. + for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE); + + // Count the digits of the first element of c to determine leading zeros, and... + for (i = 1, v = c[0]; v >= 10; v /= 10, i++); + + // adjust the exponent accordingly. + if (i < LOG_BASE) e -= LOG_BASE - i; + } + + rand.e = e; + rand.c = c; + return rand; + }; + })(); + + + /* + * Return a BigNumber whose value is the sum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.sum = function () { + var i = 1, + args = arguments, + sum = new BigNumber(args[0]); + for (; i < args.length;) sum = sum.plus(args[i++]); + return sum; + }; + + + // PRIVATE FUNCTIONS + + + // Called by BigNumber and BigNumber.prototype.toString. + convertBase = (function () { + var decimal = '0123456789'; + + /* + * Convert string of baseIn to an array of numbers of baseOut. + * Eg. toBaseOut('255', 10, 16) returns [15, 15]. + * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5]. + */ + function toBaseOut(str, baseIn, baseOut, alphabet) { + var j, + arr = [0], + arrL, + i = 0, + len = str.length; + + for (; i < len;) { + for (arrL = arr.length; arrL--; arr[arrL] *= baseIn); + + arr[0] += alphabet.indexOf(str.charAt(i++)); + + for (j = 0; j < arr.length; j++) { + + if (arr[j] > baseOut - 1) { + if (arr[j + 1] == null) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + // Convert a numeric string of baseIn to a numeric string of baseOut. + // If the caller is toString, we are converting from base 10 to baseOut. + // If the caller is BigNumber, we are converting from baseIn to base 10. + return function (str, baseIn, baseOut, sign, callerIsToString) { + var alphabet, d, e, k, r, x, xc, y, + i = str.indexOf('.'), + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE; + + // Non-integer. + if (i >= 0) { + k = POW_PRECISION; + + // Unlimited precision. + POW_PRECISION = 0; + str = str.replace('.', ''); + y = new BigNumber(baseIn); + x = y.pow(str.length - i); + POW_PRECISION = k; + + // Convert str as if an integer, then restore the fraction part by dividing the + // result by its base raised to a power. + + y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'), + 10, baseOut, decimal); + y.e = y.c.length; + } + + // Convert the number as integer. + + xc = toBaseOut(str, baseIn, baseOut, callerIsToString + ? (alphabet = ALPHABET, decimal) + : (alphabet = decimal, ALPHABET)); + + // xc now represents str as an integer and converted to baseOut. e is the exponent. + e = k = xc.length; + + // Remove trailing zeros. + for (; xc[--k] == 0; xc.pop()); + + // Zero? + if (!xc[0]) return alphabet.charAt(0); + + // Does str represent an integer? If so, no need for the division. + if (i < 0) { + --e; + } else { + x.c = xc; + x.e = e; + + // The sign is needed for correct rounding. + x.s = sign; + x = div(x, y, dp, rm, baseOut); + xc = x.c; + r = x.r; + e = x.e; + } + + // xc now represents str converted to baseOut. + + // THe index of the rounding digit. + d = e + dp + 1; + + // The rounding digit: the digit to the right of the digit that may be rounded up. + i = xc[d]; + + // Look at the rounding digits and mode to determine whether to round up. + + k = baseOut / 2; + r = r || d < 0 || xc[d + 1] != null; + + r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 || + rm == (x.s < 0 ? 8 : 7)); + + // If the index of the rounding digit is not greater than zero, or xc represents + // zero, then the result of the base conversion is zero or, if rounding up, a value + // such as 0.00001. + if (d < 1 || !xc[0]) { + + // 1^-dp or 0 + str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); + } else { + + // Truncate xc to the required number of decimal places. + xc.length = d; + + // Round up? + if (r) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for (--baseOut; ++xc[--d] > baseOut;) { + xc[d] = 0; + + if (!d) { + ++e; + xc = [1].concat(xc); + } + } + } + + // Determine trailing zeros. + for (k = xc.length; !xc[--k];); + + // E.g. [4, 11, 15] becomes 4bf. + for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++])); + + // Add leading zeros, decimal point and trailing zeros as required. + str = toFixedPoint(str, e, alphabet.charAt(0)); + } + + // The caller will add the sign. + return str; + }; + })(); + + + // Perform division in the specified base. Called by div and convertBase. + div = (function () { + + // Assume non-zero x and k. + function multiply(x, k, base) { + var m, temp, xlo, xhi, + carry = 0, + i = x.length, + klo = k % SQRT_BASE, + khi = k / SQRT_BASE | 0; + + for (x = x.slice(); i--;) { + xlo = x[i] % SQRT_BASE; + xhi = x[i] / SQRT_BASE | 0; + m = khi * xlo + xhi * klo; + temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry; + carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi; + x[i] = temp % base; + } + + if (carry) x = [carry].concat(x); + + return x; + } + + function compare(a, b, aL, bL) { + var i, cmp; + + if (aL != bL) { + cmp = aL > bL ? 1 : -1; + } else { + + for (i = cmp = 0; i < aL; i++) { + + if (a[i] != b[i]) { + cmp = a[i] > b[i] ? 1 : -1; + break; + } + } + } + + return cmp; + } + + function subtract(a, b, aL, base) { + var i = 0; + + // Subtract b from a. + for (; aL--;) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for (; !a[0] && a.length > 1; a.splice(0, 1)); + } + + // x: dividend, y: divisor. + return function (x, y, dp, rm, base) { + var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, + yL, yz, + s = x.s == y.s ? 1 : -1, + xc = x.c, + yc = y.c; + + // Either NaN, Infinity or 0? + if (!xc || !xc[0] || !yc || !yc[0]) { + + return new BigNumber( + + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : + + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s * 0 : s / 0 + ); + } + + q = new BigNumber(s); + qc = q.c = []; + e = x.e - y.e; + s = dp + e + 1; + + if (!base) { + base = BASE; + e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); + s = s / LOG_BASE | 0; + } + + // Result exponent may be one less then the current value of e. + // The coefficients of the BigNumbers from convertBase may have trailing zeros. + for (i = 0; yc[i] == (xc[i] || 0); i++); + + if (yc[i] > (xc[i] || 0)) e--; + + if (s < 0) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i = 0; + s += 2; + + // Normalise xc and yc so highest order digit of yc is >= base / 2. + + n = mathfloor(base / (yc[0] + 1)); + + // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1. + // if (n > 1 || n++ == 1 && yc[0] < base / 2) { + if (n > 1) { + yc = multiply(yc, n, base); + xc = multiply(xc, n, base); + yL = yc.length; + xL = xc.length; + } + + xi = yL; + rem = xc.slice(0, yL); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for (; remL < yL; rem[remL++] = 0); + yz = yc.slice(); + yz = [0].concat(yz); + yc0 = yc[0]; + if (yc[1] >= base / 2) yc0++; + // Not necessary, but to prevent trial digit n > base, when using base 3. + // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15; + + do { + n = 0; + + // Compare divisor and remainder. + cmp = compare(yc, rem, yL, remL); + + // If divisor < remainder. + if (cmp < 0) { + + // Calculate trial digit, n. + + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + + // n is how many times the divisor goes into the current remainder. + n = mathfloor(rem0 / yc0); + + // Algorithm: + // product = divisor multiplied by trial digit (n). + // Compare product and remainder. + // If product is greater than remainder: + // Subtract divisor from product, decrement trial digit. + // Subtract product from remainder. + // If product was less than remainder at the last compare: + // Compare new remainder and divisor. + // If remainder is greater than divisor: + // Subtract divisor from remainder, increment trial digit. + + if (n > 1) { + + // n may be > base only when base is 3. + if (n >= base) n = base - 1; + + // product = divisor * trial digit. + prod = multiply(yc, n, base); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + // If product > remainder then trial digit n too high. + // n is 1 too high about 5% of the time, and is not known to have + // ever been more than 1 too high. + while (compare(prod, rem, prodL, remL) == 1) { + n--; + + // Subtract divisor from product. + subtract(prod, yL < prodL ? yz : yc, prodL, base); + prodL = prod.length; + cmp = 1; + } + } else { + + // n is 0 or 1, cmp is -1. + // If n is 0, there is no need to compare yc and rem again below, + // so change cmp to 1 to avoid it. + // If n is 1, leave cmp as -1, so yc and rem are compared again. + if (n == 0) { + + // divisor < remainder, so n must be at least 1. + cmp = n = 1; + } + + // product = divisor + prod = yc.slice(); + prodL = prod.length; + } + + if (prodL < remL) prod = [0].concat(prod); + + // Subtract product from remainder. + subtract(rem, prod, remL, base); + remL = rem.length; + + // If product was < remainder. + if (cmp == -1) { + + // Compare divisor and new remainder. + // If divisor < new remainder, subtract divisor from remainder. + // Trial digit n too low. + // n is 1 too low about 5% of the time, and very rarely 2 too low. + while (compare(yc, rem, yL, remL) < 1) { + n++; + + // Subtract divisor from remainder. + subtract(rem, yL < remL ? yz : yc, remL, base); + remL = rem.length; + } + } + } else if (cmp === 0) { + n++; + rem = [0]; + } // else cmp === 1 and n will be 0 + + // Add the next digit, n, to the result array. + qc[i++] = n; + + // Update the remainder. + if (rem[0]) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [xc[xi]]; + remL = 1; + } + } while ((xi++ < xL || rem[0] != null) && s--); + + more = rem[0] != null; + + // Leading zero? + if (!qc[0]) qc.splice(0, 1); + } + + if (base == BASE) { + + // To calculate q.e, first get the number of digits of qc[0]. + for (i = 1, s = qc[0]; s >= 10; s /= 10, i++); + + round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more); + + // Caller is convertBase. + } else { + q.e = e; + q.r = +more; + } + + return q; + }; + })(); + + + /* + * Return a string representing the value of BigNumber n in fixed-point or exponential + * notation rounded to the specified decimal places or significant digits. + * + * n: a BigNumber. + * i: the index of the last digit required (i.e. the digit that may be rounded up). + * rm: the rounding mode. + * id: 1 (toExponential) or 2 (toPrecision). + */ + function format(n, i, rm, id) { + var c0, e, ne, len, str; + + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + if (!n.c) return n.toString(); + + c0 = n.c[0]; + ne = n.e; + + if (i == null) { + str = coeffToString(n.c); + str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) + ? toExponential(str, ne) + : toFixedPoint(str, ne, '0'); + } else { + n = round(new BigNumber(n), i, rm); + + // n.e may have changed if the value was rounded up. + e = n.e; + + str = coeffToString(n.c); + len = str.length; + + // toPrecision returns exponential notation if the number of significant digits + // specified is less than the number of digits necessary to represent the integer + // part of the value in fixed-point notation. + + // Exponential notation. + if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) { + + // Append zeros? + for (; len < i; str += '0', len++); + str = toExponential(str, e); + + // Fixed-point notation. + } else { + i -= ne; + str = toFixedPoint(str, e, '0'); + + // Append zeros? + if (e + 1 > len) { + if (--i > 0) for (str += '.'; i--; str += '0'); + } else { + i += e - len; + if (i > 0) { + if (e + 1 == len) str += '.'; + for (; i--; str += '0'); + } + } + } + } + + return n.s < 0 && c0 ? '-' + str : str; + } + + + // Handle BigNumber.max and BigNumber.min. + function maxOrMin(args, method) { + var n, + i = 1, + m = new BigNumber(args[0]); + + for (; i < args.length; i++) { + n = new BigNumber(args[i]); + + // If any number is NaN, return NaN. + if (!n.s) { + m = n; + break; + } else if (method.call(m, n)) { + m = n; + } + } + + return m; + } + + + /* + * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. + * Called by minus, plus and times. + */ + function normalise(n, c, e) { + var i = 1, + j = c.length; + + // Remove trailing zeros. + for (; !c[--j]; c.pop()); + + // Calculate the base 10 exponent. First get the number of digits of c[0]. + for (j = c[0]; j >= 10; j /= 10, i++); + + // Overflow? + if ((e = i + e * LOG_BASE - 1) > MAX_EXP) { + + // Infinity. + n.c = n.e = null; + + // Underflow? + } else if (e < MIN_EXP) { + + // Zero. + n.c = [n.e = 0]; + } else { + n.e = e; + n.c = c; + } + + return n; + } + + + // Handle values that fail the validity test in BigNumber. + parseNumeric = (function () { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, + dotAfter = /^([^.]+)\.$/, + dotBefore = /^\.([^.]+)$/, + isInfinityOrNaN = /^-?(Infinity|NaN)$/, + whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + + return function (x, str, isNum, b) { + var base, + s = isNum ? str : str.replace(whitespaceOrPlus, ''); + + // No exception on ±Infinity or NaN. + if (isInfinityOrNaN.test(s)) { + x.s = isNaN(s) ? null : s < 0 ? -1 : 1; + } else { + if (!isNum) { + + // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i + s = s.replace(basePrefix, function (m, p1, p2) { + base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8; + return !b || b == base ? p1 : m; + }); + + if (b) { + base = b; + + // E.g. '1.' to '1', '.1' to '0.1' + s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1'); + } + + if (str != s) return new BigNumber(s, base); + } + + // '[BigNumber Error] Not a number: {n}' + // '[BigNumber Error] Not a base {b} number: {n}' + if (BigNumber.DEBUG) { + throw Error + (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str); + } + + // NaN + x.s = null; + } + + x.c = x.e = null; + } + })(); + + + /* + * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. + * If r is truthy, it is known that there are more digits after the rounding digit. + */ + function round(x, sd, rm, r) { + var d, i, j, k, n, ni, rd, + xc = x.c, + pows10 = POWS_TEN; + + // if x is not Infinity or NaN... + if (xc) { + + // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. + // n is a base 1e14 number, the value of the element of array x.c containing rd. + // ni is the index of n within x.c. + // d is the number of digits of n. + // i is the index of rd within n including leading zeros. + // j is the actual index of rd within n (if < 0, rd is a leading zero). + out: { + + // Get the number of digits of the first element of xc. + for (d = 1, k = xc[0]; k >= 10; k /= 10, d++); + i = sd - d; + + // If the rounding digit is in the first element of xc... + if (i < 0) { + i += LOG_BASE; + j = sd; + n = xc[ni = 0]; + + // Get the rounding digit at index j of n. + rd = n / pows10[d - j - 1] % 10 | 0; + } else { + ni = mathceil((i + 1) / LOG_BASE); + + if (ni >= xc.length) { + + if (r) { + + // Needed by sqrt. + for (; xc.length <= ni; xc.push(0)); + n = rd = 0; + d = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + + // Get the number of digits of n. + for (d = 1; k >= 10; k /= 10, d++); + + // Get the index of rd within n. + i %= LOG_BASE; + + // Get the index of rd within n, adjusted for leading zeros. + // The number of leading zeros of n is given by LOG_BASE - d. + j = i - LOG_BASE + d; + + // Get the rounding digit at index j of n. + rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0; + } + } + + r = r || sd < 0 || + + // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[d - j - 1] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); + + r = rm < 4 + ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 || + rm == (x.s < 0 ? 8 : 7)); + + if (sd < 1 || !xc[0]) { + xc.length = 0; + + if (r) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; + x.e = -sd || 0; + } else { + + // Zero. + xc[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if (i == 0) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[LOG_BASE - i]; + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of n. + xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; + } + + // Round up? + if (r) { + + for (; ;) { + + // If the digit to be rounded up is in the first element of xc... + if (ni == 0) { + + // i will be the length of xc[0] before k is added. + for (i = 1, j = xc[0]; j >= 10; j /= 10, i++); + j = xc[0] += k; + for (k = 1; j >= 10; j /= 10, k++); + + // if i != k the length has increased. + if (i != k) { + x.e++; + if (xc[0] == BASE) xc[0] = 1; + } + + break; + } else { + xc[ni] += k; + if (xc[ni] != BASE) break; + xc[ni--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for (i = xc.length; xc[--i] === 0; xc.pop()); + } + + // Overflow? Infinity. + if (x.e > MAX_EXP) { + x.c = x.e = null; + + // Underflow? Zero. + } else if (x.e < MIN_EXP) { + x.c = [x.e = 0]; + } + } + + return x; + } + + + function valueOf(n) { + var str, + e = n.e; + + if (e === null) return n.toString(); + + str = coeffToString(n.c); + + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential(str, e) + : toFixedPoint(str, e, '0'); + + return n.s < 0 ? '-' + str : str; + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P.absoluteValue = P.abs = function () { + var x = new BigNumber(this); + if (x.s < 0) x.s = 1; + return x; + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P.comparedTo = function (y, b) { + return compare(this, new BigNumber(y, b)); + }; + + + /* + * If dp is undefined or null or true or false, return the number of decimal places of the + * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * + * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * [dp] {number} Decimal places: integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.decimalPlaces = P.dp = function (dp, rm) { + var c, n, v, + x = this; + + if (dp != null) { + intCheck(dp, 0, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + return round(new BigNumber(x), dp + x.e + 1, rm); + } + + if (!(c = x.c)) return null; + n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; + + // Subtract the number of trailing zeros of the last number. + if (v = c[v]) for (; v % 10 == 0; v /= 10, n--); + if (n < 0) n = 0; + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber divided by the value of + * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.dividedBy = P.div = function (y, b) { + return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE); + }; + + + /* + * Return a new BigNumber whose value is the integer part of dividing the value of this + * BigNumber by the value of BigNumber(y, b). + */ + P.dividedToIntegerBy = P.idiv = function (y, b) { + return div(this, new BigNumber(y, b), 0, 1); + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber exponentiated by n. + * + * If m is present, return the result modulo m. + * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. + * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE. + * + * The modular power operation works efficiently when x, n, and m are integers, otherwise it + * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0. + * + * n {number|string|BigNumber} The exponent. An integer. + * [m] {number|string|BigNumber} The modulus. + * + * '[BigNumber Error] Exponent not an integer: {n}' + */ + P.exponentiatedBy = P.pow = function (n, m) { + var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, + x = this; + + n = new BigNumber(n); + + // Allow NaN and ±Infinity, but not other non-integers. + if (n.c && !n.isInteger()) { + throw Error + (bignumberError + 'Exponent not an integer: ' + valueOf(n)); + } + + if (m != null) m = new BigNumber(m); + + // Exponent of MAX_SAFE_INTEGER is 15. + nIsBig = n.e > 14; + + // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0. + if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) { + + // The sign of the result of pow when x is negative depends on the evenness of n. + // If +n overflows to ±Infinity, the evenness of n would be not be known. + y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n))); + return m ? y.mod(m) : y; + } + + nIsNeg = n.s < 0; + + if (m) { + + // x % m returns NaN if abs(m) is zero, or m is NaN. + if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN); + + isModExp = !nIsNeg && x.isInteger() && m.isInteger(); + + if (isModExp) x = x.mod(m); + + // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15. + // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15. + } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 + // [1, 240000000] + ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 + // [80000000000000] [99999750000000] + : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) { + + // If x is negative and n is odd, k = -0, else k = 0. + k = x.s < 0 && isOdd(n) ? -0 : 0; + + // If x >= 1, k = ±Infinity. + if (x.e > -1) k = 1 / k; + + // If n is negative return ±0, else return ±Infinity. + return new BigNumber(nIsNeg ? 1 / k : k); + + } else if (POW_PRECISION) { + + // Truncating each coefficient array to a length of k after each multiplication + // equates to truncating significant digits to POW_PRECISION + [28, 41], + // i.e. there will be a minimum of 28 guard digits retained. + k = mathceil(POW_PRECISION / LOG_BASE + 2); + } + + if (nIsBig) { + half = new BigNumber(0.5); + if (nIsNeg) n.s = 1; + nIsOdd = isOdd(n); + } else { + i = Math.abs(+valueOf(n)); + nIsOdd = i % 2; + } + + y = new BigNumber(ONE); + + // Performs 54 loop iterations for n of 9007199254740991. + for (; ;) { + + if (nIsOdd) { + y = y.times(x); + if (!y.c) break; + + if (k) { + if (y.c.length > k) y.c.length = k; + } else if (isModExp) { + y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m)); + } + } + + if (i) { + i = mathfloor(i / 2); + if (i === 0) break; + nIsOdd = i % 2; + } else { + n = n.times(half); + round(n, n.e + 1, 1); + + if (n.e > 14) { + nIsOdd = isOdd(n); + } else { + i = +valueOf(n); + if (i === 0) break; + nIsOdd = i % 2; + } + } + + x = x.times(x); + + if (k) { + if (x.c && x.c.length > k) x.c.length = k; + } else if (isModExp) { + x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m)); + } + } + + if (isModExp) return y; + if (nIsNeg) y = ONE.div(y); + + return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer + * using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}' + */ + P.integerValue = function (rm) { + var n = new BigNumber(this); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + return round(n, n.e + 1, rm); + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), + * otherwise return false. + */ + P.isEqualTo = P.eq = function (y, b) { + return compare(this, new BigNumber(y, b)) === 0; + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise return false. + */ + P.isFinite = function () { + return !!this.c; + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isGreaterThan = P.gt = function (y, b) { + return compare(this, new BigNumber(y, b)) > 0; + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isGreaterThanOrEqualTo = P.gte = function (y, b) { + return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0; + + }; + + + /* + * Return true if the value of this BigNumber is an integer, otherwise return false. + */ + P.isInteger = function () { + return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; + }; + + + /* + * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isLessThan = P.lt = function (y, b) { + return compare(this, new BigNumber(y, b)) < 0; + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isLessThanOrEqualTo = P.lte = function (y, b) { + return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0; + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise return false. + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise return false. + */ + P.isNegative = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this BigNumber is positive, otherwise return false. + */ + P.isPositive = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise return false. + */ + P.isZero = function () { + return !!this.c && this.c[0] == 0; + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus the value of + * BigNumber(y, b). + */ + P.minus = function (y, b) { + var i, j, t, xLTy, + x = this, + a = x.s; + + y = new BigNumber(y, b); + b = y.s; + + // Either NaN? + if (!a || !b) return new BigNumber(NaN); + + // Signs differ? + if (a != b) { + y.s = -b; + return x.plus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if (!xe || !ye) { + + // Either Infinity? + if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN); + + // Either zero? + if (!xc[0] || !yc[0]) { + + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x : + + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0); + } + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Determine which is the bigger number. + if (a = xe - ye) { + + if (xLTy = a < 0) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + + // Prepend zeros to equalise exponents. + for (b = a; b--; t.push(0)); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; + + for (a = b = 0; b < j; b++) { + + if (xc[b] != yc[b]) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; + + b = (j = yc.length) - (i = xc.length); + + // Append zeros to xc if shorter. + // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. + if (b > 0) for (; b--; xc[i++] = 0); + b = BASE - 1; + + // Subtract yc from xc. + for (; j > a;) { + + if (xc[--j] < yc[j]) { + for (i = j; i && !xc[--i]; xc[i] = b); + --xc[i]; + xc[j] += BASE; + } + + xc[j] -= yc[j]; + } + + // Remove leading zeros and adjust exponent accordingly. + for (; xc[0] == 0; xc.splice(0, 1), --ye); + + // Zero? + if (!xc[0]) { + + // Following IEEE 754 (2008) 6.3, + // n - n = +0 but n - n = -0 when rounding towards -Infinity. + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [y.e = 0]; + return y; + } + + // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + // for finite x and y. + return normalise(y, xc, ye); + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo the value of + * BigNumber(y, b). The result depends on the value of MODULO_MODE. + */ + P.modulo = P.mod = function (y, b) { + var q, s, + x = this; + + y = new BigNumber(y, b); + + // Return NaN if x is Infinity or NaN, or y is NaN or zero. + if (!x.c || !y.s || y.c && !y.c[0]) { + return new BigNumber(NaN); + + // Return x if y is Infinity or x is zero. + } else if (!y.c || x.c && !x.c[0]) { + return new BigNumber(x); + } + + if (MODULO_MODE == 9) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // r = x - qy where 0 <= r < abs(y) + s = y.s; + y.s = 1; + q = div(x, y, 0, 3); + y.s = s; + q.s *= s; + } else { + q = div(x, y, 0, MODULO_MODE); + } + + y = x.minus(q.times(y)); + + // To match JavaScript %, ensure sign of zero is sign of dividend. + if (!y.c[0] && MODULO_MODE == 1) y.s = x.s; + + return y; + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value + * of BigNumber(y, b). + */ + P.multipliedBy = P.times = function (y, b) { + var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, + base, sqrtBase, + x = this, + xc = x.c, + yc = (y = new BigNumber(y, b)).c; + + // Either NaN, ±Infinity or ±0? + if (!xc || !yc || !xc[0] || !yc[0]) { + + // Return NaN if either is NaN, or one is 0 and the other is Infinity. + if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { + y.c = y.e = y.s = null; + } else { + y.s *= x.s; + + // Return ±Infinity if either is ±Infinity. + if (!xc || !yc) { + y.c = y.e = null; + + // Return ±0 if either is ±0. + } else { + y.c = [0]; + y.e = 0; + } + } + + return y; + } + + e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); + y.s *= x.s; + xcL = xc.length; + ycL = yc.length; + + // Ensure xc points to longer array and xcL to its length. + if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; + + // Initialise the result array with zeros. + for (i = xcL + ycL, zc = []; i--; zc.push(0)); + + base = BASE; + sqrtBase = SQRT_BASE; + + for (i = ycL; --i >= 0;) { + c = 0; + ylo = yc[i] % sqrtBase; + yhi = yc[i] / sqrtBase | 0; + + for (k = xcL, j = i + k; j > i;) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c; + c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi; + zc[j--] = xlo % base; + } + + zc[j] = c; + } + + if (c) { + ++e; + } else { + zc.splice(0, 1); + } + + return normalise(y, zc, e); + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber negated, + * i.e. multiplied by -1. + */ + P.negated = function () { + var x = new BigNumber(this); + x.s = -x.s || null; + return x; + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus the value of + * BigNumber(y, b). + */ + P.plus = function (y, b) { + var t, + x = this, + a = x.s; + + y = new BigNumber(y, b); + b = y.s; + + // Either NaN? + if (!a || !b) return new BigNumber(NaN); + + // Signs differ? + if (a != b) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if (!xe || !ye) { + + // Return ±Infinity if either ±Infinity. + if (!xc || !yc) return new BigNumber(a / 0); + + // Either zero? + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0); + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for (; a--; t.push(0)); + t.reverse(); + } + + a = xc.length; + b = yc.length; + + // Point xc to the longer array, and b to the shorter length. + if (a - b < 0) t = yc, yc = xc, xc = t, b = a; + + // Only start adding at yc.length - 1 as the further digits of xc can be ignored. + for (a = 0; b;) { + a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + + if (a) { + xc = [a].concat(xc); + ++ye; + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + // ye = MAX_EXP + 1 possible + return normalise(y, xc, ye); + }; + + + /* + * If sd is undefined or null or true or false, return the number of significant digits of + * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * If sd is true include integer-part trailing zeros in the count. + * + * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive. + * boolean: whether to count integer-part trailing zeros: true or false. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.precision = P.sd = function (sd, rm) { + var c, n, v, + x = this; + + if (sd != null && sd !== !!sd) { + intCheck(sd, 1, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + return round(new BigNumber(x), sd, rm); + } + + if (!(c = x.c)) return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + + if (v = c[v]) { + + // Subtract the number of trailing zeros of the last element. + for (; v % 10 == 0; v /= 10, n--); + + // Add the number of digits of the first element. + for (v = c[0]; v >= 10; v /= 10, n++); + } + + if (sd && x.e + 1 > n) n = x.e + 1; + + return n; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber shifted by k places + * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. + * + * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}' + */ + P.shiftedBy = function (k) { + intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); + return this.times('1e' + k); + }; + + + /* + * sqrt(-n) = N + * sqrt(N) = N + * sqrt(-I) = N + * sqrt(I) = I + * sqrt(0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of this BigNumber, + * rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.squareRoot = P.sqrt = function () { + var m, n, r, rep, t, + x = this, + c = x.c, + s = x.s, + e = x.e, + dp = DECIMAL_PLACES + 4, + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if (s !== 1 || !c || !c[0]) { + return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); + } + + // Initial estimate. + s = Math.sqrt(+valueOf(x)); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if (s == 0 || s == 1 / 0) { + n = coeffToString(c); + if ((n.length + e) % 2 == 0) n += '0'; + s = Math.sqrt(+n); + e = bitFloor((e + 1) / 2) - (e < 0 || e % 2); + + if (s == 1 / 0) { + n = '1e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new BigNumber(n); + } else { + r = new BigNumber(s + ''); + } + + // Check for zero. + // r could be zero if MIN_EXP is changed after the this value was created. + // This would cause a division by zero (x/t) and hence Infinity below, which would cause + // coeffToString to throw. + if (r.c[0]) { + e = r.e; + s = e + dp; + if (s < 3) s = 0; + + // Newton-Raphson iteration. + for (; ;) { + t = r; + r = half.times(t.plus(div(x, t, dp, 1))); + + if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) { + + // The exponent of r may here be one less than the final result exponent, + // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits + // are indexed correctly. + if (r.e < e) --s; + n = n.slice(s - 3, s + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits + // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the + // iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the + // exact result as the nines may infinitely repeat. + if (!rep) { + round(t, t.e + DECIMAL_PLACES + 2, 0); + + if (t.times(t).eq(x)) { + r = t; + break; + } + } + + dp += 4; + s += 4; + rep = 1; + } else { + + // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact + // result. If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + round(r, r.e + DECIMAL_PLACES + 2, 1); + m = !r.times(r).eq(x); + } + + break; + } + } + } + } + + return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m); + }; + + + /* + * Return a string representing the value of this BigNumber in exponential notation and + * rounded using ROUNDING_MODE to dp fixed decimal places. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toExponential = function (dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp++; + } + return format(this, dp, rm, 1); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounding + * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toFixed = function (dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp = dp + this.e + 1; + } + return format(this, dp, rm); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounded + * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties + * of the format or FORMAT object (see BigNumber.set). + * + * The formatting object may contain some or all of the properties shown below. + * + * FORMAT = { + * prefix: '', + * groupSize: 3, + * secondaryGroupSize: 0, + * groupSeparator: ',', + * decimalSeparator: '.', + * fractionGroupSize: 0, + * fractionGroupSeparator: '\xA0', // non-breaking space + * suffix: '' + * }; + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * [format] {object} Formatting options. See FORMAT pbject above. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + * '[BigNumber Error] Argument not an object: {format}' + */ + P.toFormat = function (dp, rm, format) { + var str, + x = this; + + if (format == null) { + if (dp != null && rm && typeof rm == 'object') { + format = rm; + rm = null; + } else if (dp && typeof dp == 'object') { + format = dp; + dp = rm = null; + } else { + format = FORMAT; + } + } else if (typeof format != 'object') { + throw Error + (bignumberError + 'Argument not an object: ' + format); + } + + str = x.toFixed(dp, rm); + + if (x.c) { + var i, + arr = str.split('.'), + g1 = +format.groupSize, + g2 = +format.secondaryGroupSize, + groupSeparator = format.groupSeparator || '', + intPart = arr[0], + fractionPart = arr[1], + isNeg = x.s < 0, + intDigits = isNeg ? intPart.slice(1) : intPart, + len = intDigits.length; + + if (g2) i = g1, g1 = g2, g2 = i, len -= i; + + if (g1 > 0 && len > 0) { + i = len % g1 || g1; + intPart = intDigits.substr(0, i); + for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1); + if (g2 > 0) intPart += groupSeparator + intDigits.slice(i); + if (isNeg) intPart = '-' + intPart; + } + + str = fractionPart + ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize) + ? fractionPart.replace(new RegExp('\\d{' + g2 + '}\\B', 'g'), + '$&' + (format.fractionGroupSeparator || '')) + : fractionPart) + : intPart; + } + + return (format.prefix || '') + str + (format.suffix || ''); + }; + + + /* + * Return an array of two BigNumbers representing the value of this BigNumber as a simple + * fraction with an integer numerator and an integer denominator. + * The denominator will be a positive non-zero value less than or equal to the specified + * maximum denominator. If a maximum denominator is not specified, the denominator will be + * the lowest value necessary to represent the number exactly. + * + * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator. + * + * '[BigNumber Error] Argument {not an integer|out of range} : {md}' + */ + P.toFraction = function (md) { + var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, + x = this, + xc = x.c; + + if (md != null) { + n = new BigNumber(md); + + // Throw if md is less than one or is not an integer, unless it is Infinity. + if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { + throw Error + (bignumberError + 'Argument ' + + (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n)); + } + } + + if (!xc) return new BigNumber(x); + + d = new BigNumber(ONE); + n1 = d0 = new BigNumber(ONE); + d1 = n0 = new BigNumber(ONE); + s = coeffToString(xc); + + // Determine initial denominator. + // d is a power of 10 and the minimum max denominator that specifies the value exactly. + e = d.e = s.length - x.e - 1; + d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; + md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n; + + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber(s); + + // n0 = d1 = 0 + n0.c[0] = 0; + + for (; ;) { + q = div(n, d, 0, 1); + d2 = d0.plus(q.times(d1)); + if (d2.comparedTo(md) == 1) break; + d0 = d1; + d1 = d2; + n1 = n0.plus(q.times(d2 = n1)); + n0 = d2; + d = n.minus(q.times(d2 = d)); + n = d2; + } + + d2 = div(md.minus(d0), d1, 0, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + e = e * 2; + + // Determine which fraction is closer to x, n0/d0 or n1/d1 + r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo( + div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0]; + + MAX_EXP = exp; + + return r; + }; + + + /* + * Return the value of this BigNumber converted to a number primitive. + */ + P.toNumber = function () { + return +valueOf(this); + }; + + + /* + * Return a string representing the value of this BigNumber rounded to sd significant digits + * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits + * necessary to represent the integer part of the value in fixed-point notation, then use + * exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.toPrecision = function (sd, rm) { + if (sd != null) intCheck(sd, 1, MAX); + return format(this, sd, rm, 2); + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or base 10 if b is + * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and + * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than + * TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to ALPHABET.length inclusive. + * + * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + */ + P.toString = function (b) { + var str, + n = this, + s = n.s, + e = n.e; + + // Infinity or NaN? + if (e === null) { + if (s) { + str = 'Infinity'; + if (s < 0) str = '-' + str; + } else { + str = 'NaN'; + } + } else { + if (b == null) { + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential(coeffToString(n.c), e) + : toFixedPoint(coeffToString(n.c), e, '0'); + } else if (b === 10) { + n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE); + str = toFixedPoint(coeffToString(n.c), n.e, '0'); + } else { + intCheck(b, 2, ALPHABET.length, 'Base'); + str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true); + } + + if (s < 0 && n.c[0]) str = '-' + str; + } + + return str; + }; + + + /* + * Return as toString, but do not accept a base argument, and include the minus sign for + * negative zero. + */ + P.valueOf = P.toJSON = function () { + return valueOf(this); + }; + + + P._isBigNumber = true; + + P[Symbol.toStringTag] = 'BigNumber'; + + // Node.js v10.12.0+ + P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf; + + if (configObject != null) BigNumber.set(configObject); + + return BigNumber; +} + + +// PRIVATE HELPER FUNCTIONS + +// These functions don't need access to variables, +// e.g. DECIMAL_PLACES, in the scope of the `clone` function above. + + +function bitFloor(n) { + var i = n | 0; + return n > 0 || n === i ? i : i - 1; +} + + +// Return a coefficient array as a string of base 10 digits. +function coeffToString(a) { + var s, z, + i = 1, + j = a.length, + r = a[0] + ''; + + for (; i < j;) { + s = a[i++] + ''; + z = LOG_BASE - s.length; + for (; z--; s = '0' + s); + r += s; + } + + // Determine trailing zeros. + for (j = r.length; r.charCodeAt(--j) === 48;); + + return r.slice(0, j + 1 || 1); +} + + +// Compare the value of BigNumbers x and y. +function compare(x, y) { + var a, b, + xc = x.c, + yc = y.c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either NaN? + if (!i || !j) return null; + + a = xc && !xc[0]; + b = yc && !yc[0]; + + // Either zero? + if (a || b) return a ? b ? 0 : -j : i; + + // Signs differ? + if (i != j) return i; + + a = i < 0; + b = k == l; + + // Either Infinity? + if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1; + + // Compare exponents. + if (!b) return k > l ^ a ? 1 : -1; + + j = (k = xc.length) < (l = yc.length) ? k : l; + + // Compare digit by digit. + for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1; + + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1; +} + + +/* + * Check that n is a primitive number, an integer, and in range, otherwise throw. + */ +function intCheck(n, min, max, name) { + if (n < min || n > max || n !== mathfloor(n)) { + throw Error + (bignumberError + (name || 'Argument') + (typeof n == 'number' + ? n < min || n > max ? ' out of range: ' : ' not an integer: ' + : ' not a primitive number: ') + String(n)); + } +} + + +// Assumes finite n. +function isOdd(n) { + var k = n.c.length - 1; + return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; +} + + +function toExponential(str, e) { + return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) + + (e < 0 ? 'e' : 'e+') + e; +} + + +function toFixedPoint(str, e, z) { + var len, zs; + + // Negative exponent? + if (e < 0) { + + // Prepend zeros. + for (zs = z + '.'; ++e; zs += z); + str = zs + str; + + // Positive exponent + } else { + len = str.length; + + // Append zeros. + if (++e > len) { + for (zs = z, e -= len; --e; zs += z); + str += zs; + } else if (e < len) { + str = str.slice(0, e) + '.' + str.slice(e); + } + } + + return str; +} + + +// EXPORT + + +var BigNumber = clone(); + +BigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 }); +BigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent + +function Encoder(type, value) { + const throwError = (val) => { + throw new Error(`Error encoding ${val} to ${type}`); + }; + const countDecimals = (n) => { + if (Math.floor(n) === n) return 0; + try { + return n.toString().split(".")[1].length; + } catch (e) { + return 0; + } + }; + const isString = (val) => typeof val === "string" || val instanceof String; + const isArray = (val) => val && typeof val === "object" && val.constructor === Array; + const isObject = (val) => val && typeof val === "object" && val.constructor === Object; + const isDate = (val) => val instanceof Date; + const isBoolean = (val) => typeof val === "boolean"; + + const isNumber = (val) => { + if (isArray(val)) return false; + return !isNaN(encodeBigNumber(val).toNumber()); + }; + + const isInteger = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return true; + return false; + }; + const encodeInt = (val) => { + if (!isNumber(val)) throwError(val); + else return parseInt(val); + }; + const isFloat = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return false; + return true; + }; + const encodeFloat = (val) => { + if (!isNumber(val)) throwError(val); + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + }; + const encodeNumber = (val) => { + if (!isNumber(val)) throwError(val); + if (isFloat(val)) { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + } + if (isInteger(val)) return parseInt(val); + }; + const encodeBigNumber = (val) => { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return val; + }; + + const encodeBool = (val) => { + if (isBoolean(val)) return val; + if (val === "true" || val === 1) return true; + if (val === "false" || val === 0) return false; + throwError(val); + }; + const encodeStr = (val) => { + if (isString(val)) return val; + if (isDate(val)) return val.toISOString(); + return JSON.stringify(val); + }; + const encodeDateTime = (val) => { + val = !isDate(val) ? new Date(val) : val; + if (!isDate(val)) throwError(val); + return { + __time__: [ + val.getUTCFullYear(), + val.getUTCMonth(), + val.getUTCDate(), + val.getUTCHours(), + val.getUTCMinutes(), + val.getUTCSeconds(), + val.getUTCMilliseconds(), + ], + }; + }; + const encodeTimeDelta = (val) => { + const time = isDate(val) ? val.getTime() : new Date(val).getTime(); + const days = parseInt(time / 1000 / 60 / 60 / 24); + const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000; + return { __delta__: [days, seconds] }; + }; + + const encodeList = (val) => { + if (isArray(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isArray(val)) return parseObject(val); + throwError(val); + }; + + const encodeDict = (val) => { + if (isObject(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isObject(val)) return parseObject(val); + throwError(val); + }; + + const encodeObject = (val) => { + try { + return encodeList(val); + } catch (e) { + return encodeDict(val); + } + }; + + function parseObject(obj) { + const encode = (k, v) => { + if (k === "datetime" || k === "datetime.datetime") return Encoder("datetime.datetime", v); + if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v); + if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v); + return v; + }; + + const fixDatetime = (k, v) => { + const isDatetimeObject = (val) => { + let datetimeTypes = ["datetime.datetime", "datetime", "datetime.timedelta", "timedelta"]; + return ( + Object.keys(val).length === 1 && + datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0 + ); + }; + + if (v.constructor === Array) { + v.map((val) => { + if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]]; + //if (isFloat(val)) return encodeFloat(val) + return val; + }); + } + if (v.constructor === Object) { + if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]]; + } + + //if (isFloat(v)) return encodeFloat(v) + + return v; + }; + + let encodeValues = JSON.stringify(obj, encode); + return JSON.parse(encodeValues, fixDatetime); + } + + const encoder = { + str: encodeStr, + string: encodeStr, + float: encodeFloat, + int: encodeInt, + bool: encodeBool, + boolean: encodeBool, + dict: encodeDict, + list: encodeList, + Any: () => value, + "datetime.timedelta": encodeTimeDelta, + "datetime.datetime": encodeDateTime, + timedelta: encodeTimeDelta, + datetime: encodeDateTime, + number: encodeNumber, + object: encodeObject, + bigNumber: encodeBigNumber, + }; + + if (Object.keys(encoder).includes(type)) return encoder[type](value); + else throw new Error(`Error: ${type} is not a valid encoder type.`); +} + +Encoder.BigNumber = BigNumber; + +const { validateTypes: validateTypes$4 } = validators; + +class LamdenMasterNode_API { + constructor(networkInfoObj) { + if (!validateTypes$4.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes$4.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); + + this.hosts = this.validateHosts(networkInfoObj.hosts); + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + + send(method, path, data, overrideURL, callback) { + let parms = ""; + if (Object.keys(data).includes("parms")) { + parms = this.createParms(data.parms); + } + + let options = {}; + if (method === "POST") { + let headers = { "Content-Type": "application/json" }; + options.method = method; + options.headers = headers; + options.body = data; + } + + return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) + .then(async (res) => { + if (res.status === 200) { + let json = await res.json(); + callback(json, undefined); + return json; + } else { + let error = validateTypes$4.isStringWithValue(res.statusText) ? res.statusText : false; + callback(undefined, error); + return error; + } + }) + .catch((err) => { + return callback(undefined, err.toString()); + }); + } + + createParms(parms) { + if (Object.keys(parms).length === 0) return ""; + let parmString = "?"; + Object.keys(parms).forEach((key) => { + parmString = `${parmString}${key}=${parms[key]}&`; + }); + return parmString.slice(0, -1); + } + + async getContractInfo(contractName) { + const returnInfo = (res) => { + try { + if (res.name) return res; + } catch (e) {} + return null; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => returnInfo(res)).then((res) => + returnInfo(res) + ); + } + + async getVariable(contract, variable, key = "") { + let parms = {}; + if (validateTypes$4.isStringWithValue(key)) parms.key = key; + + let path = `/contracts/${contract}/${variable}/`; + + const returnValue = (res) => { + try { + if (res.value) return res.value; + } catch (e) {} + return null; + }; + return this.send("GET", path, { parms }, undefined, (res, err) => returnValue(res)).then( + (res) => returnValue(res) + ); + } + + async getContractMethods(contract) { + const getMethods = (res) => { + try { + if (res.methods) return res.methods; + } catch (e) {} + return []; + }; + let path = `/contracts/${contract}/methods`; + return this.send("GET", path, {}, undefined, (res, err) => getMethods(res)).then((res) => + getMethods(res) + ); + } + + async getContractVariables(contract) { + const getVariables = (res) => { + try { + if (res.variables) return res; + } catch (e) {} + return {}; + }; + let path = `/contracts/${contract}/variables`; + return this.send("GET", path, {}, undefined, (res, err) => getVariables(res)).then((res) => + getVariables(res) + ); + } + + async pingServer() { + const getStatus = (res) => { + try { + if (res.status) return true; + } catch (e) {} + return false; + }; + let response = await this.send("GET", "/ping", {}, undefined, (res, err) => getStatus(res)); + return getStatus(response); + } + + async getCurrencyBalance(vk) { + let balanceRes = await this.getVariable("currency", "balances", vk); + if (!balanceRes) return Encoder("bigNumber", 0); + if (balanceRes.__fixed__) return Encoder("bigNumber", balanceRes.__fixed__); + return Encoder("bigNumber", balanceRes.toString()); + } + + async contractExists(contractName) { + const exists = (res) => { + try { + if (res.name) return true; + } catch (e) {} + return false; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => exists(res)).then((res) => + exists(res) + ); + } + + async sendTransaction(data, url = undefined, callback) { + return this.send("POST", "/", JSON.stringify(data), url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } + + async getNonce(sender, callback) { + if (!validateTypes$4.isStringHex(sender)) return `${sender} is not a hex string.`; + let path = `/nonce/${sender}`; + let url = this.host; + return this.send("GET", path, {}, url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, `Unable to get nonce for ${sender} on network ${url}`); + return; + } + return `Unable to get nonce for ${sender} on network ${url}`; + } + res.masternode = url; + if (callback) { + callback(res, undefined); + return; + } else return res; + }); + } + + checkTransaction(hash, callback) { + const parms = { hash }; + return this.send("GET", "/tx", { parms }, undefined, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } +} + +const { validateTypes: validateTypes$3 } = validators; + +class Network { + // Constructor needs an Object with the following information to build Class. + // + // networkInfo: { + // hosts: list of masternode hostname/ip urls, + // type: "testnet", "mainnet" or "custom" + // }, + constructor(networkInfoObj) { + //Reject undefined or missing info + if (!validateTypes$3.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes$3.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); + + this.type = validateTypes$3.isStringWithValue(networkInfoObj.type) + ? networkInfoObj.type.toLowerCase() + : "custom"; + this.events = new EventEmitter(); + this.hosts = this.validateHosts(networkInfoObj.hosts); + this.currencySymbol = validateTypes$3.isStringWithValue(networkInfoObj.currencySymbol) + ? networkInfoObj.currencySymbol + : "TAU"; + this.name = validateTypes$3.isStringWithValue(networkInfoObj.name) + ? networkInfoObj.name + : "lamden network"; + this.lamden = validateTypes$3.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; + this.blockExplorer = validateTypes$3.isStringWithValue(networkInfoObj.blockExplorer) + ? networkInfoObj.blockExplorer + : undefined; + + this.online = false; + try { + this.API = new LamdenMasterNode_API(networkInfoObj); + } catch (e) { + throw new Error(e); + } + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + //Check if the network is online + //Emits boolean as 'online' event + //Also returns status as well as passes status to a callback + async ping(callback = undefined) { + this.online = await this.API.pingServer(); + this.events.emit("online", this.online); + if (validateTypes$3.isFunction(callback)) callback(this.online); + return this.online; + } + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + async getNetworkInfo() { + await this.ping(); + return { + name: this.name, + lamden: this.lamden, + type: this.type, + hosts: this.hosts, + url: this.url, + online: this.online, + }; + } +} + +const { validateTypes: validateTypes$2 } = validators; + +class TransactionBuilder extends Network { + // Constructor needs an Object with the following information to build Class. + // + // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" + // host: masternode webserver hostname/ip, + // type: "testnet", "mainnet" or "mockchain" + // } + // arg[1] (txInfo): { + // uid: [Optional] unique ID for tracking purposes, + // senderVk: public key of the transaction sender, + // contractName: name of lamden smart contract, + // methodName: name of method to call in contractName, + // kwargs: key/values of args to pass to methodName + // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" + // kwargs.amount = 1000 + // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. + // nonce: [Optional] send() will attempt to retrieve this info automatically + // processor [Optional] send() will attempt to retrieve this info automatically + // } + // arg[2] (txData): [Optional] state hydrating data + constructor(networkInfo, txInfo, txData) { + if (validateTypes$2.isSpecificClass(networkInfo, "Network")) super(networkInfo.getNetworkInfo()); + else super(networkInfo); + + //Validate arguments + if (!validateTypes$2.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`); + if (!validateTypes$2.isStringHex(txInfo.senderVk)) + throw new Error(`Sender Public Key Required (Type: Hex String)`); + if (!validateTypes$2.isStringWithValue(txInfo.contractName)) + throw new Error(`Contract Name Required (Type: String)`); + if (!validateTypes$2.isStringWithValue(txInfo.methodName)) + throw new Error(`Method Required (Type: String)`); + if (!validateTypes$2.isInteger(txInfo.stampLimit)) + throw new Error(`Stamps Limit Required (Type: Integer)`); + + //Store variables in self for reference + this.uid = validateTypes$2.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; + this.sender = txInfo.senderVk; + this.contract = txInfo.contractName; + this.method = txInfo.methodName; + this.kwargs = {}; + if (validateTypes$2.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; + this.stampLimit = txInfo.stampLimit; + + //validate and set nonce and processor if user provided them + if (typeof txInfo.nonce !== "undefined") { + if (!validateTypes$2.isInteger(txInfo.nonce)) + throw new Error( + `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given` + ); + this.nonce = txInfo.nonce; + } + if (typeof txInfo.processor !== "undefined") { + if (!validateTypes$2.isStringWithValue(txInfo.processor)) + throw new Error( + `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given` + ); + this.processor = txInfo.processor; + } + + this.signature; + this.transactionSigned = false; + + //Transaction result information + this.nonceResult = {}; + this.txSendResult = { errors: [] }; + this.txBlockResult = {}; + this.txHash; + this.txCheckResult = {}; + this.txCheckAttempts = 0; + this.txCheckLimit = 1; + + //Hydrate other items if passed + if (txData) { + if (txData.uid) this.uid = txData.uid; + if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) + this.txSendResult = txData.txSendResult; + if (validateTypes$2.isObjectWithKeys(txData.nonceResult)) { + this.nonceResult = txData.nonceResult; + if (validateTypes$2.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; + if (validateTypes$2.isStringWithValue(this.nonceResult.processor)) + this.processor = this.nonceResult.processor; + } + if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) { + this.txSendResult = txData.txSendResult; + if (this.txSendResult.hash) this.txHash = this.txSendResult.hash; + } + if (validateTypes$2.isObjectWithKeys(txData.txBlockResult)) + this.txBlockResult = txData.txBlockResult; + if (validateTypes$2.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; + } + //Create Capnp messages and transactionMessages + this.makePayload(); + } + makePayload() { + this.payload = { + contract: this.contract, + function: this.method, + kwargs: this.kwargs, + nonce: this.nonce, + processor: this.processor, + sender: this.sender, + stamps_supplied: this.stampLimit, + }; + this.sortedPayload = this.sortObject(this.payload); + } + makeTransaction() { + this.tx = { + metadata: { + signature: this.signature, + timestamp: parseInt(+new Date() / 1000), + }, + payload: this.sortedPayload.orderedObj, + }; + } + verifySignature() { + //Verify the signature is correct + if (!this.transactionSigned) + throw new Error( + "Transaction has not be been signed. Use the sign() method first." + ); + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + return verify(this.sender, stringArray, this.signature); + } + sign(sk = undefined, userWallet = undefined) { + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + if (userWallet) this.signature = userWallet.sign(stringArray); + else this.signature = sign(sk, stringArray); + this.transactionSigned = true; + } + sortObject(object) { + const processObj = (obj) => { + const getType = (value) => { + return Object.prototype.toString.call(value); + }; + const isArray = (value) => { + if (getType(value) === "[object Array]") return true; + return false; + }; + const isObject = (value) => { + if (getType(value) === "[object Object]") return true; + return false; + }; + + const sortObjKeys = (unsorted) => { + const sorted = {}; + Object.keys(unsorted) + .sort() + .forEach((key) => (sorted[key] = unsorted[key])); + return sorted; + }; + + const formatKeys = (unformatted) => { + Object.keys(unformatted).forEach((key) => { + if (isArray(unformatted[key])) + unformatted[key] = unformatted[key].map((item) => { + if (isObject(item)) return formatKeys(item); + return item; + }); + if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]); + }); + return sortObjKeys(unformatted); + }; + + if (!isObject(obj)) throw new TypeError("Not a valid Object"); + try { + obj = JSON.parse(JSON.stringify(obj)); + } catch (e) { + throw new TypeError("Not a valid JSON Object"); + } + return formatKeys(obj); + }; + const orderedObj = processObj(object); + return { + orderedObj, + json: JSON.stringify(orderedObj), + }; + } + async getNonce(callback = undefined) { + let timestamp = new Date().toUTCString(); + this.nonceResult = await this.API.getNonce(this.sender); + if (typeof this.nonceResult.nonce === "undefined") { + throw new Error(this.nonceResult); + } + this.nonceResult.timestamp = timestamp; + this.nonce = this.nonceResult.nonce; + this.processor = this.nonceResult.processor; + this.nonceMasternode = this.nonceResult.masternode; + //Create payload object + this.makePayload(); + + if (!callback) return this.nonceResult; + return callback(this.nonceResult); + } + async send(sk = undefined, masternode = undefined, callback = undefined) { + //Error if transaction is not signed and no sk provided to the send method to sign it before sending + if (!validateTypes$2.isStringWithValue(sk) && !this.transactionSigned) { + throw new Error( + `Transation Not Signed: Private key needed or call sign() first` + ); + } + + let timestamp = new Date().toUTCString(); + + try { + //If the nonce isn't set attempt to get it + if (isNaN(this.nonce) || !validateTypes$2.isStringWithValue(this.processor)) + await this.getNonce(); + //if the sk is provided then sign the transaction + if (validateTypes$2.isStringWithValue(sk)) this.sign(sk); + //Serialize transaction + this.makeTransaction(); + //Send transaction to the masternode + let masternodeURL = masternode; + if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode; + let response = await this.API.sendTransaction(this.tx, masternodeURL); + //Set error if txSendResult doesn't exist + if (!response || validateTypes$2.isStringWithValue(response)) { + this.txSendResult.errors = [response || "Unknown Transaction Error"]; + } else { + if (response.error) this.txSendResult.errors = [response.error]; + else this.txSendResult = response; + } + } catch (e) { + this.txSendResult.errors = [e.message]; + } + this.txSendResult.timestamp = timestamp; + return this.handleMasterNodeResponse(this.txSendResult, callback); + } + checkForTransactionResult(callback = undefined) { + return new Promise((resolve) => { + let timerId = setTimeout( + async function checkTx() { + this.txCheckAttempts = this.txCheckAttempts + 1; + let res = await this.API.checkTransaction(this.txHash); + let checkAgain = false; + let timestamp = new Date().toUTCString(); + if (typeof res === "string" || !res) { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + res, + ]; + } + } else { + if (res.error) { + if (res.error === "Transaction not found.") { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + res.error, + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + ]; + } + } else { + this.txCheckResult.errors = [res.error]; + } + } else { + this.txCheckResult = res; + } + } + if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); + else { + if (validateTypes$2.isNumber(this.txCheckResult.status)) { + if (this.txCheckResult.status > 0) { + if (!validateTypes$2.isArray(this.txCheckResult.errors)) + this.txCheckResult.errors = []; + this.txCheckResult.errors.push("This transaction returned a non-zero status code"); + } + } + this.txCheckResult.timestamp = timestamp; + clearTimeout(timerId); + resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)); + } + }.bind(this), + 1000 + ); + }); + } + handleMasterNodeResponse(result, callback = undefined) { + //Check to see if this is a successful transacation submission + if ( + validateTypes$2.isStringWithValue(result.hash) && + validateTypes$2.isStringWithValue(result.success) + ) { + this.txHash = result.hash; + this.setPendingBlockInfo(); + } else { + this.setBlockResultInfo(result); + this.txBlockResult = result; + } + this.events.emit("response", result, this.resultInfo.subtitle); + if (validateTypes$2.isFunction(callback)) callback(result); + return result; + } + setPendingBlockInfo() { + this.resultInfo = { + title: "Transaction Pending", + subtitle: "Your transaction was submitted and is being processed", + message: `Tx Hash: ${this.txHash}`, + type: "success", + }; + return this.resultInfo; + } + setBlockResultInfo(result) { + let erroredTx = false; + let errorText = `returned an error and `; + let statusCode = validateTypes$2.isNumber(result.status) ? result.status : undefined; + let stamps = result.stampsUsed || result.stamps_used || 0; + let message = ""; + if (validateTypes$2.isArrayWithValues(result.errors)) { + erroredTx = true; + message = `This transaction returned ${result.errors.length} errors.`; + if (result.result) { + if (result.result.includes("AssertionError")) result.errors.push(result.result); + } + } + if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `; + + this.resultInfo = { + title: `Transaction ${erroredTx ? "Failed" : "Successful"}`, + subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ""}used ${stamps} stamps`, + message, + type: `${erroredTx ? "error" : "success"}`, + errorInfo: erroredTx ? result.errors : undefined, + returnResult: result.result || "", + stampsUsed: stamps, + statusCode, + }; + return this.resultInfo; + } + getResultInfo() { + return this.resultInfo; + } + getTxInfo() { + return { + senderVk: this.sender, + contractName: this.contract, + methodName: this.method, + kwargs: this.kwargs, + stampLimit: this.stampLimit, + }; + } + getAllInfo() { + return { + uid: this.uid, + txHash: this.txHash, + signed: this.transactionSigned, + tx: this.tx, + signature: this.signature, + networkInfo: this.getNetworkInfo(), + txInfo: this.getTxInfo(), + txSendResult: this.txSendResult, + txBlockResult: this.txBlockResult, + resultInfo: this.getResultInfo(), + nonceResult: this.nonceResult, + }; + } +} + +const { validateTypes: validateTypes$1 } = validators; + +class TransactionBatcher extends Network { + constructor(networkInfo) { + if (validateTypes$1.isSpecificClass(networkInfo, 'Network')) + super(networkInfo.getNetworkInfo()); + else super(networkInfo); + + this.txBatches = {}; + this.overflow = []; + this.nonceResults = {}; + this.running = false; + } + addTransaction(txInfo){ + if (this.running) { + this.overflow.push(txInfo); + return + } + this.validateTransactionInfo(txInfo); + if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []; + this.txBatches[txInfo.senderVk].push(txInfo); + } + addTransactionList(txList){ + txList.forEach(txInfo => this.addTransaction(txInfo)); + } + processOverflow(){ + const overflow = this.overflow; + this.overflow = []; + overflow.forEach(txInfo => this.addTransaction(txInfo)); + } + hasTransactions(){ + let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length); + test.filter(f => f === 0); + if (test.length > 0 ) return true + return false + } + validateTransactionInfo(txInfo){ + try{ + new TransactionBuilder(txInfo); + }catch(e){ + return false + } + return true + } + async getStartingNonce(senderVk, callback = undefined){ + let timestamp = new Date().toUTCString(); + let response = await this.API.getNonce(senderVk); + if (typeof response.nonce === 'undefined'){ + throw new Error(response) + } + response.timestamp = timestamp; + this.nonceResults[senderVk] = response; + + if (callback) callback(response); + return response; + } + async sendAllBatches(keyDict){ + if (this.running) return + let sentTransactions = []; + this.running = true; + + await Promise.all(Object.keys(this.txBatches).map((senderVk) => { + const senderBatch = this.txBatches[senderVk].splice(0,15); + if (senderBatch.length <= 15) delete this.txBatches[senderVk]; + + return new Promise(async (resolver) => { + if (senderBatch.length === 0 ) resolver(); + + if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`) + let nonceResponse = await this.getStartingNonce(senderVk); + let txBatch = this.setBatchNonces(nonceResponse, senderBatch); + this.signBatch(txBatch, keyDict[senderVk]); + this.sendBatch(txBatch).then(sentList => { + sentTransactions = [...sentTransactions, ...sentList]; + resolver(); + }); + }) + })); + + try{ + return Promise.all(sentTransactions) + }catch (e){} + finally{ + this.running = false; + this.processOverflow(); + } + } + setBatchNonces(nonceResult, txList){ + return txList.map((txInfo, index) => { + txInfo.nonce = nonceResult.nonce + index; + txInfo.processor = nonceResult.processor; + return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo) + }).sort((a, b) => a.nonce - b.nonce) + } + signBatch(txBatch, key){ + txBatch.forEach(txBuilder => txBuilder.sign(key)); + } + sendBatch(txBatch){ + let resolvedTransactions = []; + return new Promise(resolver => { + const resolve = (index) => { + if ((index + 1) === txBatch.length) resolver(resolvedTransactions); + }; + txBatch.forEach((txBuilder, index) => { + const delayedSend = () => { + resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder}); + resolve(index); + }; + setTimeout(delayedSend, 1200 * index); + }); + }) + } +} + +const { validateTypes, assertTypes } = validators; + +class Keystore { + /** + * Lamden Keystores + * + * This Class will create a lamden keystore instance + * + * @param {Object|undefined} arg constructor argument + * @param {String|undefined} arg.key Create an instance and load it with one private key + * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys + * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data + * @return {Keystore} + */ + constructor(arg = undefined) { + this.KEYSTORE_VERSION = "1.0"; + this.password = null; + this.encryptedData = null; + + this.keyList = (() => { + let keyList = []; + let outerClass = this; + let wallets = []; + + const addKey = (key) => { + keyList.push(key); + createWallets(); + }; + const deleteKey = (position) => { + keyList.splice(position, 1); + createWallets(); + }; + const clearKeys = () => { + keyList = []; + createWallets(); + }; + const numOfKeys = () => keyList.length; + const createWallets = () => { + wallets = []; + keyList.forEach(keyInfo => { + let newWallet = create_wallet({sk: keyInfo.sk, keepPrivate: true}); + newWallet = {...newWallet, ...keyInfo}; + delete newWallet.sk; + wallets.push(newWallet); + }); + }; + const createKeystore = (password, hint = undefined) => { + return JSON.stringify({ + data: encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}), + w: !hint ? "" : encryptStrHash('n1ahcKc0lb', hint), + }); + }; + const decryptKeystore = (password, data) => { + let decrypted = decryptObject(password, data); + if (decrypted) { + assertTypes.isArray(decrypted.keyList); + decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk)); + decrypted.keyList.forEach(keyInfo => addKey(keyInfo)); + outerClass.version = decrypted.version; + } else { + throw new Error("Incorrect Keystore Password.") + } + }; + + return { + getWallets: () => wallets, + getWallet: (vk) => wallets.find(wallet => wallet.vk === vk), + addKey, + clearKeys, + numOfKeys, + deleteKey, + createKeystore, + decryptKeystore + } + })(); + + if (arg){ + if (arg.key) this.addKey(arg.key); + if (arg.keyList) this.addKeys(arg.keyList); + if (arg.keystoreData) this.addKeystoreData(arg.keystoreData); + } + } + /** + * Add a list of keys to add to the keystore + * @param {Array.} keyList An array of 32 character long Lamden private keys + */ + addKeys(keyList){ + assertTypes.isArray(keyList); + keyList.forEach(key => this.addKey(key)); + } + /** + * Add a key to the keystore + * @param {string} key A 32 character long Lamden private key + */ + addKey(keyInfo){ + assertTypes.isObjectWithKeys(keyInfo); + assertTypes.isStringWithValue(keyInfo.sk); + if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk; + this.keyList.addKey(keyInfo); + } + /** + * Load the keystore with the data from an existing keystore + * @param {string} keystoreData The contents of an existing encrypted keystore file + */ + addKeystoreData(keystoreData){ + if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); + if(this.validateKeyStore(keystoreData)){ + this.encryptedData = keystoreData; + } + } + /** + * Returns the password hint in a keystore file + * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor + */ + getPasswordHint(keystoreData = undefined){ + if (!this.encryptedData && !keystoreData) throw new Error("No keystore data found.") + + if (keystoreData) { + if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); + } + else keystoreData = this.encryptedData; + + if (keystoreData.w) return decryptStrHash('n1ahcKc0lb', keystoreData.w); + else return "" + } + /** + * Removes a specific key from the keyList + * @param {Number} keyIndex The index of the key you want to remove + */ + deleteKey(keyIndex){ + assertTypes.isInteger(keyIndex); + if (this.keyList.numOfKeys() === 0) return + if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error("Key index out of range.") + this.keyList.deleteKey(keyIndex); + } + /** + * Clears all keys from the keystore + */ + clearKeys(){ + this.keyList.clearKeys(); + } + /** + * Clears all keys from the keystore + * @return {Array.} An array of wallet objects + */ + get wallets() { + return this.keyList.getWallets() + } + /** + * Load the keystore with the data from an existing keystore + * @param {String} vk A 32 character long Lamden public key + * @return {Object} A wallet object + */ + getWallet(vk) { + return this.keyList.getWallet(vk) + } + /** + * Used to validate that a keystore is the proper Lamden Format (does not decrypt data) + * @param {String} keystoreData The contents of an existing encrypted keystore file + * @return {Boolean} valid + * @throws {Error} This is not a valid keystore file. + */ + validateKeyStore(keystoreData){ + assertTypes.isObjectWithKeys(keystoreData); + try{ + let encryptedData = JSON.parse(keystoreData.data); + if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){ + throw new Error("This is not a valid keystore file.") + } + } catch (e) { + throw new Error("This is not a valid keystore file.") + } + return true; + } + /** + * Create a Keystore text string from the keys contained in the Keystore instance + * @param {String} password A password to encrypt the data + * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password. + * @return {String} A JSON stringified object containing the encrypted data + * @throws {Error} Any errors from the encyption process + */ + createKeystore(password, hint = undefined) { + assertTypes.isStringWithValue(password); + if (hint){ + assertTypes.isStringWithValue(hint); + } + return this.keyList.createKeystore(password, hint) + } + /** + * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore. + * @param {String} password A password to encrypt the data + * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor. + * @throws {Error} Any errors from the encyption process + */ + decryptKeystore(password, keystoreData = undefined){ + if (keystoreData) this.addKeystoreData(keystoreData); + if (!this.encryptedData) throw new Error ("No keystoreData to decrypt.") + try{ + this.keyList.decryptKeystore(password, this.encryptedData.data); + }catch (e){ + throw new Error("Incorrect Keystore Password.") + } + } +} + +globalThis.Buffer = buffer.Buffer; + +var index = { + TransactionBuilder, + TransactionBatcher, + Masternode_API: LamdenMasterNode_API, + Network, + wallet, + Keystore, + Encoder, + utils, +}; + +module.exports = index; +//# sourceMappingURL=lamden.js.map diff --git a/dist/cjs/lamden.js.map b/dist/cjs/lamden.js.map new file mode 100644 index 0000000..e247371 --- /dev/null +++ b/dist/cjs/lamden.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lamden.js","sources":["../../node_modules/types-validate-assert/dist/index.js","../../node_modules/node-cryptojs-aes/lib/core.js","../../node_modules/node-cryptojs-aes/lib/enc-base64.js","../../node_modules/node-cryptojs-aes/lib/md5.js","../../node_modules/node-cryptojs-aes/lib/evpkdf.js","../../node_modules/node-cryptojs-aes/lib/cipher-core.js","../../node_modules/node-cryptojs-aes/lib/aes.js","../../node_modules/node-cryptojs-aes/lib/jsonformatter.js","../../node_modules/node-cryptojs-aes/cryptojs.js","../../src/js/helpers.js","../../src/js/wallet.js","../../src/js/eventEmitter.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/bignumber.js/bignumber.mjs","../../src/js/encoder.js","../../src/js/masternode-api.js","../../src/js/network.js","../../src/js/transactionBuilder.js","../../src/js/transactionBatcher.js","../../src/js/keystore.js","../../src/index.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('index', ['exports'], factory) :\n (global = global || self, factory(global.index = {}));\n}(this, (function (exports) { 'use strict';\n\n class ValidateTypes {\n constructor() {}\n\n getType(value) {\n return Object.prototype.toString.call(value);\n }\n\n getClassName(value) {\n try {\n return value.constructor.name;\n } catch (e) {}\n\n return this.getType(value);\n } //Validation functions\n\n\n isObject(value) {\n if (this.getType(value) === \"[object Object]\") return true;\n return false;\n }\n\n isFunction(value) {\n if (this.getType(value) === \"[object Function]\") return true;\n return false;\n }\n\n isString(value) {\n if (this.getType(value) === \"[object String]\") return true;\n return false;\n }\n\n isBoolean(value) {\n if (this.getType(value) === \"[object Boolean]\") return true;\n return false;\n }\n\n isArray(value) {\n if (this.getType(value) === \"[object Array]\") return true;\n return false;\n }\n\n isNumber(value) {\n if (this.getType(value) === \"[object Number]\") return true;\n return false;\n }\n\n isInteger(value) {\n if (this.getType(value) === \"[object Number]\" && Number.isInteger(value)) return true;\n return false;\n }\n\n isRegEx(value) {\n if (this.getType(value) === \"[object RegExp]\") return true;\n return false;\n }\n\n isStringHex(value) {\n if (!this.isStringWithValue(value)) return false;\n let hexRegEx = /([0-9]|[a-f])/gim;\n return (value.match(hexRegEx) || []).length === value.length;\n }\n\n hasKeys(value, keys) {\n if (keys.map(key => key in value).includes(false)) return false;\n return true;\n }\n\n isStringWithValue(value) {\n if (this.isString(value) && value !== '') return true;\n return false;\n }\n\n isObjectWithKeys(value) {\n if (this.isObject(value) && Object.keys(value).length > 0) return true;\n return false;\n }\n\n isArrayWithValues(value) {\n if (this.isArray(value) && value.length > 0) return true;\n return false;\n }\n\n isSpecificClass(value, className) {\n if (!this.isObject(value)) return false;\n if (this.getClassName(value) !== className) return false;\n return true;\n }\n\n }\n\n class AssertTypes {\n constructor() {\n this.validate = new ValidateTypes();\n } //Validation functions\n\n\n isObject(value) {\n if (!this.validate.isObject(value)) {\n throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isFunction(value) {\n if (!this.validate.isFunction(value)) {\n throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isString(value) {\n if (!this.validate.isString(value)) {\n throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isBoolean(value) {\n if (!this.validate.isBoolean(value)) {\n throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isArray(value) {\n if (!this.validate.isArray(value)) {\n throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isNumber(value) {\n if (!this.validate.isNumber(value)) {\n throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isInteger(value) {\n if (!this.validate.isInteger(value)) {\n throw new TypeError(`Expected \"${value}\" to be an integer but got non-integer value`);\n }\n\n return true;\n }\n\n isRegEx(value) {\n if (!this.validate.isRegEx(value)) {\n throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isStringHex(value) {\n if (!this.validate.isStringHex(value)) {\n throw new TypeError(`Expected \"${value}\" to be hex but got non-hex value`);\n }\n\n return true;\n }\n\n hasKeys(value, keys) {\n if (!this.validate.hasKeys(value, keys)) {\n throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`);\n }\n\n return true;\n }\n\n isStringWithValue(value) {\n if (!this.validate.isStringWithValue(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object String] and not empty`);\n }\n\n return true;\n }\n\n isObjectWithKeys(value) {\n if (!this.validate.isObjectWithKeys(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Object] and have keys`);\n }\n\n return true;\n }\n\n isArrayWithValues(value) {\n if (!this.validate.isArrayWithValues(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Array] and not empty`);\n }\n\n return true;\n }\n\n isSpecificClass(value, className) {\n if (!this.validate.isSpecificClass(value, className)) {\n throw new TypeError(`Expected Object Class to be \"${className}\" but got ${this.validate.getClassName(value)}`);\n }\n\n return true;\n }\n\n }\n\n const validateTypes = new ValidateTypes();\n const assertTypes = new AssertTypes();\n\n exports.assertTypes = assertTypes;\n exports.validateTypes = validateTypes;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * CryptoJS core components.\r\n */\r\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n /**\r\n * CryptoJS namespace.\r\n */\r\n var C = {};\r\n\r\n /**\r\n * Library namespace.\r\n */\r\n var C_lib = C.lib = {};\r\n\r\n /**\r\n * Base object for prototypal inheritance.\r\n */\r\n var Base = C_lib.Base = (function () {\r\n function F() {}\r\n\r\n return {\r\n /**\r\n * Creates a new object that inherits from this object.\r\n *\r\n * @param {Object} overrides Properties to copy into the new object.\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * field: 'value',\r\n *\r\n * method: function () {\r\n * }\r\n * });\r\n */\r\n extend: function (overrides) {\r\n // Spawn\r\n F.prototype = this;\r\n var subtype = new F();\r\n\r\n // Augment\r\n if (overrides) {\r\n subtype.mixIn(overrides);\r\n }\r\n\r\n // Create default initializer\r\n if (!subtype.hasOwnProperty('init')) {\r\n subtype.init = function () {\r\n subtype.$super.init.apply(this, arguments);\r\n };\r\n }\r\n\r\n // Initializer's prototype is the subtype object\r\n subtype.init.prototype = subtype;\r\n\r\n // Reference supertype\r\n subtype.$super = this;\r\n\r\n return subtype;\r\n },\r\n\r\n /**\r\n * Extends this object and runs the init method.\r\n * Arguments to create() will be passed to init().\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var instance = MyType.create();\r\n */\r\n create: function () {\r\n var instance = this.extend();\r\n instance.init.apply(instance, arguments);\r\n\r\n return instance;\r\n },\r\n\r\n /**\r\n * Initializes a newly created object.\r\n * Override this method to add some logic when your objects are created.\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * init: function () {\r\n * // ...\r\n * }\r\n * });\r\n */\r\n init: function () {\r\n },\r\n\r\n /**\r\n * Copies properties into this object.\r\n *\r\n * @param {Object} properties The properties to mix in.\r\n *\r\n * @example\r\n *\r\n * MyType.mixIn({\r\n * field: 'value'\r\n * });\r\n */\r\n mixIn: function (properties) {\r\n for (var propertyName in properties) {\r\n if (properties.hasOwnProperty(propertyName)) {\r\n this[propertyName] = properties[propertyName];\r\n }\r\n }\r\n\r\n // IE won't copy toString using the loop above\r\n if (properties.hasOwnProperty('toString')) {\r\n this.toString = properties.toString;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = instance.clone();\r\n */\r\n clone: function () {\r\n return this.init.prototype.extend(this);\r\n }\r\n };\r\n }());\r\n\r\n /**\r\n * An array of 32-bit words.\r\n *\r\n * @property {Array} words The array of 32-bit words.\r\n * @property {number} sigBytes The number of significant bytes in this word array.\r\n */\r\n var WordArray = C_lib.WordArray = Base.extend({\r\n /**\r\n * Initializes a newly created word array.\r\n *\r\n * @param {Array} words (Optional) An array of 32-bit words.\r\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.create();\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n */\r\n init: function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes != undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 4;\r\n }\r\n },\r\n\r\n /**\r\n * Converts this word array to a string.\r\n *\r\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n *\r\n * @return {string} The stringified word array.\r\n *\r\n * @example\r\n *\r\n * var string = wordArray + '';\r\n * var string = wordArray.toString();\r\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n */\r\n toString: function (encoder) {\r\n return (encoder || Hex).stringify(this);\r\n },\r\n\r\n /**\r\n * Concatenates a word array to this word array.\r\n *\r\n * @param {WordArray} wordArray The word array to append.\r\n *\r\n * @return {WordArray} This word array.\r\n *\r\n * @example\r\n *\r\n * wordArray1.concat(wordArray2);\r\n */\r\n concat: function (wordArray) {\r\n // Shortcuts\r\n var thisWords = this.words;\r\n var thatWords = wordArray.words;\r\n var thisSigBytes = this.sigBytes;\r\n var thatSigBytes = wordArray.sigBytes;\r\n\r\n // Clamp excess bits\r\n this.clamp();\r\n\r\n // Concat\r\n if (thisSigBytes % 4) {\r\n // Copy one byte at a time\r\n for (var i = 0; i < thatSigBytes; i++) {\r\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n }\r\n } else if (thatWords.length > 0xffff) {\r\n // Copy one word at a time\r\n for (var i = 0; i < thatSigBytes; i += 4) {\r\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n }\r\n } else {\r\n // Copy all words at once\r\n thisWords.push.apply(thisWords, thatWords);\r\n }\r\n this.sigBytes += thatSigBytes;\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Removes insignificant bits.\r\n *\r\n * @example\r\n *\r\n * wordArray.clamp();\r\n */\r\n clamp: function () {\r\n // Shortcuts\r\n var words = this.words;\r\n var sigBytes = this.sigBytes;\r\n\r\n // Clamp\r\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n words.length = Math.ceil(sigBytes / 4);\r\n },\r\n\r\n /**\r\n * Creates a copy of this word array.\r\n *\r\n * @return {WordArray} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = wordArray.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone.words = this.words.slice(0);\r\n\r\n return clone;\r\n },\r\n\r\n /**\r\n * Creates a word array filled with random bytes.\r\n *\r\n * @param {number} nBytes The number of random bytes to generate.\r\n *\r\n * @return {WordArray} The random word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n */\r\n random: function (nBytes) {\r\n var words = [];\r\n for (var i = 0; i < nBytes; i += 4) {\r\n words.push((Math.random() * 0x100000000) | 0);\r\n }\r\n\r\n return new WordArray.init(words, nBytes);\r\n }\r\n });\r\n\r\n /**\r\n * Encoder namespace.\r\n */\r\n var C_enc = C.enc = {};\r\n\r\n /**\r\n * Hex encoding strategy.\r\n */\r\n var Hex = C_enc.Hex = {\r\n /**\r\n * Converts a word array to a hex string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The hex string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var hexChars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n hexChars.push((bite >>> 4).toString(16));\r\n hexChars.push((bite & 0x0f).toString(16));\r\n }\r\n\r\n return hexChars.join('');\r\n },\r\n\r\n /**\r\n * Converts a hex string to a word array.\r\n *\r\n * @param {string} hexStr The hex string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n */\r\n parse: function (hexStr) {\r\n // Shortcut\r\n var hexStrLength = hexStr.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < hexStrLength; i += 2) {\r\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n }\r\n\r\n return new WordArray.init(words, hexStrLength / 2);\r\n }\r\n };\r\n\r\n /**\r\n * Latin1 encoding strategy.\r\n */\r\n var Latin1 = C_enc.Latin1 = {\r\n /**\r\n * Converts a word array to a Latin1 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The Latin1 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var latin1Chars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n },\r\n\r\n /**\r\n * Converts a Latin1 string to a word array.\r\n *\r\n * @param {string} latin1Str The Latin1 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n */\r\n parse: function (latin1Str) {\r\n // Shortcut\r\n var latin1StrLength = latin1Str.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < latin1StrLength; i++) {\r\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n }\r\n\r\n return new WordArray.init(words, latin1StrLength);\r\n }\r\n };\r\n\r\n /**\r\n * UTF-8 encoding strategy.\r\n */\r\n var Utf8 = C_enc.Utf8 = {\r\n /**\r\n * Converts a word array to a UTF-8 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The UTF-8 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n try {\r\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n },\r\n\r\n /**\r\n * Converts a UTF-8 string to a word array.\r\n *\r\n * @param {string} utf8Str The UTF-8 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n */\r\n parse: function (utf8Str) {\r\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n }\r\n };\r\n\r\n /**\r\n * Abstract buffered block algorithm template.\r\n *\r\n * The property blockSize must be implemented in a concrete subtype.\r\n *\r\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n */\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n /**\r\n * Resets this block algorithm's data buffer to its initial state.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm.reset();\r\n */\r\n reset: function () {\r\n // Initial values\r\n this._data = new WordArray.init();\r\n this._nDataBytes = 0;\r\n },\r\n\r\n /**\r\n * Adds new data to this block algorithm's buffer.\r\n *\r\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm._append('data');\r\n * bufferedBlockAlgorithm._append(wordArray);\r\n */\r\n _append: function (data) {\r\n // Convert string to WordArray, else assume WordArray already\r\n if (typeof data == 'string') {\r\n data = Utf8.parse(data);\r\n }\r\n\r\n // Append\r\n this._data.concat(data);\r\n this._nDataBytes += data.sigBytes;\r\n },\r\n\r\n /**\r\n * Processes available data blocks.\r\n *\r\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n *\r\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n *\r\n * @return {WordArray} The processed data.\r\n *\r\n * @example\r\n *\r\n * var processedData = bufferedBlockAlgorithm._process();\r\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n */\r\n _process: function (doFlush) {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n var dataSigBytes = data.sigBytes;\r\n var blockSize = this.blockSize;\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count blocks ready\r\n var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n if (doFlush) {\r\n // Round up to include partial blocks\r\n nBlocksReady = Math.ceil(nBlocksReady);\r\n } else {\r\n // Round down to include only full blocks,\r\n // less the number of blocks that must remain in the buffer\r\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n }\r\n\r\n // Count words ready\r\n var nWordsReady = nBlocksReady * blockSize;\r\n\r\n // Count bytes ready\r\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n // Process blocks\r\n if (nWordsReady) {\r\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n // Perform concrete-algorithm logic\r\n this._doProcessBlock(dataWords, offset);\r\n }\r\n\r\n // Remove processed words\r\n var processedWords = dataWords.splice(0, nWordsReady);\r\n data.sigBytes -= nBytesReady;\r\n }\r\n\r\n // Return processed words\r\n return new WordArray.init(processedWords, nBytesReady);\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = bufferedBlockAlgorithm.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone._data = this._data.clone();\r\n\r\n return clone;\r\n },\r\n\r\n _minBufferSize: 0\r\n });\r\n\r\n /**\r\n * Abstract hasher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n */\r\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Initializes a newly created hasher.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n *\r\n * @example\r\n *\r\n * var hasher = CryptoJS.algo.SHA256.create();\r\n */\r\n init: function (cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this hasher to its initial state.\r\n *\r\n * @example\r\n *\r\n * hasher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-hasher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Updates this hasher with a message.\r\n *\r\n * @param {WordArray|string} messageUpdate The message to append.\r\n *\r\n * @return {Hasher} This hasher.\r\n *\r\n * @example\r\n *\r\n * hasher.update('message');\r\n * hasher.update(wordArray);\r\n */\r\n update: function (messageUpdate) {\r\n // Append\r\n this._append(messageUpdate);\r\n\r\n // Update the hash\r\n this._process();\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Finalizes the hash computation.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @example\r\n *\r\n * var hash = hasher.finalize();\r\n * var hash = hasher.finalize('message');\r\n * var hash = hasher.finalize(wordArray);\r\n */\r\n finalize: function (messageUpdate) {\r\n // Final message update\r\n if (messageUpdate) {\r\n this._append(messageUpdate);\r\n }\r\n\r\n // Perform concrete-hasher logic\r\n var hash = this._doFinalize();\r\n\r\n return hash;\r\n },\r\n\r\n blockSize: 512/32,\r\n\r\n /**\r\n * Creates a shortcut function to a hasher's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to create a helper for.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHelper: function (hasher) {\r\n return function (message, cfg) {\r\n return new hasher.init(cfg).finalize(message);\r\n };\r\n },\r\n\r\n /**\r\n * Creates a shortcut function to the HMAC's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHmacHelper: function (hasher) {\r\n return function (message, key) {\r\n return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n };\r\n }\r\n });\r\n\r\n /**\r\n * Algorithm namespace.\r\n */\r\n var C_algo = C.algo = {};\r\n\r\n return C;\r\n}(Math));\r\n\r\nexports.CryptoJS = CryptoJS;\r\n","var CryptoJS = require('./core').CryptoJS;\n\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n}());\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (Math) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var WordArray = C_lib.WordArray;\r\n var Hasher = C_lib.Hasher;\r\n var C_algo = C.algo;\r\n\r\n // Constants table\r\n var T = [];\r\n\r\n // Compute constants\r\n (function () {\r\n for (var i = 0; i < 64; i++) {\r\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n }\r\n }());\r\n\r\n /**\r\n * MD5 hash algorithm.\r\n */\r\n var MD5 = C_algo.MD5 = Hasher.extend({\r\n _doReset: function () {\r\n this._hash = new WordArray.init([\r\n 0x67452301, 0xefcdab89,\r\n 0x98badcfe, 0x10325476\r\n ]);\r\n },\r\n\r\n _doProcessBlock: function (M, offset) {\r\n // Swap endian\r\n for (var i = 0; i < 16; i++) {\r\n // Shortcuts\r\n var offset_i = offset + i;\r\n var M_offset_i = M[offset_i];\r\n\r\n M[offset_i] = (\r\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n );\r\n }\r\n\r\n // Shortcuts\r\n var H = this._hash.words;\r\n\r\n var M_offset_0 = M[offset + 0];\r\n var M_offset_1 = M[offset + 1];\r\n var M_offset_2 = M[offset + 2];\r\n var M_offset_3 = M[offset + 3];\r\n var M_offset_4 = M[offset + 4];\r\n var M_offset_5 = M[offset + 5];\r\n var M_offset_6 = M[offset + 6];\r\n var M_offset_7 = M[offset + 7];\r\n var M_offset_8 = M[offset + 8];\r\n var M_offset_9 = M[offset + 9];\r\n var M_offset_10 = M[offset + 10];\r\n var M_offset_11 = M[offset + 11];\r\n var M_offset_12 = M[offset + 12];\r\n var M_offset_13 = M[offset + 13];\r\n var M_offset_14 = M[offset + 14];\r\n var M_offset_15 = M[offset + 15];\r\n\r\n // Working varialbes\r\n var a = H[0];\r\n var b = H[1];\r\n var c = H[2];\r\n var d = H[3];\r\n\r\n // Computation\r\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n // Intermediate hash value\r\n H[0] = (H[0] + a) | 0;\r\n H[1] = (H[1] + b) | 0;\r\n H[2] = (H[2] + c) | 0;\r\n H[3] = (H[3] + d) | 0;\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n\r\n var nBitsTotal = this._nDataBytes * 8;\r\n var nBitsLeft = data.sigBytes * 8;\r\n\r\n // Add padding\r\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n var nBitsTotalL = nBitsTotal;\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n );\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n );\r\n\r\n data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n // Hash final blocks\r\n this._process();\r\n\r\n // Shortcuts\r\n var hash = this._hash;\r\n var H = hash.words;\r\n\r\n // Swap endian\r\n for (var i = 0; i < 4; i++) {\r\n // Shortcut\r\n var H_i = H[i];\r\n\r\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n }\r\n\r\n // Return final computed hash\r\n return hash;\r\n },\r\n\r\n clone: function () {\r\n var clone = Hasher.clone.call(this);\r\n clone._hash = this._hash.clone();\r\n\r\n return clone;\r\n }\r\n });\r\n\r\n function FF(a, b, c, d, x, s, t) {\r\n var n = a + ((b & c) | (~b & d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function GG(a, b, c, d, x, s, t) {\r\n var n = a + ((b & d) | (c & ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function HH(a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function II(a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n /**\r\n * Shortcut function to the hasher's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hash = CryptoJS.MD5('message');\r\n * var hash = CryptoJS.MD5(wordArray);\r\n */\r\n C.MD5 = Hasher._createHelper(MD5);\r\n\r\n /**\r\n * Shortcut function to the HMAC's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n * @param {WordArray|string} key The secret key.\r\n *\r\n * @return {WordArray} The HMAC.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hmac = CryptoJS.HmacMD5(message, key);\r\n */\r\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n}(Math));\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var C_algo = C.algo;\r\n var MD5 = C_algo.MD5;\r\n\r\n /**\r\n * This key derivation function is meant to conform with EVP_BytesToKey.\r\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n */\r\n var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n * @property {number} iterations The number of iterations to perform. Default: 1\r\n */\r\n cfg: Base.extend({\r\n keySize: 128/32,\r\n hasher: MD5,\r\n iterations: 1\r\n }),\r\n\r\n /**\r\n * Initializes a newly created key derivation function.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n *\r\n * @example\r\n *\r\n * var kdf = CryptoJS.algo.EvpKDF.create();\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n */\r\n init: function (cfg) {\r\n this.cfg = this.cfg.extend(cfg);\r\n },\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @example\r\n *\r\n * var key = kdf.compute(password, salt);\r\n */\r\n compute: function (password, salt) {\r\n // Shortcut\r\n var cfg = this.cfg;\r\n\r\n // Init hasher\r\n var hasher = cfg.hasher.create();\r\n\r\n // Initial values\r\n var derivedKey = WordArray.create();\r\n\r\n // Shortcuts\r\n var derivedKeyWords = derivedKey.words;\r\n var keySize = cfg.keySize;\r\n var iterations = cfg.iterations;\r\n\r\n // Generate key\r\n while (derivedKeyWords.length < keySize) {\r\n if (block) {\r\n hasher.update(block);\r\n }\r\n var block = hasher.update(password).finalize(salt);\r\n hasher.reset();\r\n\r\n // Iterations\r\n for (var i = 1; i < iterations; i++) {\r\n block = hasher.finalize(block);\r\n hasher.reset();\r\n }\r\n\r\n derivedKey.concat(block);\r\n }\r\n derivedKey.sigBytes = keySize * 4;\r\n\r\n return derivedKey;\r\n }\r\n });\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var key = CryptoJS.EvpKDF(password, salt);\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n */\r\n C.EvpKDF = function (password, salt, cfg) {\r\n return EvpKDF.create(cfg).compute(password, salt);\r\n };\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * Cipher core components.\r\n */\r\nCryptoJS.lib.Cipher || (function (undefined) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n var C_enc = C.enc;\r\n var Utf8 = C_enc.Utf8;\r\n var Base64 = C_enc.Base64;\r\n var C_algo = C.algo;\r\n var EvpKDF = C_algo.EvpKDF;\r\n\r\n /**\r\n * Abstract base cipher template.\r\n *\r\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n */\r\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {WordArray} iv The IV to use for this operation.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Creates this cipher in encryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createEncryptor: function (key, cfg) {\r\n return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Creates this cipher in decryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createDecryptor: function (key, cfg) {\r\n return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Initializes a newly created cipher.\r\n *\r\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n */\r\n init: function (xformMode, key, cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Store transform mode and key\r\n this._xformMode = xformMode;\r\n this._key = key;\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this cipher to its initial state.\r\n *\r\n * @example\r\n *\r\n * cipher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-cipher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Adds data to be encrypted or decrypted.\r\n *\r\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.process('data');\r\n * var encrypted = cipher.process(wordArray);\r\n */\r\n process: function (dataUpdate) {\r\n // Append\r\n this._append(dataUpdate);\r\n\r\n // Process available blocks\r\n return this._process();\r\n },\r\n\r\n /**\r\n * Finalizes the encryption or decryption process.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after final processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.finalize();\r\n * var encrypted = cipher.finalize('data');\r\n * var encrypted = cipher.finalize(wordArray);\r\n */\r\n finalize: function (dataUpdate) {\r\n // Final data update\r\n if (dataUpdate) {\r\n this._append(dataUpdate);\r\n }\r\n\r\n // Perform concrete-cipher logic\r\n var finalProcessedData = this._doFinalize();\r\n\r\n return finalProcessedData;\r\n },\r\n\r\n keySize: 128/32,\r\n\r\n ivSize: 128/32,\r\n\r\n _ENC_XFORM_MODE: 1,\r\n\r\n _DEC_XFORM_MODE: 2,\r\n\r\n /**\r\n * Creates shortcut functions to a cipher's object interface.\r\n *\r\n * @param {Cipher} cipher The cipher to create a helper for.\r\n *\r\n * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n */\r\n _createHelper: (function () {\r\n function selectCipherStrategy(key) {\r\n if (typeof key == 'string') {\r\n return PasswordBasedCipher;\r\n } else {\r\n return SerializableCipher;\r\n }\r\n }\r\n\r\n return function (cipher) {\r\n return {\r\n encrypt: function (message, key, cfg) {\r\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n },\r\n\r\n decrypt: function (ciphertext, key, cfg) {\r\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n }\r\n };\r\n };\r\n }())\r\n });\r\n\r\n /**\r\n * Abstract base stream cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n */\r\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n _doFinalize: function () {\r\n // Process partial blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 1\r\n });\r\n\r\n /**\r\n * Mode namespace.\r\n */\r\n var C_mode = C.mode = {};\r\n\r\n /**\r\n * Abstract base block cipher mode template.\r\n */\r\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n /**\r\n * Creates this mode for encryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n */\r\n createEncryptor: function (cipher, iv) {\r\n return this.Encryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Creates this mode for decryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n */\r\n createDecryptor: function (cipher, iv) {\r\n return this.Decryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Initializes a newly created mode.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n */\r\n init: function (cipher, iv) {\r\n this._cipher = cipher;\r\n this._iv = iv;\r\n }\r\n });\r\n\r\n /**\r\n * Cipher Block Chaining mode.\r\n */\r\n var CBC = C_mode.CBC = (function () {\r\n /**\r\n * Abstract base CBC mode.\r\n */\r\n var CBC = BlockCipherMode.extend();\r\n\r\n /**\r\n * CBC encryptor.\r\n */\r\n CBC.Encryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // XOR and encrypt\r\n xorBlock.call(this, words, offset, blockSize);\r\n cipher.encryptBlock(words, offset);\r\n\r\n // Remember this block to use with next block\r\n this._prevBlock = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n /**\r\n * CBC decryptor.\r\n */\r\n CBC.Decryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // Remember this block to use with next block\r\n var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n // Decrypt and XOR\r\n cipher.decryptBlock(words, offset);\r\n xorBlock.call(this, words, offset, blockSize);\r\n\r\n // This block becomes the previous block\r\n this._prevBlock = thisBlock;\r\n }\r\n });\r\n\r\n function xorBlock(words, offset, blockSize) {\r\n // Shortcut\r\n var iv = this._iv;\r\n\r\n // Choose mixing block\r\n if (iv) {\r\n var block = iv;\r\n\r\n // Remove IV for subsequent blocks\r\n this._iv = undefined;\r\n } else {\r\n var block = this._prevBlock;\r\n }\r\n\r\n // XOR blocks\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return CBC;\r\n }());\r\n\r\n /**\r\n * Padding namespace.\r\n */\r\n var C_pad = C.pad = {};\r\n\r\n /**\r\n * PKCS #5/7 padding strategy.\r\n */\r\n var Pkcs7 = C_pad.Pkcs7 = {\r\n /**\r\n * Pads data using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to pad.\r\n * @param {number} blockSize The multiple that the data should be padded to.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n */\r\n pad: function (data, blockSize) {\r\n // Shortcut\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count padding bytes\r\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n // Create padding word\r\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n // Create padding\r\n var paddingWords = [];\r\n for (var i = 0; i < nPaddingBytes; i += 4) {\r\n paddingWords.push(paddingWord);\r\n }\r\n var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n // Add padding\r\n data.concat(padding);\r\n },\r\n\r\n /**\r\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to unpad.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n */\r\n unpad: function (data) {\r\n // Get number of padding bytes from last byte\r\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n // Remove padding\r\n data.sigBytes -= nPaddingBytes;\r\n }\r\n };\r\n\r\n /**\r\n * Abstract base block cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n */\r\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Mode} mode The block mode to use. Default: CBC\r\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n */\r\n cfg: Cipher.cfg.extend({\r\n mode: CBC,\r\n padding: Pkcs7\r\n }),\r\n\r\n reset: function () {\r\n // Reset cipher\r\n Cipher.reset.call(this);\r\n\r\n // Shortcuts\r\n var cfg = this.cfg;\r\n var iv = cfg.iv;\r\n var mode = cfg.mode;\r\n\r\n // Reset block mode\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n var modeCreator = mode.createEncryptor;\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n var modeCreator = mode.createDecryptor;\r\n\r\n // Keep at least one block in the buffer for unpadding\r\n this._minBufferSize = 1;\r\n }\r\n this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n },\r\n\r\n _doProcessBlock: function (words, offset) {\r\n this._mode.processBlock(words, offset);\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcut\r\n var padding = this.cfg.padding;\r\n\r\n // Finalize\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n // Pad data\r\n padding.pad(this._data, this.blockSize);\r\n\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n // Unpad data\r\n padding.unpad(finalProcessedBlocks);\r\n }\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 128/32\r\n });\r\n\r\n /**\r\n * A collection of cipher parameters.\r\n *\r\n * @property {WordArray} ciphertext The raw ciphertext.\r\n * @property {WordArray} key The key to this ciphertext.\r\n * @property {WordArray} iv The IV used in the ciphering operation.\r\n * @property {WordArray} salt The salt used with a key derivation function.\r\n * @property {Cipher} algorithm The cipher algorithm.\r\n * @property {Mode} mode The block mode used in the ciphering operation.\r\n * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n * @property {number} blockSize The block size of the cipher.\r\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n */\r\n var CipherParams = C_lib.CipherParams = Base.extend({\r\n /**\r\n * Initializes a newly created cipher params object.\r\n *\r\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n * ciphertext: ciphertextWordArray,\r\n * key: keyWordArray,\r\n * iv: ivWordArray,\r\n * salt: saltWordArray,\r\n * algorithm: CryptoJS.algo.AES,\r\n * mode: CryptoJS.mode.CBC,\r\n * padding: CryptoJS.pad.PKCS7,\r\n * blockSize: 4,\r\n * formatter: CryptoJS.format.OpenSSL\r\n * });\r\n */\r\n init: function (cipherParams) {\r\n this.mixIn(cipherParams);\r\n },\r\n\r\n /**\r\n * Converts this cipher params object to a string.\r\n *\r\n * @param {Format} formatter (Optional) The formatting strategy to use.\r\n *\r\n * @return {string} The stringified cipher params.\r\n *\r\n * @throws Error If neither the formatter nor the default formatter is set.\r\n *\r\n * @example\r\n *\r\n * var string = cipherParams + '';\r\n * var string = cipherParams.toString();\r\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n */\r\n toString: function (formatter) {\r\n return (formatter || this.formatter).stringify(this);\r\n }\r\n });\r\n\r\n /**\r\n * Format namespace.\r\n */\r\n var C_format = C.format = {};\r\n\r\n /**\r\n * OpenSSL formatting strategy.\r\n */\r\n var OpenSSLFormatter = C_format.OpenSSL = {\r\n /**\r\n * Converts a cipher params object to an OpenSSL-compatible string.\r\n *\r\n * @param {CipherParams} cipherParams The cipher params object.\r\n *\r\n * @return {string} The OpenSSL-compatible string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n */\r\n stringify: function (cipherParams) {\r\n // Shortcuts\r\n var ciphertext = cipherParams.ciphertext;\r\n var salt = cipherParams.salt;\r\n\r\n // Format\r\n if (salt) {\r\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n } else {\r\n var wordArray = ciphertext;\r\n }\r\n\r\n return wordArray.toString(Base64);\r\n },\r\n\r\n /**\r\n * Converts an OpenSSL-compatible string to a cipher params object.\r\n *\r\n * @param {string} openSSLStr The OpenSSL-compatible string.\r\n *\r\n * @return {CipherParams} The cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n */\r\n parse: function (openSSLStr) {\r\n // Parse base64\r\n var ciphertext = Base64.parse(openSSLStr);\r\n\r\n // Shortcut\r\n var ciphertextWords = ciphertext.words;\r\n\r\n // Test for salt\r\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n // Extract salt\r\n var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n // Remove salt from ciphertext\r\n ciphertextWords.splice(0, 4);\r\n ciphertext.sigBytes -= 16;\r\n }\r\n\r\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n */\r\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n */\r\n cfg: Base.extend({\r\n format: OpenSSLFormatter\r\n }),\r\n\r\n /**\r\n * Encrypts a message.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Encrypt\r\n var encryptor = cipher.createEncryptor(key, cfg);\r\n var ciphertext = encryptor.finalize(message);\r\n\r\n // Shortcut\r\n var cipherCfg = encryptor.cfg;\r\n\r\n // Create and return serializable cipher params\r\n return CipherParams.create({\r\n ciphertext: ciphertext,\r\n key: key,\r\n iv: cipherCfg.iv,\r\n algorithm: cipher,\r\n mode: cipherCfg.mode,\r\n padding: cipherCfg.padding,\r\n blockSize: cipher.blockSize,\r\n formatter: cfg.format\r\n });\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Decrypt\r\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n return plaintext;\r\n },\r\n\r\n /**\r\n * Converts serialized ciphertext to CipherParams,\r\n * else assumed CipherParams already and returns ciphertext unchanged.\r\n *\r\n * @param {CipherParams|string} ciphertext The ciphertext.\r\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n *\r\n * @return {CipherParams} The unserialized ciphertext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n */\r\n _parse: function (ciphertext, format) {\r\n if (typeof ciphertext == 'string') {\r\n return format.parse(ciphertext, this);\r\n } else {\r\n return ciphertext;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Key derivation function namespace.\r\n */\r\n var C_kdf = C.kdf = {};\r\n\r\n /**\r\n * OpenSSL key derivation function.\r\n */\r\n var OpenSSLKdf = C_kdf.OpenSSL = {\r\n /**\r\n * Derives a key and IV from a password.\r\n *\r\n * @param {string} password The password to derive from.\r\n * @param {number} keySize The size in words of the key to generate.\r\n * @param {number} ivSize The size in words of the IV to generate.\r\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n *\r\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n */\r\n execute: function (password, keySize, ivSize, salt) {\r\n // Generate random salt\r\n if (!salt) {\r\n salt = WordArray.random(64/8);\r\n }\r\n\r\n // Derive key and IV\r\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n // Separate key and IV\r\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n key.sigBytes = keySize * 4;\r\n\r\n // Return params\r\n return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A serializable cipher wrapper that derives the key from a password,\r\n * and returns ciphertext as a serializable cipher params object.\r\n */\r\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n */\r\n cfg: SerializableCipher.cfg.extend({\r\n kdf: OpenSSLKdf\r\n }),\r\n\r\n /**\r\n * Encrypts a message using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Encrypt\r\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n // Mix in derived params\r\n ciphertext.mixIn(derivedParams);\r\n\r\n return ciphertext;\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Decrypt\r\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n return plaintext;\r\n }\r\n });\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var BlockCipher = C_lib.BlockCipher;\r\n var C_algo = C.algo;\r\n\r\n // Lookup tables\r\n var SBOX = [];\r\n var INV_SBOX = [];\r\n var SUB_MIX_0 = [];\r\n var SUB_MIX_1 = [];\r\n var SUB_MIX_2 = [];\r\n var SUB_MIX_3 = [];\r\n var INV_SUB_MIX_0 = [];\r\n var INV_SUB_MIX_1 = [];\r\n var INV_SUB_MIX_2 = [];\r\n var INV_SUB_MIX_3 = [];\r\n\r\n // Compute lookup tables\r\n (function () {\r\n // Compute double table\r\n var d = [];\r\n for (var i = 0; i < 256; i++) {\r\n if (i < 128) {\r\n d[i] = i << 1;\r\n } else {\r\n d[i] = (i << 1) ^ 0x11b;\r\n }\r\n }\r\n\r\n // Walk GF(2^8)\r\n var x = 0;\r\n var xi = 0;\r\n for (var i = 0; i < 256; i++) {\r\n // Compute sbox\r\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n SBOX[x] = sx;\r\n INV_SBOX[sx] = x;\r\n\r\n // Compute multiplication\r\n var x2 = d[x];\r\n var x4 = d[x2];\r\n var x8 = d[x4];\r\n\r\n // Compute sub bytes, mix columns tables\r\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n SUB_MIX_3[x] = t;\r\n\r\n // Compute inv sub bytes, inv mix columns tables\r\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n INV_SUB_MIX_3[sx] = t;\r\n\r\n // Compute next counter\r\n if (!x) {\r\n x = xi = 1;\r\n } else {\r\n x = x2 ^ d[d[d[x8 ^ x2]]];\r\n xi ^= d[d[xi]];\r\n }\r\n }\r\n }());\r\n\r\n // Precomputed Rcon lookup\r\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n /**\r\n * AES block cipher algorithm.\r\n */\r\n var AES = C_algo.AES = BlockCipher.extend({\r\n _doReset: function () {\r\n // Shortcuts\r\n var key = this._key;\r\n var keyWords = key.words;\r\n var keySize = key.sigBytes / 4;\r\n\r\n // Compute number of rounds\r\n var nRounds = this._nRounds = keySize + 6\r\n\r\n // Compute number of key schedule rows\r\n var ksRows = (nRounds + 1) * 4;\r\n\r\n // Compute key schedule\r\n var keySchedule = this._keySchedule = [];\r\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n if (ksRow < keySize) {\r\n keySchedule[ksRow] = keyWords[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 1];\r\n\r\n if (!(ksRow % keySize)) {\r\n // Rot word\r\n t = (t << 8) | (t >>> 24);\r\n\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n // Mix Rcon\r\n t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n } else if (keySize > 6 && ksRow % keySize == 4) {\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n }\r\n\r\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n }\r\n }\r\n\r\n // Compute inv key schedule\r\n var invKeySchedule = this._invKeySchedule = [];\r\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n var ksRow = ksRows - invKsRow;\r\n\r\n if (invKsRow % 4) {\r\n var t = keySchedule[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 4];\r\n }\r\n\r\n if (invKsRow < 4 || ksRow <= 4) {\r\n invKeySchedule[invKsRow] = t;\r\n } else {\r\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n }\r\n }\r\n },\r\n\r\n encryptBlock: function (M, offset) {\r\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n },\r\n\r\n decryptBlock: function (M, offset) {\r\n // Swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n\r\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n // Inv swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n },\r\n\r\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n // Shortcut\r\n var nRounds = this._nRounds;\r\n\r\n // Get input, add round key\r\n var s0 = M[offset] ^ keySchedule[0];\r\n var s1 = M[offset + 1] ^ keySchedule[1];\r\n var s2 = M[offset + 2] ^ keySchedule[2];\r\n var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n // Key schedule row counter\r\n var ksRow = 4;\r\n\r\n // Rounds\r\n for (var round = 1; round < nRounds; round++) {\r\n // Shift rows, sub bytes, mix columns, add round key\r\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n // Update state\r\n s0 = t0;\r\n s1 = t1;\r\n s2 = t2;\r\n s3 = t3;\r\n }\r\n\r\n // Shift rows, sub bytes, add round key\r\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n // Set output\r\n M[offset] = t0;\r\n M[offset + 1] = t1;\r\n M[offset + 2] = t2;\r\n M[offset + 3] = t3;\r\n },\r\n\r\n keySize: 256/32\r\n });\r\n\r\n /**\r\n * Shortcut functions to the cipher's object interface.\r\n *\r\n * @example\r\n *\r\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n */\r\n C.AES = BlockCipher._createHelper(AES);\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\n\n// create custom json serialization format\nvar JsonFormatter = {\n\tstringify: function (cipherParams) {\n\t\t// create json object with ciphertext\n\t\tvar jsonObj = {\n\t\t\tct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)\n\t\t};\n\t\t\n\t\t// optionally add iv and salt\n\t\tif (cipherParams.iv) {\n\t\t\tjsonObj.iv = cipherParams.iv.toString();\n\t\t}\n\t\t\n\t\tif (cipherParams.salt) {\n\t\t\tjsonObj.s = cipherParams.salt.toString();\n\t\t}\n\n\t\t// stringify json object\n\t\treturn JSON.stringify(jsonObj)\n\t},\n\n\tparse: function (jsonStr) {\n\t\t// parse json string\n\t\tvar jsonObj = JSON.parse(jsonStr);\n\t\t\n\t\t// extract ciphertext from json object, and create cipher params object\n\t\tvar cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t\tciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)\n\t\t});\n\t\t\n\t\t// optionally extract iv and salt\n\t\tif (jsonObj.iv) {\n\t\t\tcipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);\n\t\t}\n \n\t\tif (jsonObj.s) {\n\t\t\tcipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);\n\t\t}\n\t\t\n\t\treturn cipherParams;\n\t}\n};\n\nexports.JsonFormatter = JsonFormatter;","var CryptoJS = require('./lib/core').CryptoJS;\nrequire('./lib/enc-base64');\nrequire('./lib/md5');\nrequire('./lib/evpkdf');\nrequire('./lib/cipher-core');\nrequire('./lib/aes');\nvar JsonFormatter = require('./lib/jsonformatter').JsonFormatter;\n\nexports.CryptoJS = CryptoJS;\nexports.JsonFormatter = JsonFormatter;","import nodeCryptoJs from \"node-cryptojs-aes\";\nconst { CryptoJS, JsonFormatter } = nodeCryptoJs;\nimport validators from \"types-validate-assert\";\nconst { validateTypes, assertTypes } = validators;\n\n/**\n * Encrypt a Javascript object with a string password\n * The object passed must pass JSON.stringify or the method will fail.\n *\n * @param {string} password A password to encrypt the object with\n * @param {Object} obj A javascript object (must be JSON compatible)\n * @return {string} Encrypted string\n */\nexport function encryptObject(password, obj) {\n assertTypes.isStringWithValue(password);\n assertTypes.isObject(obj);\n\n const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, {\n format: JsonFormatter,\n }).toString();\n return encrypted;\n}\n\n/**\n * Decrypt an Object using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} objString A javascript object as JSON string\n * @return {string} Encrypted string\n */\nexport function decryptObject(password, objString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(objString);\n\n try {\n const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter });\n return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Encrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} string A string to be password encrypted\n * @return {string} Encrypted string\n */\nexport function encryptStrHash(password, string) {\n assertTypes.isStringWithValue(password);\n assertTypes.isString(string);\n\n const encrypt = CryptoJS.AES.encrypt(string, password).toString();\n return encrypt;\n}\n\n/**\n * Decrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} encryptedString A string to decrypt\n * @return {string} Decrypted string\n */\nexport function decryptStrHash(password, encryptedString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(encryptedString);\n\n try {\n const decrypted = CryptoJS.AES.decrypt(encryptedString, password);\n return CryptoJS.enc.Utf8.stringify(decrypted) === \"\"\n ? false\n : CryptoJS.enc.Utf8.stringify(decrypted);\n } catch (e) {\n return false;\n }\n}\n\nexport function buf2hex(buffer) {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (x) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\nexport function hex2buf(hexString) {\n var bytes = new Uint8Array(Math.ceil(hexString.length / 2));\n for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16);\n return bytes;\n}\nexport function str2buf(string) {\n var buf = new Buffer.from(string);\n return new Uint8Array(buf);\n}\nexport function concatUint8Arrays(array1, array2) {\n var arr = new Uint8Array(array1.length + array2.length);\n arr.set(array1);\n arr.set(array2, array1.length);\n return arr;\n}\nexport function ab2str(buf) {\n return String.fromCharCode.apply(null, new Uint8Array(buf));\n}\nexport function str2ab(str) {\n var buf = new ArrayBuffer(str.length);\n var bufView = new Uint8Array(buf);\n for (var i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\nexport function str2hex(str) {\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n hex += \"\" + str.charCodeAt(i).toString(16);\n }\n return hex;\n}\nexport function hex2str(hexx) {\n var hex = hexx.toString(); //force conversion\n var str = \"\";\n for (var i = 0; i < hex.length && hex.substr(i, 2) !== \"00\"; i += 2)\n str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\nexport function randomString(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (var i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n}\nexport function isStringHex(string = \"\") {\n let hexRegEx = /([0-9]|[a-f])/gim;\n return typeof string === \"string\" && (string.match(hexRegEx) || []).length === string.length;\n}\n\nexport function isLamdenKey(string) {\n if (validateTypes.isStringHex(string) && string.length === 64) return true;\n return false;\n}\n","import * as helpers from \"./helpers\";\nimport nacl from \"tweetnacl\";\nimport * as bip39 from \"bip39\";\nimport bip32 from \"ed25519-hd-key\";\n\n/**\n * Create a wallet object for signing and verifying messages\n *\n * @param {Object} [args={}] Args Object\n * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from\n * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users\n * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages\n * @return {Object} Wallet Object with sign and verify methods\n */\nexport let create_wallet = (args = {}) => {\n let { sk = undefined, keepPrivate = false, seed = null } = args;\n\n let vk;\n\n if (sk) {\n vk = get_vk(sk);\n } else {\n let keyPair = new_wallet(seed);\n vk = keyPair.vk;\n sk = keyPair.sk;\n }\n\n const wallet = () => {\n return {\n sign: (msg) => sign(sk, msg),\n verify: (msg, sig) => verify(vk, msg, sig),\n vk,\n sk: !keepPrivate ? sk : undefined,\n };\n };\n\n return wallet();\n};\n\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function generate_keys(seed = null) {\n var kp = null;\n if (seed == null) {\n kp = nacl.sign.keyPair();\n } else {\n kp = nacl.sign.keyPair.fromSeed(seed);\n }\n // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey\n // and the vk is the last 32 bytes of the secretKey as well as the publicKey\n // {\n // 'publicKey': ,\n // 'secretKey': \n // }\n return {\n sk: new Uint8Array(kp[\"secretKey\"].slice(0, 32)),\n vk: new Uint8Array(kp[\"secretKey\"].slice(32, 64)),\n };\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return String vk\n * vk: A 64 character long hex representation of a verify key (public key)\n */\nexport function get_vk(sk) {\n var kp = format_to_keys(sk);\n var kpf = keys_to_format(kp);\n return kpf.vk;\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function format_to_keys(sk) {\n var skf = helpers.hex2buf(sk);\n var kp = generate_keys(skf);\n return kp;\n}\n/**\n * @param Object kp\n * kp: Object containing the properties sk and vk\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function keys_to_format(kp) {\n return {\n vk: helpers.buf2hex(kp.vk),\n sk: helpers.buf2hex(kp.sk),\n };\n}\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function new_wallet(seed = null) {\n const keys = generate_keys(seed);\n return keys_to_format(keys);\n}\n\n/**\n *\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}}\n * derivationIndex: bip32 derivation key index\n * vk: Verify Key (VK) represented as a 64 character hex string\n * sk: Signing Key (SK) represented as a 64 character hex string\n * mnemonic: 24 word seed phrase\n\n */\nfunction generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) {\n let finalMnemonic;\n\n if (mnemonic !== undefined) {\n finalMnemonic = mnemonic;\n } else {\n finalMnemonic = bip39.generateMnemonic(256);\n }\n\n const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString(\"hex\");\n\n const derivationPath = \"m/44'/789'/\" + derivationIndex + \"'/0'/0'\";\n const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000);\n\n const privateKey = key.toString(\"hex\");\n const publicKey = bip32.getPublicKey(key, false).toString(\"hex\");\n\n if (publicKey !== get_vk(privateKey)) {\n throw Error(\"Bip32 public key does not match with Lamden public key!\");\n }\n\n return {\n sk: privateKey,\n vk: publicKey,\n derivationIndex: derivationIndex,\n mnemonic: finalMnemonic,\n };\n}\n\n/**\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n *\n * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n * derivationIndex: Bip32 derivation index\n * mnemonic: 24 word seed phrase\n */\nexport function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) {\n return generate_keys_bip39(mnemonic, derivationIndex);\n}\n\n/**\n * @param String sk\n * @param Uint8Array msg\n * sk: A 64 character long hex representation of a signing key (private key)\n * msg: A Uint8Array of bytes representing the message you would like to sign\n *\n * @return String sig\n * sig: A 128 character long hex string representing the message's signature\n */\nexport function sign(sk, msg) {\n var kp = format_to_keys(sk);\n // This is required due to the secretKey required to sign a transaction\n // in the js implementation of NaCL being the combination of the sk and\n // vk for some stupid reason. That being said, we still want the sk and\n // vk objects to exist in 32-byte string format (same as cilantro's\n // python implementation) when presented to the user.\n var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk);\n return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk));\n}\n/**\n * @param String vk\n * @param Uint8Array msg\n * @param String sig\n * vk: A 64 character long hex representation of a verify key (public key)\n * msg: A Uint8Array (bytes) representation of a message that has been signed\n * sig: A 128 character long hex representation of a nacl signature\n *\n * @return Bool result\n * result: true if verify checked out, false if not\n */\nexport function verify(vk, msg, sig) {\n var vkb = helpers.hex2buf(vk);\n var sigb = helpers.hex2buf(sig);\n try {\n return nacl.sign.detached.verify(msg, sigb, vkb);\n } catch (_a) {\n return false;\n }\n}\n","export class EventEmitter {\n constructor() {\n this._events = {};\n }\n \n on(name, listener) {\n if (!this._events[name]) {\n this._events[name] = [];\n }\n\n this._events[name].push(listener);\n }\n \n removeListener(name, listenerToRemove) {\n if (!this._events[name]) {\n throw new Error(`Can't remove a listener. Event \"${name}\" doesn't exits.`);\n }\n\n const filterListeners = (listener) => listener !== listenerToRemove;\n this._events[name] = this._events[name].filter(filterListeners);\n }\n \n emit(name, data) {\n if (!this._events[name]) return\n \n const fireCallbacks = (callback) => {\n callback(data);\n };\n \n this._events[name].forEach(fireCallbacks);\n }\n }\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","/*\r\n * bignumber.js v9.0.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2019 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if only one character,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.$|[+-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","import BigNumber from \"bignumber.js\";\nBigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 });\nBigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent\n\nexport function Encoder(type, value) {\n const throwError = (val) => {\n throw new Error(`Error encoding ${val} to ${type}`);\n };\n const countDecimals = (n) => {\n if (Math.floor(n) === n) return 0;\n try {\n return n.toString().split(\".\")[1].length;\n } catch (e) {\n return 0;\n }\n };\n const isString = (val) => typeof val === \"string\" || val instanceof String;\n const isArray = (val) => val && typeof val === \"object\" && val.constructor === Array;\n const isObject = (val) => val && typeof val === \"object\" && val.constructor === Object;\n const isDate = (val) => val instanceof Date;\n const isBoolean = (val) => typeof val === \"boolean\";\n\n const isNumber = (val) => {\n if (isArray(val)) return false;\n return !isNaN(encodeBigNumber(val).toNumber());\n };\n\n const isInteger = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return true;\n return false;\n };\n const encodeInt = (val) => {\n if (!isNumber(val)) throwError(val);\n else return parseInt(val);\n };\n const isFloat = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return false;\n return true;\n };\n const encodeFloat = (val) => {\n if (!isNumber(val)) throwError(val);\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n };\n const encodeNumber = (val) => {\n if (!isNumber(val)) throwError(val);\n if (isFloat(val)) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n }\n if (isInteger(val)) return parseInt(val);\n };\n const encodeBigNumber = (val) => {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return val;\n };\n\n const encodeBool = (val) => {\n if (isBoolean(val)) return val;\n if (val === \"true\" || val === 1) return true;\n if (val === \"false\" || val === 0) return false;\n throwError(val);\n };\n const encodeStr = (val) => {\n if (isString(val)) return val;\n if (isDate(val)) return val.toISOString();\n return JSON.stringify(val);\n };\n const encodeDateTime = (val) => {\n val = !isDate(val) ? new Date(val) : val;\n if (!isDate(val)) throwError(val);\n return {\n __time__: [\n val.getUTCFullYear(),\n val.getUTCMonth(),\n val.getUTCDate(),\n val.getUTCHours(),\n val.getUTCMinutes(),\n val.getUTCSeconds(),\n val.getUTCMilliseconds(),\n ],\n };\n };\n const encodeTimeDelta = (val) => {\n const time = isDate(val) ? val.getTime() : new Date(val).getTime();\n const days = parseInt(time / 1000 / 60 / 60 / 24);\n const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000;\n return { __delta__: [days, seconds] };\n };\n\n const encodeList = (val) => {\n if (isArray(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isArray(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeDict = (val) => {\n if (isObject(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isObject(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeObject = (val) => {\n try {\n return encodeList(val);\n } catch (e) {\n return encodeDict(val);\n }\n };\n\n function parseObject(obj) {\n const encode = (k, v) => {\n if (k === \"datetime\" || k === \"datetime.datetime\") return Encoder(\"datetime.datetime\", v);\n if (k === \"timedelta\" || k === \"datetime.timedelta\") return Encoder(\"datetime.timedelta\", v);\n if (k !== \"__fixed__\" && isFloat(v)) return encodeFloat(v);\n return v;\n };\n\n const fixDatetime = (k, v) => {\n const isDatetimeObject = (val) => {\n let datetimeTypes = [\"datetime.datetime\", \"datetime\", \"datetime.timedelta\", \"timedelta\"];\n return (\n Object.keys(val).length === 1 &&\n datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0\n );\n };\n\n if (v.constructor === Array) {\n v.map((val) => {\n if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]];\n //if (isFloat(val)) return encodeFloat(val)\n return val;\n });\n }\n if (v.constructor === Object) {\n if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]];\n }\n\n //if (isFloat(v)) return encodeFloat(v)\n\n return v;\n };\n\n let encodeValues = JSON.stringify(obj, encode);\n return JSON.parse(encodeValues, fixDatetime);\n }\n\n const encoder = {\n str: encodeStr,\n string: encodeStr,\n float: encodeFloat,\n int: encodeInt,\n bool: encodeBool,\n boolean: encodeBool,\n dict: encodeDict,\n list: encodeList,\n Any: () => value,\n \"datetime.timedelta\": encodeTimeDelta,\n \"datetime.datetime\": encodeDateTime,\n timedelta: encodeTimeDelta,\n datetime: encodeDateTime,\n number: encodeNumber,\n object: encodeObject,\n bigNumber: encodeBigNumber,\n };\n\n if (Object.keys(encoder).includes(type)) return encoder[type](value);\n else throw new Error(`Error: ${type} is not a valid encoder type.`);\n}\n\nEncoder.BigNumber = BigNumber;\n\nexport default { Encoder };\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport fetch from \"node-fetch\";\nimport { Encoder } from \"./encoder\";\n\nexport class LamdenMasterNode_API {\n constructor(networkInfoObj) {\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n\n send(method, path, data, overrideURL, callback) {\n let parms = \"\";\n if (Object.keys(data).includes(\"parms\")) {\n parms = this.createParms(data.parms);\n }\n\n let options = {};\n if (method === \"POST\") {\n let headers = { \"Content-Type\": \"application/json\" };\n options.method = method;\n options.headers = headers;\n options.body = data;\n }\n\n return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options)\n .then(async (res) => {\n if (res.status === 200) {\n let json = await res.json();\n callback(json, undefined);\n return json;\n } else {\n let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false;\n callback(undefined, error);\n return error;\n }\n })\n .catch((err) => {\n return callback(undefined, err.toString());\n });\n }\n\n createParms(parms) {\n if (Object.keys(parms).length === 0) return \"\";\n let parmString = \"?\";\n Object.keys(parms).forEach((key) => {\n parmString = `${parmString}${key}=${parms[key]}&`;\n });\n return parmString.slice(0, -1);\n }\n\n async getContractInfo(contractName) {\n const returnInfo = (res) => {\n try {\n if (res.name) return res;\n } catch (e) {}\n return null;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => returnInfo(res)).then((res) =>\n returnInfo(res)\n );\n }\n\n async getVariable(contract, variable, key = \"\") {\n let parms = {};\n if (validateTypes.isStringWithValue(key)) parms.key = key;\n\n let path = `/contracts/${contract}/${variable}/`;\n\n const returnValue = (res) => {\n try {\n if (res.value) return res.value;\n } catch (e) {}\n return null;\n };\n return this.send(\"GET\", path, { parms }, undefined, (res, err) => returnValue(res)).then(\n (res) => returnValue(res)\n );\n }\n\n async getContractMethods(contract) {\n const getMethods = (res) => {\n try {\n if (res.methods) return res.methods;\n } catch (e) {}\n return [];\n };\n let path = `/contracts/${contract}/methods`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getMethods(res)).then((res) =>\n getMethods(res)\n );\n }\n\n async getContractVariables(contract) {\n const getVariables = (res) => {\n try {\n if (res.variables) return res;\n } catch (e) {}\n return {};\n };\n let path = `/contracts/${contract}/variables`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getVariables(res)).then((res) =>\n getVariables(res)\n );\n }\n\n async pingServer() {\n const getStatus = (res) => {\n try {\n if (res.status) return true;\n } catch (e) {}\n return false;\n };\n let response = await this.send(\"GET\", \"/ping\", {}, undefined, (res, err) => getStatus(res));\n return getStatus(response);\n }\n\n async getCurrencyBalance(vk) {\n let balanceRes = await this.getVariable(\"currency\", \"balances\", vk);\n if (!balanceRes) return Encoder(\"bigNumber\", 0);\n if (balanceRes.__fixed__) return Encoder(\"bigNumber\", balanceRes.__fixed__);\n return Encoder(\"bigNumber\", balanceRes.toString());\n }\n\n async contractExists(contractName) {\n const exists = (res) => {\n try {\n if (res.name) return true;\n } catch (e) {}\n return false;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => exists(res)).then((res) =>\n exists(res)\n );\n }\n\n async sendTransaction(data, url = undefined, callback) {\n return this.send(\"POST\", \"/\", JSON.stringify(data), url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n\n async getNonce(sender, callback) {\n if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.`;\n let path = `/nonce/${sender}`;\n let url = this.host;\n return this.send(\"GET\", path, {}, url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, `Unable to get nonce for ${sender} on network ${url}`);\n return;\n }\n return `Unable to get nonce for ${sender} on network ${url}`;\n }\n res.masternode = url;\n if (callback) {\n callback(res, undefined);\n return;\n } else return res;\n });\n }\n\n checkTransaction(hash, callback) {\n const parms = { hash };\n return this.send(\"GET\", \"/tx\", { parms }, undefined, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n}\n","import { EventEmitter } from \"./eventEmitter\";\nimport validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport { LamdenMasterNode_API } from \"./masternode-api\";\n\nexport class Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // networkInfo: {\n // hosts: list of masternode hostname/ip urls,\n // type: \"testnet\", \"mainnet\" or \"custom\"\n // },\n constructor(networkInfoObj) {\n //Reject undefined or missing info\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.type = validateTypes.isStringWithValue(networkInfoObj.type)\n ? networkInfoObj.type.toLowerCase()\n : \"custom\";\n this.events = new EventEmitter();\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol)\n ? networkInfoObj.currencySymbol\n : \"TAU\";\n this.name = validateTypes.isStringWithValue(networkInfoObj.name)\n ? networkInfoObj.name\n : \"lamden network\";\n this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false;\n this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer)\n ? networkInfoObj.blockExplorer\n : undefined;\n\n this.online = false;\n try {\n this.API = new LamdenMasterNode_API(networkInfoObj);\n } catch (e) {\n throw new Error(e);\n }\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n //Check if the network is online\n //Emits boolean as 'online' event\n //Also returns status as well as passes status to a callback\n async ping(callback = undefined) {\n this.online = await this.API.pingServer();\n this.events.emit(\"online\", this.online);\n if (validateTypes.isFunction(callback)) callback(this.online);\n return this.online;\n }\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n async getNetworkInfo() {\n await this.ping();\n return {\n name: this.name,\n lamden: this.lamden,\n type: this.type,\n hosts: this.hosts,\n url: this.url,\n online: this.online,\n };\n }\n}\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport * as wallet from \"./wallet\";\nimport { Network } from \"./network\";\n\nexport class TransactionBuilder extends Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // arg[0] (networkInfo): { //Can also accpet a Lamden \"Network Class\"\n // host: masternode webserver hostname/ip,\n // type: \"testnet\", \"mainnet\" or \"mockchain\"\n // }\n // arg[1] (txInfo): {\n // uid: [Optional] unique ID for tracking purposes,\n // senderVk: public key of the transaction sender,\n // contractName: name of lamden smart contract,\n // methodName: name of method to call in contractName,\n // kwargs: key/values of args to pass to methodName\n // example: kwargs.to = \"270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e\"\n // kwargs.amount = 1000\n // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail.\n // nonce: [Optional] send() will attempt to retrieve this info automatically\n // processor [Optional] send() will attempt to retrieve this info automatically\n // }\n // arg[2] (txData): [Optional] state hydrating data\n constructor(networkInfo, txInfo, txData) {\n if (validateTypes.isSpecificClass(networkInfo, \"Network\")) super(networkInfo.getNetworkInfo());\n else super(networkInfo);\n\n //Validate arguments\n if (!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`);\n if (!validateTypes.isStringHex(txInfo.senderVk))\n throw new Error(`Sender Public Key Required (Type: Hex String)`);\n if (!validateTypes.isStringWithValue(txInfo.contractName))\n throw new Error(`Contract Name Required (Type: String)`);\n if (!validateTypes.isStringWithValue(txInfo.methodName))\n throw new Error(`Method Required (Type: String)`);\n if (!validateTypes.isInteger(txInfo.stampLimit))\n throw new Error(`Stamps Limit Required (Type: Integer)`);\n\n //Store variables in self for reference\n this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined;\n this.sender = txInfo.senderVk;\n this.contract = txInfo.contractName;\n this.method = txInfo.methodName;\n this.kwargs = {};\n if (validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs;\n this.stampLimit = txInfo.stampLimit;\n\n //validate and set nonce and processor if user provided them\n if (typeof txInfo.nonce !== \"undefined\") {\n if (!validateTypes.isInteger(txInfo.nonce))\n throw new Error(\n `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`\n );\n this.nonce = txInfo.nonce;\n }\n if (typeof txInfo.processor !== \"undefined\") {\n if (!validateTypes.isStringWithValue(txInfo.processor))\n throw new Error(\n `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`\n );\n this.processor = txInfo.processor;\n }\n\n this.signature;\n this.transactionSigned = false;\n\n //Transaction result information\n this.nonceResult = {};\n this.txSendResult = { errors: [] };\n this.txBlockResult = {};\n this.txHash;\n this.txCheckResult = {};\n this.txCheckAttempts = 0;\n this.txCheckLimit = 1;\n\n //Hydrate other items if passed\n if (txData) {\n if (txData.uid) this.uid = txData.uid;\n if (validateTypes.isObjectWithKeys(txData.txSendResult))\n this.txSendResult = txData.txSendResult;\n if (validateTypes.isObjectWithKeys(txData.nonceResult)) {\n this.nonceResult = txData.nonceResult;\n if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce;\n if (validateTypes.isStringWithValue(this.nonceResult.processor))\n this.processor = this.nonceResult.processor;\n }\n if (validateTypes.isObjectWithKeys(txData.txSendResult)) {\n this.txSendResult = txData.txSendResult;\n if (this.txSendResult.hash) this.txHash = this.txSendResult.hash;\n }\n if (validateTypes.isObjectWithKeys(txData.txBlockResult))\n this.txBlockResult = txData.txBlockResult;\n if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo;\n }\n //Create Capnp messages and transactionMessages\n this.makePayload();\n }\n makePayload() {\n this.payload = {\n contract: this.contract,\n function: this.method,\n kwargs: this.kwargs,\n nonce: this.nonce,\n processor: this.processor,\n sender: this.sender,\n stamps_supplied: this.stampLimit,\n };\n this.sortedPayload = this.sortObject(this.payload);\n }\n makeTransaction() {\n this.tx = {\n metadata: {\n signature: this.signature,\n timestamp: parseInt(+new Date() / 1000),\n },\n payload: this.sortedPayload.orderedObj,\n };\n }\n verifySignature() {\n //Verify the signature is correct\n if (!this.transactionSigned)\n throw new Error(\n \"Transaction has not be been signed. Use the sign() method first.\"\n );\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n return wallet.verify(this.sender, stringArray, this.signature);\n }\n sign(sk = undefined, userWallet = undefined) {\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n if (userWallet) this.signature = userWallet.sign(stringArray);\n else this.signature = wallet.sign(sk, stringArray);\n this.transactionSigned = true;\n }\n sortObject(object) {\n const processObj = (obj) => {\n const getType = (value) => {\n return Object.prototype.toString.call(value);\n };\n const isArray = (value) => {\n if (getType(value) === \"[object Array]\") return true;\n return false;\n };\n const isObject = (value) => {\n if (getType(value) === \"[object Object]\") return true;\n return false;\n };\n\n const sortObjKeys = (unsorted) => {\n const sorted = {};\n Object.keys(unsorted)\n .sort()\n .forEach((key) => (sorted[key] = unsorted[key]));\n return sorted;\n };\n\n const formatKeys = (unformatted) => {\n Object.keys(unformatted).forEach((key) => {\n if (isArray(unformatted[key]))\n unformatted[key] = unformatted[key].map((item) => {\n if (isObject(item)) return formatKeys(item);\n return item;\n });\n if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]);\n });\n return sortObjKeys(unformatted);\n };\n\n if (!isObject(obj)) throw new TypeError(\"Not a valid Object\");\n try {\n obj = JSON.parse(JSON.stringify(obj));\n } catch (e) {\n throw new TypeError(\"Not a valid JSON Object\");\n }\n return formatKeys(obj);\n };\n const orderedObj = processObj(object);\n return {\n orderedObj,\n json: JSON.stringify(orderedObj),\n };\n }\n async getNonce(callback = undefined) {\n let timestamp = new Date().toUTCString();\n this.nonceResult = await this.API.getNonce(this.sender);\n if (typeof this.nonceResult.nonce === \"undefined\") {\n throw new Error(this.nonceResult);\n }\n this.nonceResult.timestamp = timestamp;\n this.nonce = this.nonceResult.nonce;\n this.processor = this.nonceResult.processor;\n this.nonceMasternode = this.nonceResult.masternode;\n //Create payload object\n this.makePayload();\n\n if (!callback) return this.nonceResult;\n return callback(this.nonceResult);\n }\n async send(sk = undefined, masternode = undefined, callback = undefined) {\n //Error if transaction is not signed and no sk provided to the send method to sign it before sending\n if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned) {\n throw new Error(\n `Transation Not Signed: Private key needed or call sign() first`\n );\n }\n\n let timestamp = new Date().toUTCString();\n\n try {\n //If the nonce isn't set attempt to get it\n if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor))\n await this.getNonce();\n //if the sk is provided then sign the transaction\n if (validateTypes.isStringWithValue(sk)) this.sign(sk);\n //Serialize transaction\n this.makeTransaction();\n //Send transaction to the masternode\n let masternodeURL = masternode;\n if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode;\n let response = await this.API.sendTransaction(this.tx, masternodeURL);\n //Set error if txSendResult doesn't exist\n if (!response || validateTypes.isStringWithValue(response)) {\n this.txSendResult.errors = [response || \"Unknown Transaction Error\"];\n } else {\n if (response.error) this.txSendResult.errors = [response.error];\n else this.txSendResult = response;\n }\n } catch (e) {\n this.txSendResult.errors = [e.message];\n }\n this.txSendResult.timestamp = timestamp;\n return this.handleMasterNodeResponse(this.txSendResult, callback);\n }\n checkForTransactionResult(callback = undefined) {\n return new Promise((resolve) => {\n let timerId = setTimeout(\n async function checkTx() {\n this.txCheckAttempts = this.txCheckAttempts + 1;\n let res = await this.API.checkTransaction(this.txHash);\n let checkAgain = false;\n let timestamp = new Date().toUTCString();\n if (typeof res === \"string\" || !res) {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n res,\n ];\n }\n } else {\n if (res.error) {\n if (res.error === \"Transaction not found.\") {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n res.error,\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n ];\n }\n } else {\n this.txCheckResult.errors = [res.error];\n }\n } else {\n this.txCheckResult = res;\n }\n }\n if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000);\n else {\n if (validateTypes.isNumber(this.txCheckResult.status)) {\n if (this.txCheckResult.status > 0) {\n if (!validateTypes.isArray(this.txCheckResult.errors))\n this.txCheckResult.errors = [];\n this.txCheckResult.errors.push(\"This transaction returned a non-zero status code\");\n }\n }\n this.txCheckResult.timestamp = timestamp;\n clearTimeout(timerId);\n resolve(this.handleMasterNodeResponse(this.txCheckResult, callback));\n }\n }.bind(this),\n 1000\n );\n });\n }\n handleMasterNodeResponse(result, callback = undefined) {\n //Check to see if this is a successful transacation submission\n if (\n validateTypes.isStringWithValue(result.hash) &&\n validateTypes.isStringWithValue(result.success)\n ) {\n this.txHash = result.hash;\n this.setPendingBlockInfo();\n } else {\n this.setBlockResultInfo(result);\n this.txBlockResult = result;\n }\n this.events.emit(\"response\", result, this.resultInfo.subtitle);\n if (validateTypes.isFunction(callback)) callback(result);\n return result;\n }\n setPendingBlockInfo() {\n this.resultInfo = {\n title: \"Transaction Pending\",\n subtitle: \"Your transaction was submitted and is being processed\",\n message: `Tx Hash: ${this.txHash}`,\n type: \"success\",\n };\n return this.resultInfo;\n }\n setBlockResultInfo(result) {\n let erroredTx = false;\n let errorText = `returned an error and `;\n let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined;\n let stamps = result.stampsUsed || result.stamps_used || 0;\n let message = \"\";\n if (validateTypes.isArrayWithValues(result.errors)) {\n erroredTx = true;\n message = `This transaction returned ${result.errors.length} errors.`;\n if (result.result) {\n if (result.result.includes(\"AssertionError\")) result.errors.push(result.result);\n }\n }\n if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `;\n\n this.resultInfo = {\n title: `Transaction ${erroredTx ? \"Failed\" : \"Successful\"}`,\n subtitle: `Your transaction ${erroredTx ? `${errorText} ` : \"\"}used ${stamps} stamps`,\n message,\n type: `${erroredTx ? \"error\" : \"success\"}`,\n errorInfo: erroredTx ? result.errors : undefined,\n returnResult: result.result || \"\",\n stampsUsed: stamps,\n statusCode,\n };\n return this.resultInfo;\n }\n getResultInfo() {\n return this.resultInfo;\n }\n getTxInfo() {\n return {\n senderVk: this.sender,\n contractName: this.contract,\n methodName: this.method,\n kwargs: this.kwargs,\n stampLimit: this.stampLimit,\n };\n }\n getAllInfo() {\n return {\n uid: this.uid,\n txHash: this.txHash,\n signed: this.transactionSigned,\n tx: this.tx,\n signature: this.signature,\n networkInfo: this.getNetworkInfo(),\n txInfo: this.getTxInfo(),\n txSendResult: this.txSendResult,\n txBlockResult: this.txBlockResult,\n resultInfo: this.getResultInfo(),\n nonceResult: this.nonceResult,\n };\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes } = validators;\nimport { Network } from './network'\nimport { TransactionBuilder } from './transactionBuilder'\n\nexport class TransactionBatcher extends Network {\n constructor(networkInfo) {\n if (validateTypes.isSpecificClass(networkInfo, 'Network'))\n super(networkInfo.getNetworkInfo())\n else super(networkInfo)\n\n this.txBatches = {}\n this.overflow = []\n this.nonceResults = {}\n this.running = false;\n }\n addTransaction(txInfo){\n if (this.running) {\n this.overflow.push(txInfo)\n return\n }\n this.validateTransactionInfo(txInfo)\n if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []\n this.txBatches[txInfo.senderVk].push(txInfo)\n }\n addTransactionList(txList){\n txList.forEach(txInfo => this.addTransaction(txInfo))\n }\n processOverflow(){\n const overflow = this.overflow\n this.overflow = []\n overflow.forEach(txInfo => this.addTransaction(txInfo))\n }\n hasTransactions(){\n let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length)\n test.filter(f => f === 0)\n if (test.length > 0 ) return true\n return false\n }\n validateTransactionInfo(txInfo){\n try{\n new TransactionBuilder(txInfo)\n }catch(e){\n return false\n }\n return true\n }\n async getStartingNonce(senderVk, callback = undefined){\n let timestamp = new Date().toUTCString();\n let response = await this.API.getNonce(senderVk)\n if (typeof response.nonce === 'undefined'){\n throw new Error(response)\n }\n response.timestamp = timestamp\n this.nonceResults[senderVk] = response\n\n if (callback) callback(response)\n return response;\n }\n async sendAllBatches(keyDict){\n if (this.running) return\n let sentTransactions = []\n this.running = true;\n \n await Promise.all(Object.keys(this.txBatches).map((senderVk) => {\n const senderBatch = this.txBatches[senderVk].splice(0,15);\n if (senderBatch.length <= 15) delete this.txBatches[senderVk]\n \n return new Promise(async (resolver) => {\n if (senderBatch.length === 0 ) resolver()\n\n if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`)\n let nonceResponse = await this.getStartingNonce(senderVk)\n let txBatch = this.setBatchNonces(nonceResponse, senderBatch);\n this.signBatch(txBatch, keyDict[senderVk])\n this.sendBatch(txBatch).then(sentList => {\n sentTransactions = [...sentTransactions, ...sentList]\n resolver()\n }) \n })\n }))\n\n try{\n return Promise.all(sentTransactions)\n }catch (e){}\n finally{\n this.running = false;\n this.processOverflow();\n }\n }\n setBatchNonces(nonceResult, txList){\n return txList.map((txInfo, index) => {\n txInfo.nonce = nonceResult.nonce + index\n txInfo.processor = nonceResult.processor\n return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo)\n }).sort((a, b) => a.nonce - b.nonce)\n }\n signBatch(txBatch, key){\n txBatch.forEach(txBuilder => txBuilder.sign(key))\n }\n sendBatch(txBatch){\n let resolvedTransactions = []\n return new Promise(resolver => {\n const resolve = (index) => {\n if ((index + 1) === txBatch.length) resolver(resolvedTransactions)\n }\n txBatch.forEach((txBuilder, index) => {\n const delayedSend = () => {\n resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder})\n resolve(index)\n }\n setTimeout(delayedSend, 1200 * index)\n })\n })\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes, assertTypes } = validators;\nimport * as helpers from './helpers';\nimport * as wallet from './wallet'\n\nexport class Keystore {\n /**\n * Lamden Keystores\n *\n * This Class will create a lamden keystore instance\n *\n * @param {Object|undefined} arg constructor argument\n * @param {String|undefined} arg.key Create an instance and load it with one private key\n * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys\n * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data\n * @return {Keystore}\n */\n constructor(arg = undefined) {\n this.KEYSTORE_VERSION = \"1.0\"\n this.password = null\n this.encryptedData = null;\n\n this.keyList = (() => {\n let keyList = []\n let outerClass = this\n let wallets = []\n\n const addKey = (key) => {\n keyList.push(key)\n createWallets()\n }\n const deleteKey = (position) => {\n keyList.splice(position, 1);\n createWallets()\n }\n const clearKeys = () => {\n keyList = []\n createWallets()\n }\n const numOfKeys = () => keyList.length\n const createWallets = () => {\n wallets = []\n keyList.forEach(keyInfo => {\n let newWallet = wallet.create_wallet({sk: keyInfo.sk, keepPrivate: true})\n newWallet = {...newWallet, ...keyInfo}\n delete newWallet.sk\n wallets.push(newWallet)\n })\n }\n const createKeystore = (password, hint = undefined) => {\n return JSON.stringify({\n data: helpers.encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}),\n w: !hint ? \"\" : helpers.encryptStrHash('n1ahcKc0lb', hint),\n });\n }\n const decryptKeystore = (password, data) => {\n let decrypted = helpers.decryptObject(password, data)\n if (decrypted) {\n assertTypes.isArray(decrypted.keyList)\n decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk))\n decrypted.keyList.forEach(keyInfo => addKey(keyInfo))\n outerClass.version = decrypted.version\n } else {\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n\n return {\n getWallets: () => wallets,\n getWallet: (vk) => wallets.find(wallet => wallet.vk === vk),\n addKey, \n clearKeys, \n numOfKeys,\n deleteKey,\n createKeystore,\n decryptKeystore\n }\n })()\n\n if (arg){\n if (arg.key) this.addKey(arg.key)\n if (arg.keyList) this.addKeys(arg.keyList)\n if (arg.keystoreData) this.addKeystoreData(arg.keystoreData)\n }\n }\n /**\n * Add a list of keys to add to the keystore\n * @param {Array.} keyList An array of 32 character long Lamden private keys\n */\n addKeys(keyList){\n assertTypes.isArray(keyList)\n keyList.forEach(key => this.addKey(key))\n }\n /**\n * Add a key to the keystore\n * @param {string} key A 32 character long Lamden private key\n */\n addKey(keyInfo){\n assertTypes.isObjectWithKeys(keyInfo)\n assertTypes.isStringWithValue(keyInfo.sk)\n if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk\n this.keyList.addKey(keyInfo)\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {string} keystoreData The contents of an existing encrypted keystore file\n */\n addKeystoreData(keystoreData){\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n if(this.validateKeyStore(keystoreData)){\n this.encryptedData = keystoreData\n }\n }\n /**\n * Returns the password hint in a keystore file\n * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor\n */\n getPasswordHint(keystoreData = undefined){\n if (!this.encryptedData && !keystoreData) throw new Error(\"No keystore data found.\")\n\n if (keystoreData) {\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n }\n else keystoreData = this.encryptedData\n\n if (keystoreData.w) return helpers.decryptStrHash('n1ahcKc0lb', keystoreData.w);\n else return \"\"\n }\n /**\n * Removes a specific key from the keyList\n * @param {Number} keyIndex The index of the key you want to remove\n */\n deleteKey(keyIndex){\n assertTypes.isInteger(keyIndex)\n if (this.keyList.numOfKeys() === 0) return\n if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error(\"Key index out of range.\")\n this.keyList.deleteKey(keyIndex)\n }\n /**\n * Clears all keys from the keystore\n */\n clearKeys(){\n this.keyList.clearKeys()\n }\n /**\n * Clears all keys from the keystore\n * @return {Array.} An array of wallet objects\n */\n get wallets() {\n return this.keyList.getWallets()\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {String} vk A 32 character long Lamden public key\n * @return {Object} A wallet object\n */\n getWallet(vk) {\n return this.keyList.getWallet(vk)\n }\n /**\n * Used to validate that a keystore is the proper Lamden Format (does not decrypt data)\n * @param {String} keystoreData The contents of an existing encrypted keystore file\n * @return {Boolean} valid\n * @throws {Error} This is not a valid keystore file.\n */\n validateKeyStore(keystoreData){\n assertTypes.isObjectWithKeys(keystoreData)\n try{\n let encryptedData = JSON.parse(keystoreData.data);\n if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){\n throw new Error(\"This is not a valid keystore file.\")\n }\n } catch (e) {\n throw new Error(\"This is not a valid keystore file.\")\n }\n return true;\n }\n /**\n * Create a Keystore text string from the keys contained in the Keystore instance\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password.\n * @return {String} A JSON stringified object containing the encrypted data\n * @throws {Error} Any errors from the encyption process\n */\n createKeystore(password, hint = undefined) {\n assertTypes.isStringWithValue(password)\n if (hint){\n assertTypes.isStringWithValue(hint)\n }\n return this.keyList.createKeystore(password, hint)\n }\n /**\n * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore.\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor.\n * @throws {Error} Any errors from the encyption process\n */\n decryptKeystore(password, keystoreData = undefined){\n if (keystoreData) this.addKeystoreData(keystoreData)\n if (!this.encryptedData) throw new Error (\"No keystoreData to decrypt.\")\n try{\n this.keyList.decryptKeystore(password, this.encryptedData.data)\n }catch (e){\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n}\n","import { TransactionBuilder } from \"./js/transactionBuilder\";\nimport { TransactionBatcher } from \"./js/transactionBatcher\";\nimport { Network } from \"./js/network\";\nimport { Encoder } from \"./js/encoder\";\nimport { Keystore } from \"./js/keystore\";\nimport { LamdenMasterNode_API as Masternode_API } from \"./js/masternode-api\";\nimport * as wallet from \"./js/wallet\";\nimport * as utils from \"./js/helpers\";\nimport { Buffer } from \"buffer\";\n\nglobalThis.Buffer = Buffer;\n\nexport default {\n TransactionBuilder,\n TransactionBatcher,\n Masternode_API,\n Network,\n wallet,\n Keystore,\n Encoder,\n utils,\n};\n"],"names":["this","CryptoJS","undefined","require$$0","JsonFormatter","require$$1","nodeCryptoJs","validateTypes","assertTypes","nacl","helpers.hex2buf","helpers.buf2hex","bip39","bip32","helpers.concatUint8Arrays","Stream","clone","http","Url","https","zlib","wallet.verify","wallet.sign","wallet.create_wallet","helpers.encryptObject","helpers.encryptStrHash","helpers.decryptObject","helpers.decryptStrHash","Buffer","Masternode_API"],"mappings":"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C,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAA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"} \ No newline at end of file diff --git a/dist/esm/lamden.js b/dist/esm/lamden.js new file mode 100644 index 0000000..5f8a1fd --- /dev/null +++ b/dist/esm/lamden.js @@ -0,0 +1,40617 @@ +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +function commonjsRequire (path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + +var dist$1 = {exports: {}}; + +(function (module, exports) { +(function (global, factory) { + factory(exports) ; +}(commonjsGlobal, (function (exports) { + class ValidateTypes { + constructor() {} + + getType(value) { + return Object.prototype.toString.call(value); + } + + getClassName(value) { + try { + return value.constructor.name; + } catch (e) {} + + return this.getType(value); + } //Validation functions + + + isObject(value) { + if (this.getType(value) === "[object Object]") return true; + return false; + } + + isFunction(value) { + if (this.getType(value) === "[object Function]") return true; + return false; + } + + isString(value) { + if (this.getType(value) === "[object String]") return true; + return false; + } + + isBoolean(value) { + if (this.getType(value) === "[object Boolean]") return true; + return false; + } + + isArray(value) { + if (this.getType(value) === "[object Array]") return true; + return false; + } + + isNumber(value) { + if (this.getType(value) === "[object Number]") return true; + return false; + } + + isInteger(value) { + if (this.getType(value) === "[object Number]" && Number.isInteger(value)) return true; + return false; + } + + isRegEx(value) { + if (this.getType(value) === "[object RegExp]") return true; + return false; + } + + isStringHex(value) { + if (!this.isStringWithValue(value)) return false; + let hexRegEx = /([0-9]|[a-f])/gim; + return (value.match(hexRegEx) || []).length === value.length; + } + + hasKeys(value, keys) { + if (keys.map(key => key in value).includes(false)) return false; + return true; + } + + isStringWithValue(value) { + if (this.isString(value) && value !== '') return true; + return false; + } + + isObjectWithKeys(value) { + if (this.isObject(value) && Object.keys(value).length > 0) return true; + return false; + } + + isArrayWithValues(value) { + if (this.isArray(value) && value.length > 0) return true; + return false; + } + + isSpecificClass(value, className) { + if (!this.isObject(value)) return false; + if (this.getClassName(value) !== className) return false; + return true; + } + + } + + class AssertTypes { + constructor() { + this.validate = new ValidateTypes(); + } //Validation functions + + + isObject(value) { + if (!this.validate.isObject(value)) { + throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isFunction(value) { + if (!this.validate.isFunction(value)) { + throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isString(value) { + if (!this.validate.isString(value)) { + throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isBoolean(value) { + if (!this.validate.isBoolean(value)) { + throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isArray(value) { + if (!this.validate.isArray(value)) { + throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isNumber(value) { + if (!this.validate.isNumber(value)) { + throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isInteger(value) { + if (!this.validate.isInteger(value)) { + throw new TypeError(`Expected "${value}" to be an integer but got non-integer value`); + } + + return true; + } + + isRegEx(value) { + if (!this.validate.isRegEx(value)) { + throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`); + } + + return true; + } + + isStringHex(value) { + if (!this.validate.isStringHex(value)) { + throw new TypeError(`Expected "${value}" to be hex but got non-hex value`); + } + + return true; + } + + hasKeys(value, keys) { + if (!this.validate.hasKeys(value, keys)) { + throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`); + } + + return true; + } + + isStringWithValue(value) { + if (!this.validate.isStringWithValue(value)) { + throw new TypeError(`Expected "${value}" to be [object String] and not empty`); + } + + return true; + } + + isObjectWithKeys(value) { + if (!this.validate.isObjectWithKeys(value)) { + throw new TypeError(`Expected "${value}" to be [object Object] and have keys`); + } + + return true; + } + + isArrayWithValues(value) { + if (!this.validate.isArrayWithValues(value)) { + throw new TypeError(`Expected "${value}" to be [object Array] and not empty`); + } + + return true; + } + + isSpecificClass(value, className) { + if (!this.validate.isSpecificClass(value, className)) { + throw new TypeError(`Expected Object Class to be "${className}" but got ${this.validate.getClassName(value)}`); + } + + return true; + } + + } + + const validateTypes = new ValidateTypes(); + const assertTypes = new AssertTypes(); + + exports.assertTypes = assertTypes; + exports.validateTypes = validateTypes; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +}(dist$1, dist$1.exports)); + +var validators = /*@__PURE__*/getDefaultExportFromCjs(dist$1.exports); + +var cryptojs = {}; + +var core = {}; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ + +/** + * CryptoJS core components. + */ +var CryptoJS$8 = CryptoJS$8 || (function (Math, undefined$1) { + /** + * CryptoJS namespace. + */ + var C = {}; + + /** + * Library namespace. + */ + var C_lib = C.lib = {}; + + /** + * Base object for prototypal inheritance. + */ + var Base = C_lib.Base = (function () { + function F() {} + + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ + extend: function (overrides) { + // Spawn + F.prototype = this; + var subtype = new F(); + + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + + // Create default initializer + if (!subtype.hasOwnProperty('init')) { + subtype.init = function () { + subtype.$super.init.apply(this, arguments); + }; + } + + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + + // Reference supertype + subtype.$super = this; + + return subtype; + }, + + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ + create: function () { + var instance = this.extend(); + instance.init.apply(instance, arguments); + + return instance; + }, + + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ + init: function () { + }, + + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ + mixIn: function (properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + + // IE won't copy toString using the loop above + if (properties.hasOwnProperty('toString')) { + this.toString = properties.toString; + } + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ + clone: function () { + return this.init.prototype.extend(this); + } + }; + }()); + + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var WordArray = C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ + init: function (words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined$1) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ + toString: function (encoder) { + return (encoder || Hex).stringify(this); + }, + + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ + concat: function (wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + + // Clamp excess bits + this.clamp(); + + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else if (thatWords.length > 0xffff) { + // Copy one word at a time + for (var i = 0; i < thatSigBytes; i += 4) { + thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; + } + } else { + // Copy all words at once + thisWords.push.apply(thisWords, thatWords); + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function () { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function (nBytes) { + var words = []; + for (var i = 0; i < nBytes; i += 4) { + words.push((Math.random() * 0x100000000) | 0); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function (hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function (latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function (wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function (utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function () { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function (data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function (doFlush) { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + var processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function () { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function (cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function (messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function (messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512/32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function (hasher) { + return function (message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function (hasher) { + return function (message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; +}(Math)); + +core.CryptoJS = CryptoJS$8; + +var CryptoJS$7 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$7; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function (wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function (base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex != -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2); + var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2); + words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + + return WordArray.create(words, nBytes); + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; +}()); + +var CryptoJS$6 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function (Math) { + // Shortcuts + var C = CryptoJS$6; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function () { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function () { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function (M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function () { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function () { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); +}(Math)); + +var CryptoJS$5 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$5; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ + var EvpKDF = C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128/32, + hasher: MD5, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ + init: function (cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function (password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init hasher + var hasher = cfg.hasher.create(); + + // Initial values + var derivedKey = WordArray.create(); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + var block = hasher.update(password).finalize(salt); + hasher.reset(); + + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.EvpKDF = function (password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; +}()); + +var CryptoJS$4 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** + * Cipher core components. + */ +CryptoJS$4.lib.Cipher || (function (undefined$1) { + // Shortcuts + var C = CryptoJS$4; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function (key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function (key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function (xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function () { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function (dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function (dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128/32, + + ivSize: 128/32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function () { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function (cipher) { + return { + encrypt: function (message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function (ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function () { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function (cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function (cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function (cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function () { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function (words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + var block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined$1; + } else { + var block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function (data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function (data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function () { + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + var modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + var modeCreator = mode.createDecryptor; + + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + this._mode = modeCreator.call(mode, this, iv && iv.words); + }, + + _doProcessBlock: function (words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function () { + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + var finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128/32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function (cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function (formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function (cipherParams) { + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + var wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function (openSSLStr) { + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + var salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ ciphertext: ciphertext, salt: salt }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function (ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function (password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64/8); + } + + // Derive key and IV + var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ key: key, iv: iv, salt: salt }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function (cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function (cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); +}()); + +var CryptoJS$3 = core.CryptoJS; + +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function () { + // Shortcuts + var C = CryptoJS$3; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function () { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function () { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + var t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function (M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function (M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256/32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); +}()); + +var jsonformatter = {}; + +var CryptoJS$2 = core.CryptoJS; + +// create custom json serialization format +var JsonFormatter$2 = { + stringify: function (cipherParams) { + // create json object with ciphertext + var jsonObj = { + ct: cipherParams.ciphertext.toString(CryptoJS$2.enc.Base64) + }; + + // optionally add iv and salt + if (cipherParams.iv) { + jsonObj.iv = cipherParams.iv.toString(); + } + + if (cipherParams.salt) { + jsonObj.s = cipherParams.salt.toString(); + } + + // stringify json object + return JSON.stringify(jsonObj) + }, + + parse: function (jsonStr) { + // parse json string + var jsonObj = JSON.parse(jsonStr); + + // extract ciphertext from json object, and create cipher params object + var cipherParams = CryptoJS$2.lib.CipherParams.create({ + ciphertext: CryptoJS$2.enc.Base64.parse(jsonObj.ct) + }); + + // optionally extract iv and salt + if (jsonObj.iv) { + cipherParams.iv = CryptoJS$2.enc.Hex.parse(jsonObj.iv); + } + + if (jsonObj.s) { + cipherParams.salt = CryptoJS$2.enc.Hex.parse(jsonObj.s); + } + + return cipherParams; + } +}; + +jsonformatter.JsonFormatter = JsonFormatter$2; + +var CryptoJS$1 = core.CryptoJS; + + + + + +var JsonFormatter$1 = jsonformatter.JsonFormatter; + +cryptojs.CryptoJS = CryptoJS$1; +cryptojs.JsonFormatter = JsonFormatter$1; + +const { CryptoJS, JsonFormatter } = cryptojs; +const { validateTypes: validateTypes$5, assertTypes: assertTypes$1 } = validators; + +/** + * Encrypt a Javascript object with a string password + * The object passed must pass JSON.stringify or the method will fail. + * + * @param {string} password A password to encrypt the object with + * @param {Object} obj A javascript object (must be JSON compatible) + * @return {string} Encrypted string + */ +function encryptObject(password, obj) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isObject(obj); + + const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { + format: JsonFormatter, + }).toString(); + return encrypted; +} + +/** + * Decrypt an Object using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} objString A javascript object as JSON string + * @return {string} Encrypted string + */ +function decryptObject(password, objString) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isStringWithValue(objString); + + try { + const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }); + return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); + } catch (e) { + return false; + } +} + +/** + * Encrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} string A string to be password encrypted + * @return {string} Encrypted string + */ +function encryptStrHash(password, string) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isString(string); + + const encrypt = CryptoJS.AES.encrypt(string, password).toString(); + return encrypt; +} + +/** + * Decrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} encryptedString A string to decrypt + * @return {string} Decrypted string + */ +function decryptStrHash(password, encryptedString) { + assertTypes$1.isStringWithValue(password); + assertTypes$1.isStringWithValue(encryptedString); + + try { + const decrypted = CryptoJS.AES.decrypt(encryptedString, password); + return CryptoJS.enc.Utf8.stringify(decrypted) === "" + ? false + : CryptoJS.enc.Utf8.stringify(decrypted); + } catch (e) { + return false; + } +} + +function buf2hex(buffer) { + return Array.prototype.map + .call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)) + .join(""); +} +function hex2buf(hexString) { + var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); + for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); + return bytes; +} +function str2buf(string) { + var buf = new Buffer.from(string); + return new Uint8Array(buf); +} +function concatUint8Arrays(array1, array2) { + var arr = new Uint8Array(array1.length + array2.length); + arr.set(array1); + arr.set(array2, array1.length); + return arr; +} +function ab2str(buf) { + return String.fromCharCode.apply(null, new Uint8Array(buf)); +} +function str2ab(str) { + var buf = new ArrayBuffer(str.length); + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +function str2hex(str) { + var hex = ""; + for (var i = 0; i < str.length; i++) { + hex += "" + str.charCodeAt(i).toString(16); + } + return hex; +} +function hex2str(hexx) { + var hex = hexx.toString(); //force conversion + var str = ""; + for (var i = 0; i < hex.length && hex.substr(i, 2) !== "00"; i += 2) + str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + return str; +} +function randomString(length) { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (var i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +} +function isStringHex(string = "") { + let hexRegEx = /([0-9]|[a-f])/gim; + return typeof string === "string" && (string.match(hexRegEx) || []).length === string.length; +} + +function isLamdenKey(string) { + if (validateTypes$5.isStringHex(string) && string.length === 64) return true; + return false; +} + +var utils$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + encryptObject: encryptObject, + decryptObject: decryptObject, + encryptStrHash: encryptStrHash, + decryptStrHash: decryptStrHash, + buf2hex: buf2hex, + hex2buf: hex2buf, + str2buf: str2buf, + concatUint8Arrays: concatUint8Arrays, + ab2str: ab2str, + str2ab: str2ab, + str2hex: str2hex, + hex2str: hex2str, + randomString: randomString, + isStringHex: isStringHex, + isLamdenKey: isLamdenKey +}); + +var naclFast$1 = {exports: {}}; + +var _nodeResolve_empty = {}; + +var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': _nodeResolve_empty +}); + +var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); + +(function (module) { +(function(nacl) { + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; +} + +function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; +} + +function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); +} + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +*/ + +var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +}; + +poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; +}; + +poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; +}; + +poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } +}; + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; +} + +function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; +} + +function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +var 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 +]; + +function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = (x[j] + 128) >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + mlen = -1; + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + mlen = n; + return mlen; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + for (var i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Uint8Array)) + throw new TypeError('unexpected type, use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return null; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof commonjsRequire !== 'undefined') { + // Node.js. + crypto = require$$0$1; + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})(module.exports ? module.exports : (self.nacl = self.nacl || {})); +}(naclFast$1)); + +var nacl = naclFast$1.exports; + +var bip39_browser = {exports: {}}; + +(function (module, exports) { +(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u="function"==typeof commonjsRequire&&commonjsRequire,i=0;i 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('='); + if (validLen === -1) validLen = len; + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4); + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + + var curByte = 0; + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen; + + var i; + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = (tmp >> 16) & 0xFF; + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ); + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ); + } + + return parts.join('') +} + +},{}],2:[function(require,module,exports){ + +},{}],3:[function(require,module,exports){ +(function (Buffer){(function (){ + +var base64 = require('base64-js'); +var ieee754 = require('ieee754'); + +exports.Buffer = Buffer; +exports.SlowBuffer = SlowBuffer; +exports.INSPECT_MAX_BYTES = 50; + +var K_MAX_LENGTH = 0x7fffffff; +exports.kMaxLength = K_MAX_LENGTH; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ); +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1); + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }; + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}); + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}); + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length); + buf.__proto__ = Buffer.prototype; + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }); +} + +Buffer.poolSize = 8192; // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value); + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +}; + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype; +Buffer.__proto__ = Uint8Array; + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +}; + +function allocUnsafe (size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +}; + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0; + var buf = createBuffer(length); + + var actual = buf.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual); + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + var buf = createBuffer(length); + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf; + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array); + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype; + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0; + var buf = createBuffer(len); + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len); + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +}; + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf); + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length; + var mustMatch = (arguments.length > 2 && arguments[2] === true); + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + var length = this.length; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.toLocaleString = Buffer.prototype.toString; + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + var str = ''; + var max = exports.INSPECT_MAX_BYTES; + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); + if (this.length > max) str += ' ... '; + return '' +}; + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength); + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + var strLen = string.length; + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf = this.subarray(start, end); + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype; + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + ieee754.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + ieee754.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end); + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code; + } + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding); + var len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0]; + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this);}).call(this,require("buffer").Buffer); +},{"base64-js":1,"buffer":3,"ieee754":5}],4:[function(require,module,exports){ + +var R = typeof Reflect === 'object' ? Reflect : null; +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + }; + +var ReflectOwnKeys; +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys; +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +}; + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + } + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + +},{}],5:[function(require,module,exports){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +}; + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +}; + +},{}],6:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; +} + +},{}],7:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +}; + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + +},{}],8:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()); +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] }; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],9:[function(require,module,exports){ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer'); +var Buffer = buffer.Buffer; + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key]; + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer; +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports); + exports.Buffer = SafeBuffer; +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype); + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer); + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +}; + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size); + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf +}; + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +}; + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +}; + +},{"buffer":3}],10:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/lib/_stream_readable.js'); +Stream.Writable = require('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = require('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = require('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = require('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js'); +Stream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js'); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":4,"inherits":6,"readable-stream/lib/_stream_duplex.js":12,"readable-stream/lib/_stream_passthrough.js":13,"readable-stream/lib/_stream_readable.js":14,"readable-stream/lib/_stream_transform.js":15,"readable-stream/lib/_stream_writable.js":16,"readable-stream/lib/internal/streams/end-of-stream.js":20,"readable-stream/lib/internal/streams/pipeline.js":22}],11:[function(require,module,exports){ + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],12:[function(require,module,exports){ +(function (process){(function (){ +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = require('./_stream_readable'); + +var Writable = require('./_stream_writable'); + +require('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this);}).call(this,require('_process')); +},{"./_stream_readable":14,"./_stream_writable":16,"_process":8,"inherits":6}],13:[function(require,module,exports){ + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +require('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":15,"inherits":6}],14:[function(require,module,exports){ +(function (process,global){(function (){ + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +require('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = require('./internal/streams/buffer_list'); + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +require('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + 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 + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + 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]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); +},{"../errors":11,"./_stream_duplex":12,"./internal/streams/async_iterator":17,"./internal/streams/buffer_list":18,"./internal/streams/destroy":19,"./internal/streams/from":21,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"events":4,"inherits":6,"string_decoder/":25,"util":2}],15:[function(require,module,exports){ + +module.exports = Transform; + +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = require('./_stream_duplex'); + +require('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":11,"./_stream_duplex":12,"inherits":6}],16:[function(require,module,exports){ +(function (process,global){(function (){ + +module.exports = Writable; +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +require('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + 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); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + 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); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); +},{"../errors":11,"./_stream_duplex":12,"./internal/streams/destroy":19,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"inherits":6,"util-deprecate":26}],17:[function(require,module,exports){ +(function (process){(function (){ + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this);}).call(this,require('_process')); +},{"./end-of-stream":20,"_process":8}],18:[function(require,module,exports){ + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); +},{"buffer":3,"util":2}],19:[function(require,module,exports){ +(function (process){(function (){ + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this);}).call(this,require('_process')); +},{"_process":8}],20:[function(require,module,exports){ + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":11}],21:[function(require,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],22:[function(require,module,exports){ + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":11,"./end-of-stream":20}],23:[function(require,module,exports){ + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":11}],24:[function(require,module,exports){ +module.exports = require('events').EventEmitter; + +},{"events":4}],25:[function(require,module,exports){ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +} +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + 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; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":9}],26:[function(require,module,exports){ +(function (global){(function (){ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this);}).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); +},{}],27:[function(require,module,exports){ +var Buffer = require('safe-buffer').Buffer; +var Transform = require('stream').Transform; +var StringDecoder = require('string_decoder').StringDecoder; +var inherits = require('inherits'); + +function CipherBase (hashMode) { + Transform.call(this); + this.hashMode = typeof hashMode === 'string'; + if (this.hashMode) { + this[hashMode] = this._finalOrDigest; + } else { + this.final = this._finalOrDigest; + } + if (this._final) { + this.__final = this._final; + this._final = null; + } + this._decoder = null; + this._encoding = null; +} +inherits(CipherBase, Transform); + +CipherBase.prototype.update = function (data, inputEnc, outputEnc) { + if (typeof data === 'string') { + data = Buffer.from(data, inputEnc); + } + + var outData = this._update(data); + if (this.hashMode) return this + + if (outputEnc) { + outData = this._toString(outData, outputEnc); + } + + return outData +}; + +CipherBase.prototype.setAutoPadding = function () {}; +CipherBase.prototype.getAuthTag = function () { + throw new Error('trying to get auth tag in unsupported state') +}; + +CipherBase.prototype.setAuthTag = function () { + throw new Error('trying to set auth tag in unsupported state') +}; + +CipherBase.prototype.setAAD = function () { + throw new Error('trying to set aad in unsupported state') +}; + +CipherBase.prototype._transform = function (data, _, next) { + var err; + try { + if (this.hashMode) { + this._update(data); + } else { + this.push(this._update(data)); + } + } catch (e) { + err = e; + } finally { + next(err); + } +}; +CipherBase.prototype._flush = function (done) { + var err; + try { + this.push(this.__final()); + } catch (e) { + err = e; + } + + done(err); +}; +CipherBase.prototype._finalOrDigest = function (outputEnc) { + var outData = this.__final() || Buffer.alloc(0); + if (outputEnc) { + outData = this._toString(outData, outputEnc, true); + } + return outData +}; + +CipherBase.prototype._toString = function (value, enc, fin) { + if (!this._decoder) { + this._decoder = new StringDecoder(enc); + this._encoding = enc; + } + + if (this._encoding !== enc) throw new Error('can\'t switch encodings') + + var out = this._decoder.write(value); + if (fin) { + out += this._decoder.end(); + } + + return out +}; + +module.exports = CipherBase; + +},{"inherits":31,"safe-buffer":40,"stream":10,"string_decoder":25}],28:[function(require,module,exports){ +var inherits = require('inherits'); +var MD5 = require('md5.js'); +var RIPEMD160 = require('ripemd160'); +var sha = require('sha.js'); +var Base = require('cipher-base'); + +function Hash (hash) { + Base.call(this, 'digest'); + + this._hash = hash; +} + +inherits(Hash, Base); + +Hash.prototype._update = function (data) { + this._hash.update(data); +}; + +Hash.prototype._final = function () { + return this._hash.digest() +}; + +module.exports = function createHash (alg) { + alg = alg.toLowerCase(); + if (alg === 'md5') return new MD5() + if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() + + return new Hash(sha(alg)) +}; + +},{"cipher-base":27,"inherits":31,"md5.js":32,"ripemd160":39,"sha.js":42}],29:[function(require,module,exports){ +var MD5 = require('md5.js'); + +module.exports = function (buffer) { + return new MD5().update(buffer).digest() +}; + +},{"md5.js":32}],30:[function(require,module,exports){ +var Buffer = require('safe-buffer').Buffer; +var Transform = require('stream').Transform; +var inherits = require('inherits'); + +function throwIfNotStringOrBuffer (val, prefix) { + if (!Buffer.isBuffer(val) && typeof val !== 'string') { + throw new TypeError(prefix + ' must be a string or a buffer') + } +} + +function HashBase (blockSize) { + Transform.call(this); + + this._block = Buffer.allocUnsafe(blockSize); + this._blockSize = blockSize; + this._blockOffset = 0; + this._length = [0, 0, 0, 0]; + + this._finalized = false; +} + +inherits(HashBase, Transform); + +HashBase.prototype._transform = function (chunk, encoding, callback) { + var error = null; + try { + this.update(chunk, encoding); + } catch (err) { + error = err; + } + + callback(error); +}; + +HashBase.prototype._flush = function (callback) { + var error = null; + try { + this.push(this.digest()); + } catch (err) { + error = err; + } + + callback(error); +}; + +HashBase.prototype.update = function (data, encoding) { + throwIfNotStringOrBuffer(data, 'Data'); + if (this._finalized) throw new Error('Digest already called') + if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); + + // consume data + var block = this._block; + var offset = 0; + while (this._blockOffset + data.length - offset >= this._blockSize) { + for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]; + this._update(); + this._blockOffset = 0; + } + while (offset < data.length) block[this._blockOffset++] = data[offset++]; + + // update length + for (var j = 0, carry = data.length * 8; carry > 0; ++j) { + this._length[j] += carry; + carry = (this._length[j] / 0x0100000000) | 0; + if (carry > 0) this._length[j] -= 0x0100000000 * carry; + } + + return this +}; + +HashBase.prototype._update = function () { + throw new Error('_update is not implemented') +}; + +HashBase.prototype.digest = function (encoding) { + if (this._finalized) throw new Error('Digest already called') + this._finalized = true; + + var digest = this._digest(); + if (encoding !== undefined) digest = digest.toString(encoding); + + // reset state + this._block.fill(0); + this._blockOffset = 0; + for (var i = 0; i < 4; ++i) this._length[i] = 0; + + return digest +}; + +HashBase.prototype._digest = function () { + throw new Error('_digest is not implemented') +}; + +module.exports = HashBase; + +},{"inherits":31,"safe-buffer":40,"stream":10}],31:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + }; +} + +},{}],32:[function(require,module,exports){ +var inherits = require('inherits'); +var HashBase = require('hash-base'); +var Buffer = require('safe-buffer').Buffer; + +var ARRAY16 = new Array(16); + +function MD5 () { + HashBase.call(this, 64); + + // state + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; +} + +inherits(MD5, HashBase); + +MD5.prototype._update = function () { + var M = ARRAY16; + for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4); + + var a = this._a; + var b = this._b; + var c = this._c; + var d = this._d; + + a = fnF(a, b, c, d, M[0], 0xd76aa478, 7); + d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12); + c = fnF(c, d, a, b, M[2], 0x242070db, 17); + b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22); + a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7); + d = fnF(d, a, b, c, M[5], 0x4787c62a, 12); + c = fnF(c, d, a, b, M[6], 0xa8304613, 17); + b = fnF(b, c, d, a, M[7], 0xfd469501, 22); + a = fnF(a, b, c, d, M[8], 0x698098d8, 7); + d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12); + c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17); + b = fnF(b, c, d, a, M[11], 0x895cd7be, 22); + a = fnF(a, b, c, d, M[12], 0x6b901122, 7); + d = fnF(d, a, b, c, M[13], 0xfd987193, 12); + c = fnF(c, d, a, b, M[14], 0xa679438e, 17); + b = fnF(b, c, d, a, M[15], 0x49b40821, 22); + + a = fnG(a, b, c, d, M[1], 0xf61e2562, 5); + d = fnG(d, a, b, c, M[6], 0xc040b340, 9); + c = fnG(c, d, a, b, M[11], 0x265e5a51, 14); + b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20); + a = fnG(a, b, c, d, M[5], 0xd62f105d, 5); + d = fnG(d, a, b, c, M[10], 0x02441453, 9); + c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14); + b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20); + a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5); + d = fnG(d, a, b, c, M[14], 0xc33707d6, 9); + c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14); + b = fnG(b, c, d, a, M[8], 0x455a14ed, 20); + a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5); + d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9); + c = fnG(c, d, a, b, M[7], 0x676f02d9, 14); + b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20); + + a = fnH(a, b, c, d, M[5], 0xfffa3942, 4); + d = fnH(d, a, b, c, M[8], 0x8771f681, 11); + c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16); + b = fnH(b, c, d, a, M[14], 0xfde5380c, 23); + a = fnH(a, b, c, d, M[1], 0xa4beea44, 4); + d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11); + c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16); + b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23); + a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4); + d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11); + c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16); + b = fnH(b, c, d, a, M[6], 0x04881d05, 23); + a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4); + d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11); + c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16); + b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23); + + a = fnI(a, b, c, d, M[0], 0xf4292244, 6); + d = fnI(d, a, b, c, M[7], 0x432aff97, 10); + c = fnI(c, d, a, b, M[14], 0xab9423a7, 15); + b = fnI(b, c, d, a, M[5], 0xfc93a039, 21); + a = fnI(a, b, c, d, M[12], 0x655b59c3, 6); + d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10); + c = fnI(c, d, a, b, M[10], 0xffeff47d, 15); + b = fnI(b, c, d, a, M[1], 0x85845dd1, 21); + a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6); + d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10); + c = fnI(c, d, a, b, M[6], 0xa3014314, 15); + b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21); + a = fnI(a, b, c, d, M[4], 0xf7537e82, 6); + d = fnI(d, a, b, c, M[11], 0xbd3af235, 10); + c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15); + b = fnI(b, c, d, a, M[9], 0xeb86d391, 21); + + this._a = (this._a + a) | 0; + this._b = (this._b + b) | 0; + this._c = (this._c + c) | 0; + this._d = (this._d + d) | 0; +}; + +MD5.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80; + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64); + this._update(); + this._blockOffset = 0; + } + + this._block.fill(0, this._blockOffset, 56); + this._block.writeUInt32LE(this._length[0], 56); + this._block.writeUInt32LE(this._length[1], 60); + this._update(); + + // produce result + var buffer = Buffer.allocUnsafe(16); + buffer.writeInt32LE(this._a, 0); + buffer.writeInt32LE(this._b, 4); + buffer.writeInt32LE(this._c, 8); + buffer.writeInt32LE(this._d, 12); + return buffer +}; + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fnF (a, b, c, d, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 +} + +function fnG (a, b, c, d, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 +} + +function fnH (a, b, c, d, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 +} + +function fnI (a, b, c, d, m, k, s) { + return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 +} + +module.exports = MD5; + +},{"hash-base":30,"inherits":31,"safe-buffer":40}],33:[function(require,module,exports){ +exports.pbkdf2 = require('./lib/async'); +exports.pbkdf2Sync = require('./lib/sync'); + +},{"./lib/async":34,"./lib/sync":37}],34:[function(require,module,exports){ +(function (process,global){(function (){ +var checkParameters = require('./precondition'); +var defaultEncoding = require('./default-encoding'); +var sync = require('./sync'); +var Buffer = require('safe-buffer').Buffer; + +var ZERO_BUF; +var subtle = global.crypto && global.crypto.subtle; +var toBrowser = { + 'sha': 'SHA-1', + 'sha-1': 'SHA-1', + 'sha1': 'SHA-1', + 'sha256': 'SHA-256', + 'sha-256': 'SHA-256', + 'sha384': 'SHA-384', + 'sha-384': 'SHA-384', + 'sha-512': 'SHA-512', + 'sha512': 'SHA-512' +}; +var checks = []; +function checkNative (algo) { + if (global.process && !global.process.browser) { + return Promise.resolve(false) + } + if (!subtle || !subtle.importKey || !subtle.deriveBits) { + return Promise.resolve(false) + } + if (checks[algo] !== undefined) { + return checks[algo] + } + ZERO_BUF = ZERO_BUF || Buffer.alloc(8); + var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) + .then(function () { + return true + }).catch(function () { + return false + }); + checks[algo] = prom; + return prom +} + +function browserPbkdf2 (password, salt, iterations, length, algo) { + return subtle.importKey( + 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits'] + ).then(function (key) { + return subtle.deriveBits({ + name: 'PBKDF2', + salt: salt, + iterations: iterations, + hash: { + name: algo + } + }, key, length << 3) + }).then(function (res) { + return Buffer.from(res) + }) +} + +function resolvePromise (promise, callback) { + promise.then(function (out) { + process.nextTick(function () { + callback(null, out); + }); + }, function (e) { + process.nextTick(function () { + callback(e); + }); + }); +} +module.exports = function (password, salt, iterations, keylen, digest, callback) { + if (typeof digest === 'function') { + callback = digest; + digest = undefined; + } + + digest = digest || 'sha1'; + var algo = toBrowser[digest.toLowerCase()]; + + if (!algo || typeof global.Promise !== 'function') { + return process.nextTick(function () { + var out; + try { + out = sync(password, salt, iterations, keylen, digest); + } catch (e) { + return callback(e) + } + callback(null, out); + }) + } + + checkParameters(password, salt, iterations, keylen); + if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') + if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding); + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding); + + resolvePromise(checkNative(algo).then(function (resp) { + if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) + + return sync(password, salt, iterations, keylen, digest) + }), callback); +}; + +}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); +},{"./default-encoding":35,"./precondition":36,"./sync":37,"_process":8,"safe-buffer":40}],35:[function(require,module,exports){ +(function (process){(function (){ +var defaultEncoding; +/* istanbul ignore next */ +if (process.browser) { + defaultEncoding = 'utf-8'; +} else { + var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10); + + defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'; +} +module.exports = defaultEncoding; + +}).call(this);}).call(this,require('_process')); +},{"_process":8}],36:[function(require,module,exports){ +(function (Buffer){(function (){ +var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs + +function checkBuffer (buf, name) { + if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { + throw new TypeError(name + ' must be a buffer or string') + } +} + +module.exports = function (password, salt, iterations, keylen) { + checkBuffer(password, 'Password'); + checkBuffer(salt, 'Salt'); + + if (typeof iterations !== 'number') { + throw new TypeError('Iterations not a number') + } + + if (iterations < 0) { + throw new TypeError('Bad iterations') + } + + if (typeof keylen !== 'number') { + throw new TypeError('Key length not a number') + } + + if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ + throw new TypeError('Bad key length') + } +}; + +}).call(this);}).call(this,{"isBuffer":require("../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js")}); +},{"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js":7}],37:[function(require,module,exports){ +var md5 = require('create-hash/md5'); +var RIPEMD160 = require('ripemd160'); +var sha = require('sha.js'); + +var checkParameters = require('./precondition'); +var defaultEncoding = require('./default-encoding'); +var Buffer = require('safe-buffer').Buffer; +var ZEROS = Buffer.alloc(128); +var sizes = { + md5: 16, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64, + rmd160: 20, + ripemd160: 20 +}; + +function Hmac (alg, key, saltLen) { + var hash = getDigest(alg); + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64; + + if (key.length > blocksize) { + key = hash(key); + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize); + } + + var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]); + var opad = Buffer.allocUnsafe(blocksize + sizes[alg]); + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36; + opad[i] = key[i] ^ 0x5C; + } + + var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4); + ipad.copy(ipad1, 0, 0, blocksize); + this.ipad1 = ipad1; + this.ipad2 = ipad; + this.opad = opad; + this.alg = alg; + this.blocksize = blocksize; + this.hash = hash; + this.size = sizes[alg]; +} + +Hmac.prototype.run = function (data, ipad) { + data.copy(ipad, this.blocksize); + var h = this.hash(ipad); + h.copy(this.opad, this.blocksize); + return this.hash(this.opad) +}; + +function getDigest (alg) { + function shaFunc (data) { + return sha(alg).update(data).digest() + } + function rmd160Func (data) { + return new RIPEMD160().update(data).digest() + } + + if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func + if (alg === 'md5') return md5 + return shaFunc +} + +function pbkdf2 (password, salt, iterations, keylen, digest) { + checkParameters(password, salt, iterations, keylen); + + if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding); + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding); + + digest = digest || 'sha1'; + + var hmac = new Hmac(digest, password, salt.length); + + var DK = Buffer.allocUnsafe(keylen); + var block1 = Buffer.allocUnsafe(salt.length + 4); + salt.copy(block1, 0, 0, salt.length); + + var destPos = 0; + var hLen = sizes[digest]; + var l = Math.ceil(keylen / hLen); + + for (var i = 1; i <= l; i++) { + block1.writeUInt32BE(i, salt.length); + + var T = hmac.run(block1, hmac.ipad1); + var U = T; + + for (var j = 1; j < iterations; j++) { + U = hmac.run(U, hmac.ipad2); + for (var k = 0; k < hLen; k++) T[k] ^= U[k]; + } + + T.copy(DK, destPos); + destPos += hLen; + } + + return DK +} + +module.exports = pbkdf2; + +},{"./default-encoding":35,"./precondition":36,"create-hash/md5":29,"ripemd160":39,"safe-buffer":40,"sha.js":42}],38:[function(require,module,exports){ +(function (process,global){(function (){ + +// limit of Crypto.getRandomValues() +// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues +var MAX_BYTES = 65536; + +// Node supports requesting up to this number of bytes +// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 +var MAX_UINT32 = 4294967295; + +function oldBrowser () { + throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') +} + +var Buffer = require('safe-buffer').Buffer; +var crypto = global.crypto || global.msCrypto; + +if (crypto && crypto.getRandomValues) { + module.exports = randomBytes; +} else { + module.exports = oldBrowser; +} + +function randomBytes (size, cb) { + // phantomjs needs to throw + if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') + + var bytes = Buffer.allocUnsafe(size); + + if (size > 0) { // getRandomValues fails on IE if size == 0 + if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues + // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues + for (var generated = 0; generated < size; generated += MAX_BYTES) { + // buffer.slice automatically checks if the end is past the end of + // the buffer so we don't have to here + crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)); + } + } else { + crypto.getRandomValues(bytes); + } + } + + if (typeof cb === 'function') { + return process.nextTick(function () { + cb(null, bytes); + }) + } + + return bytes +} + +}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); +},{"_process":8,"safe-buffer":40}],39:[function(require,module,exports){ +var Buffer = require('buffer').Buffer; +var inherits = require('inherits'); +var HashBase = require('hash-base'); + +var ARRAY16 = new Array(16); + +var 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 +]; + +var 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 +]; + +var 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 +]; + +var 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 +]; + +var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]; +var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]; + +function RIPEMD160 () { + HashBase.call(this, 64); + + // state + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; +} + +inherits(RIPEMD160, HashBase); + +RIPEMD160.prototype._update = function () { + var words = ARRAY16; + for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4); + + var al = this._a | 0; + var bl = this._b | 0; + var cl = this._c | 0; + var dl = this._d | 0; + var el = this._e | 0; + + var ar = this._a | 0; + var br = this._b | 0; + var cr = this._c | 0; + var dr = this._d | 0; + var er = this._e | 0; + + // computation + for (var i = 0; i < 80; i += 1) { + var tl; + var tr; + if (i < 16) { + tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]); + tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]); + } else if (i < 32) { + tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]); + tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]); + } else if (i < 48) { + tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]); + tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]); + } else if (i < 64) { + tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]); + tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]); + } else { // if (i<80) { + tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]); + tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]); + } + + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = tl; + + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = tr; + } + + // update state + var t = (this._b + cl + dr) | 0; + this._b = (this._c + dl + er) | 0; + this._c = (this._d + el + ar) | 0; + this._d = (this._e + al + br) | 0; + this._e = (this._a + bl + cr) | 0; + this._a = t; +}; + +RIPEMD160.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80; + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64); + this._update(); + this._blockOffset = 0; + } + + this._block.fill(0, this._blockOffset, 56); + this._block.writeUInt32LE(this._length[0], 56); + this._block.writeUInt32LE(this._length[1], 60); + this._update(); + + // produce result + var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20); + buffer.writeInt32LE(this._a, 0); + buffer.writeInt32LE(this._b, 4); + buffer.writeInt32LE(this._c, 8); + buffer.writeInt32LE(this._d, 12); + buffer.writeInt32LE(this._e, 16); + return buffer +}; + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fn1 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn2 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 +} + +function fn3 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn4 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 +} + +function fn5 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 +} + +module.exports = RIPEMD160; + +},{"buffer":3,"hash-base":30,"inherits":31}],40:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer'); +var Buffer = buffer.Buffer; + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key]; + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer; +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports); + exports.Buffer = SafeBuffer; +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer); + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +}; + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size); + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf +}; + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +}; + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +}; + +},{"buffer":3}],41:[function(require,module,exports){ +var Buffer = require('safe-buffer').Buffer; + +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = Buffer.alloc(blockSize); + this._finalSize = finalSize; + this._blockSize = blockSize; + this._len = 0; +} + +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8'; + data = Buffer.from(data, enc); + } + + var block = this._block; + var blockSize = this._blockSize; + var length = data.length; + var accum = this._len; + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize; + var remainder = Math.min(length - offset, blockSize - assigned); + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i]; + } + + accum += remainder; + offset += remainder; + + if ((accum % blockSize) === 0) { + this._update(block); + } + } + + this._len += length; + return this +}; + +Hash.prototype.digest = function (enc) { + var rem = this._len % this._blockSize; + + this._block[rem] = 0x80; + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1); + + if (rem >= this._finalSize) { + this._update(this._block); + this._block.fill(0); + } + + var bits = this._len * 8; + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4); + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0; + var highBits = (bits - lowBits) / 0x100000000; + + this._block.writeUInt32BE(highBits, this._blockSize - 8); + this._block.writeUInt32BE(lowBits, this._blockSize - 4); + } + + this._update(this._block); + var hash = this._hash(); + + return enc ? hash.toString(enc) : hash +}; + +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +}; + +module.exports = Hash; + +},{"safe-buffer":40}],42:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase(); + + var Algorithm = exports[algorithm]; + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +}; + +exports.sha = require('./sha'); +exports.sha1 = require('./sha1'); +exports.sha224 = require('./sha224'); +exports.sha256 = require('./sha256'); +exports.sha384 = require('./sha384'); +exports.sha512 = require('./sha512'); + +},{"./sha":43,"./sha1":44,"./sha224":45,"./sha256":46,"./sha384":47,"./sha512":48}],43:[function(require,module,exports){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ + +var inherits = require('inherits'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +]; + +var W = new Array(80); + +function Sha () { + this.init(); + this._w = W; + + Hash.call(this, 64, 56); +} + +inherits(Sha, Hash); + +Sha.prototype.init = function () { + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; + + return this +}; + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0; + + e = d; + d = c; + c = rotl30(b); + b = a; + a = t; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; +}; + +Sha.prototype._hash = function () { + var H = Buffer.allocUnsafe(20); + + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + + return H +}; + +module.exports = Sha; + +},{"./hash":41,"inherits":31,"safe-buffer":40}],44:[function(require,module,exports){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var inherits = require('inherits'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +]; + +var W = new Array(80); + +function Sha1 () { + this.init(); + this._w = W; + + Hash.call(this, 64, 56); +} + +inherits(Sha1, Hash); + +Sha1.prototype.init = function () { + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; + + return this +}; + +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha1.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]); + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0; + + e = d; + d = c; + c = rotl30(b); + b = a; + a = t; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; +}; + +Sha1.prototype._hash = function () { + var H = Buffer.allocUnsafe(20); + + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + + return H +}; + +module.exports = Sha1; + +},{"./hash":41,"inherits":31,"safe-buffer":40}],45:[function(require,module,exports){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = require('inherits'); +var Sha256 = require('./sha256'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var W = new Array(64); + +function Sha224 () { + this.init(); + + this._w = W; // new Array(64) + + Hash.call(this, 64, 56); +} + +inherits(Sha224, Sha256); + +Sha224.prototype.init = function () { + this._a = 0xc1059ed8; + this._b = 0x367cd507; + this._c = 0x3070dd17; + this._d = 0xf70e5939; + this._e = 0xffc00b31; + this._f = 0x68581511; + this._g = 0x64f98fa7; + this._h = 0xbefa4fa4; + + return this +}; + +Sha224.prototype._hash = function () { + var H = Buffer.allocUnsafe(28); + + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + + return H +}; + +module.exports = Sha224; + +},{"./hash":41,"./sha256":46,"inherits":31,"safe-buffer":40}],46:[function(require,module,exports){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = require('inherits'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +]; + +var W = new Array(64); + +function Sha256 () { + this.init(); + + this._w = W; // new Array(64) + + Hash.call(this, 64, 56); +} + +inherits(Sha256, Hash); + +Sha256.prototype.init = function () { + this._a = 0x6a09e667; + this._b = 0xbb67ae85; + this._c = 0x3c6ef372; + this._d = 0xa54ff53a; + this._e = 0x510e527f; + this._f = 0x9b05688c; + this._g = 0x1f83d9ab; + this._h = 0x5be0cd19; + + return this +}; + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + var f = this._f | 0; + var g = this._g | 0; + var h = this._h | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0; + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0; + var T2 = (sigma0(a) + maj(a, b, c)) | 0; + + h = g; + g = f; + f = e; + e = (d + T1) | 0; + d = c; + c = b; + b = a; + a = (T1 + T2) | 0; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; + this._f = (f + this._f) | 0; + this._g = (g + this._g) | 0; + this._h = (h + this._h) | 0; +}; + +Sha256.prototype._hash = function () { + var H = Buffer.allocUnsafe(32); + + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + H.writeInt32BE(this._h, 28); + + return H +}; + +module.exports = Sha256; + +},{"./hash":41,"inherits":31,"safe-buffer":40}],47:[function(require,module,exports){ +var inherits = require('inherits'); +var SHA512 = require('./sha512'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var W = new Array(160); + +function Sha384 () { + this.init(); + this._w = W; + + Hash.call(this, 128, 112); +} + +inherits(Sha384, SHA512); + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d; + this._bh = 0x629a292a; + this._ch = 0x9159015a; + this._dh = 0x152fecd8; + this._eh = 0x67332667; + this._fh = 0x8eb44a87; + this._gh = 0xdb0c2e0d; + this._hh = 0x47b5481d; + + this._al = 0xc1059ed8; + this._bl = 0x367cd507; + this._cl = 0x3070dd17; + this._dl = 0xf70e5939; + this._el = 0xffc00b31; + this._fl = 0x68581511; + this._gl = 0x64f98fa7; + this._hl = 0xbefa4fa4; + + return this +}; + +Sha384.prototype._hash = function () { + var H = Buffer.allocUnsafe(48); + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + + return H +}; + +module.exports = Sha384; + +},{"./hash":41,"./sha512":48,"inherits":31,"safe-buffer":40}],48:[function(require,module,exports){ +var inherits = require('inherits'); +var Hash = require('./hash'); +var Buffer = require('safe-buffer').Buffer; + +var 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 +]; + +var W = new Array(160); + +function Sha512 () { + this.init(); + this._w = W; + + Hash.call(this, 128, 112); +} + +inherits(Sha512, Hash); + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667; + this._bh = 0xbb67ae85; + this._ch = 0x3c6ef372; + this._dh = 0xa54ff53a; + this._eh = 0x510e527f; + this._fh = 0x9b05688c; + this._gh = 0x1f83d9ab; + this._hh = 0x5be0cd19; + + this._al = 0xf3bcc908; + this._bl = 0x84caa73b; + this._cl = 0xfe94f82b; + this._dl = 0x5f1d36f1; + this._el = 0xade682d1; + this._fl = 0x2b3e6c1f; + this._gl = 0xfb41bd6b; + this._hl = 0x137e2179; + + return this +}; + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w; + + var ah = this._ah | 0; + var bh = this._bh | 0; + var ch = this._ch | 0; + var dh = this._dh | 0; + var eh = this._eh | 0; + var fh = this._fh | 0; + var gh = this._gh | 0; + var hh = this._hh | 0; + + var al = this._al | 0; + var bl = this._bl | 0; + var cl = this._cl | 0; + var dl = this._dl | 0; + var el = this._el | 0; + var fl = this._fl | 0; + var gl = this._gl | 0; + var hl = this._hl | 0; + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4); + W[i + 1] = M.readInt32BE(i * 4 + 4); + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2]; + var xl = W[i - 15 * 2 + 1]; + var gamma0 = Gamma0(xh, xl); + var gamma0l = Gamma0l(xl, xh); + + xh = W[i - 2 * 2]; + xl = W[i - 2 * 2 + 1]; + var gamma1 = Gamma1(xh, xl); + var gamma1l = Gamma1l(xl, xh); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2]; + var Wi7l = W[i - 7 * 2 + 1]; + + var Wi16h = W[i - 16 * 2]; + var Wi16l = W[i - 16 * 2 + 1]; + + var Wil = (gamma0l + Wi7l) | 0; + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0; + Wil = (Wil + gamma1l) | 0; + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0; + Wil = (Wil + Wi16l) | 0; + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0; + + W[i] = Wih; + W[i + 1] = Wil; + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j]; + Wil = W[j + 1]; + + var majh = maj(ah, bh, ch); + var majl = maj(al, bl, cl); + + var sigma0h = sigma0(ah, al); + var sigma0l = sigma0(al, ah); + var sigma1h = sigma1(eh, el); + var sigma1l = sigma1(el, eh); + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j]; + var Kil = K[j + 1]; + + var chh = Ch(eh, fh, gh); + var chl = Ch(el, fl, gl); + + var t1l = (hl + sigma1l) | 0; + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0; + t1l = (t1l + chl) | 0; + t1h = (t1h + chh + getCarry(t1l, chl)) | 0; + t1l = (t1l + Kil) | 0; + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0; + t1l = (t1l + Wil) | 0; + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0; + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0; + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0; + + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + getCarry(el, dl)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + getCarry(al, t1l)) | 0; + } + + this._al = (this._al + al) | 0; + this._bl = (this._bl + bl) | 0; + this._cl = (this._cl + cl) | 0; + this._dl = (this._dl + dl) | 0; + this._el = (this._el + el) | 0; + this._fl = (this._fl + fl) | 0; + this._gl = (this._gl + gl) | 0; + this._hl = (this._hl + hl) | 0; + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0; + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0; + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0; + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0; + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0; + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0; + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0; + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0; +}; + +Sha512.prototype._hash = function () { + var H = Buffer.allocUnsafe(64); + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + writeInt64BE(this._gh, this._gl, 48); + writeInt64BE(this._hh, this._hl, 56); + + return H +}; + +module.exports = Sha512; + +},{"./hash":41,"inherits":31,"safe-buffer":40}],49:[function(require,module,exports){ +Object.defineProperty(exports, "__esModule", { value: true }); +// browserify by default only pulls in files that are hard coded in requires +// In order of last to first in this file, the default wordlist will be chosen +// based on what is present. (Bundles may remove wordlists they don't need) +const wordlists = {}; +exports.wordlists = wordlists; +let _default; +exports._default = _default; +try { + exports._default = _default = require('./wordlists/czech.json'); + wordlists.czech = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/chinese_simplified.json'); + wordlists.chinese_simplified = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/chinese_traditional.json'); + wordlists.chinese_traditional = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/korean.json'); + wordlists.korean = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/french.json'); + wordlists.french = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/italian.json'); + wordlists.italian = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/spanish.json'); + wordlists.spanish = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/japanese.json'); + wordlists.japanese = _default; + wordlists.JA = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/portuguese.json'); + wordlists.portuguese = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/english.json'); + wordlists.english = _default; + wordlists.EN = _default; +} +catch (err) { } + +},{"./wordlists/chinese_simplified.json":51,"./wordlists/chinese_traditional.json":undefined,"./wordlists/czech.json":undefined,"./wordlists/english.json":52,"./wordlists/french.json":undefined,"./wordlists/italian.json":undefined,"./wordlists/japanese.json":53,"./wordlists/korean.json":undefined,"./wordlists/portuguese.json":54,"./wordlists/spanish.json":undefined}],50:[function(require,module,exports){ +(function (Buffer){(function (){ +Object.defineProperty(exports, "__esModule", { value: true }); +const createHash = require("create-hash"); +const pbkdf2_1 = require("pbkdf2"); +const randomBytes = require("randombytes"); +const _wordlists_1 = require("./_wordlists"); +let DEFAULT_WORDLIST = _wordlists_1._default; +const INVALID_MNEMONIC = 'Invalid mnemonic'; +const INVALID_ENTROPY = 'Invalid entropy'; +const INVALID_CHECKSUM = 'Invalid mnemonic checksum'; +const WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\n' + + 'Please pass a 2048 word array explicitly.'; +function pbkdf2Promise(password, saltMixin, iterations, keylen, digest) { + return Promise.resolve().then(() => new Promise((resolve, reject) => { + const callback = (err, derivedKey) => { + if (err) { + return reject(err); + } + else { + return resolve(derivedKey); + } + }; + pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback); + })); +} +function normalize(str) { + return (str || '').normalize('NFKD'); +} +function lpad(str, padString, length) { + while (str.length < length) { + str = padString + str; + } + return str; +} +function binaryToByte(bin) { + return parseInt(bin, 2); +} +function bytesToBinary(bytes) { + return bytes.map((x) => lpad(x.toString(2), '0', 8)).join(''); +} +function deriveChecksumBits(entropyBuffer) { + const ENT = entropyBuffer.length * 8; + const CS = ENT / 32; + const hash = createHash('sha256') + .update(entropyBuffer) + .digest(); + return bytesToBinary(Array.from(hash)).slice(0, CS); +} +function salt(password) { + return 'mnemonic' + (password || ''); +} +function mnemonicToSeedSync(mnemonic, password) { + const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); + const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); + return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); +} +exports.mnemonicToSeedSync = mnemonicToSeedSync; +function mnemonicToSeed(mnemonic, password) { + return Promise.resolve().then(() => { + const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); + const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); + return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); + }); +} +exports.mnemonicToSeed = mnemonicToSeed; +function mnemonicToEntropy(mnemonic, wordlist) { + wordlist = wordlist || DEFAULT_WORDLIST; + if (!wordlist) { + throw new Error(WORDLIST_REQUIRED); + } + const words = normalize(mnemonic).split(' '); + if (words.length % 3 !== 0) { + throw new Error(INVALID_MNEMONIC); + } + // convert word indices to 11 bit binary strings + const bits = words + .map((word) => { + const index = wordlist.indexOf(word); + if (index === -1) { + throw new Error(INVALID_MNEMONIC); + } + return lpad(index.toString(2), '0', 11); + }) + .join(''); + // split the binary string into ENT/CS + const dividerIndex = Math.floor(bits.length / 33) * 32; + const entropyBits = bits.slice(0, dividerIndex); + const checksumBits = bits.slice(dividerIndex); + // calculate the checksum and compare + const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte); + if (entropyBytes.length < 16) { + throw new Error(INVALID_ENTROPY); + } + if (entropyBytes.length > 32) { + throw new Error(INVALID_ENTROPY); + } + if (entropyBytes.length % 4 !== 0) { + throw new Error(INVALID_ENTROPY); + } + const entropy = Buffer.from(entropyBytes); + const newChecksum = deriveChecksumBits(entropy); + if (newChecksum !== checksumBits) { + throw new Error(INVALID_CHECKSUM); + } + return entropy.toString('hex'); +} +exports.mnemonicToEntropy = mnemonicToEntropy; +function entropyToMnemonic(entropy, wordlist) { + if (!Buffer.isBuffer(entropy)) { + entropy = Buffer.from(entropy, 'hex'); + } + wordlist = wordlist || DEFAULT_WORDLIST; + if (!wordlist) { + throw new Error(WORDLIST_REQUIRED); + } + // 128 <= ENT <= 256 + if (entropy.length < 16) { + throw new TypeError(INVALID_ENTROPY); + } + if (entropy.length > 32) { + throw new TypeError(INVALID_ENTROPY); + } + if (entropy.length % 4 !== 0) { + throw new TypeError(INVALID_ENTROPY); + } + const entropyBits = bytesToBinary(Array.from(entropy)); + const checksumBits = deriveChecksumBits(entropy); + const bits = entropyBits + checksumBits; + const chunks = bits.match(/(.{1,11})/g); + const words = chunks.map((binary) => { + const index = binaryToByte(binary); + return wordlist[index]; + }); + return wordlist[0] === '\u3042\u3044\u3053\u304f\u3057\u3093' // Japanese wordlist + ? words.join('\u3000') + : words.join(' '); +} +exports.entropyToMnemonic = entropyToMnemonic; +function generateMnemonic(strength, rng, wordlist) { + strength = strength || 128; + if (strength % 32 !== 0) { + throw new TypeError(INVALID_ENTROPY); + } + rng = rng || randomBytes; + return entropyToMnemonic(rng(strength / 8), wordlist); +} +exports.generateMnemonic = generateMnemonic; +function validateMnemonic(mnemonic, wordlist) { + try { + mnemonicToEntropy(mnemonic, wordlist); + } + catch (e) { + return false; + } + return true; +} +exports.validateMnemonic = validateMnemonic; +function setDefaultWordlist(language) { + const result = _wordlists_1.wordlists[language]; + if (result) { + DEFAULT_WORDLIST = result; + } + else { + throw new Error('Could not find wordlist for language "' + language + '"'); + } +} +exports.setDefaultWordlist = setDefaultWordlist; +function getDefaultWordlist() { + if (!DEFAULT_WORDLIST) { + throw new Error('No Default Wordlist set'); + } + return Object.keys(_wordlists_1.wordlists).filter((lang) => { + if (lang === 'JA' || lang === 'EN') { + return false; + } + return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]); + })[0]; +} +exports.getDefaultWordlist = getDefaultWordlist; +var _wordlists_2 = require("./_wordlists"); +exports.wordlists = _wordlists_2.wordlists; + +}).call(this);}).call(this,require("buffer").Buffer); +},{"./_wordlists":49,"buffer":3,"create-hash":28,"pbkdf2":33,"randombytes":38}],51:[function(require,module,exports){ +module.exports=[ + "的", + "一", + "是", + "在", + "不", + "了", + "有", + "和", + "人", + "这", + "中", + "大", + "为", + "上", + "个", + "国", + "我", + "以", + "要", + "他", + "时", + "来", + "用", + "们", + "生", + "到", + "作", + "地", + "于", + "出", + "就", + "分", + "对", + "成", + "会", + "可", + "主", + "发", + "年", + "动", + "同", + "工", + "也", + "能", + "下", + "过", + "子", + "说", + "产", + "种", + "面", + "而", + "方", + "后", + "多", + "定", + "行", + "学", + "法", + "所", + "民", + "得", + "经", + "十", + "三", + "之", + "进", + "着", + "等", + "部", + "度", + "家", + "电", + "力", + "里", + "如", + "水", + "化", + "高", + "自", + "二", + "理", + "起", + "小", + "物", + "现", + "实", + "加", + "量", + "都", + "两", + "体", + "制", + "机", + "当", + "使", + "点", + "从", + "业", + "本", + "去", + "把", + "性", + "好", + "应", + "开", + "它", + "合", + "还", + "因", + "由", + "其", + "些", + "然", + "前", + "外", + "天", + "政", + "四", + "日", + "那", + "社", + "义", + "事", + "平", + "形", + "相", + "全", + "表", + "间", + "样", + "与", + "关", + "各", + "重", + "新", + "线", + "内", + "数", + "正", + "心", + "反", + "你", + "明", + "看", + "原", + "又", + "么", + "利", + "比", + "或", + "但", + "质", + "气", + "第", + "向", + "道", + "命", + "此", + "变", + "条", + "只", + "没", + "结", + "解", + "问", + "意", + "建", + "月", + "公", + "无", + "系", + "军", + "很", + "情", + "者", + "最", + "立", + "代", + "想", + "已", + "通", + "并", + "提", + "直", + "题", + "党", + "程", + "展", + "五", + "果", + "料", + "象", + "员", + "革", + "位", + "入", + "常", + "文", + "总", + "次", + "品", + "式", + "活", + "设", + "及", + "管", + "特", + "件", + "长", + "求", + "老", + "头", + "基", + "资", + "边", + "流", + "路", + "级", + "少", + "图", + "山", + "统", + "接", + "知", + "较", + "将", + "组", + "见", + "计", + "别", + "她", + "手", + "角", + "期", + "根", + "论", + "运", + "农", + "指", + "几", + "九", + "区", + "强", + "放", + "决", + "西", + "被", + "干", + "做", + "必", + "战", + "先", + "回", + "则", + "任", + "取", + "据", + "处", + "队", + "南", + "给", + "色", + "光", + "门", + "即", + "保", + "治", + "北", + "造", + "百", + "规", + "热", + "领", + "七", + "海", + "口", + "东", + "导", + "器", + "压", + "志", + "世", + "金", + "增", + "争", + "济", + "阶", + "油", + "思", + "术", + "极", + "交", + "受", + "联", + "什", + "认", + "六", + "共", + "权", + "收", + "证", + "改", + "清", + "美", + "再", + "采", + "转", + "更", + "单", + "风", + "切", + "打", + "白", + "教", + "速", + "花", + "带", + "安", + "场", + "身", + "车", + "例", + "真", + "务", + "具", + "万", + "每", + "目", + "至", + "达", + "走", + "积", + "示", + "议", + "声", + "报", + "斗", + "完", + "类", + "八", + "离", + "华", + "名", + "确", + "才", + "科", + "张", + "信", + "马", + "节", + "话", + "米", + "整", + "空", + "元", + "况", + "今", + "集", + "温", + "传", + "土", + "许", + "步", + "群", + "广", + "石", + "记", + "需", + "段", + "研", + "界", + "拉", + "林", + "律", + "叫", + "且", + "究", + "观", + "越", + "织", + "装", + "影", + "算", + "低", + "持", + "音", + "众", + "书", + "布", + "复", + "容", + "儿", + "须", + "际", + "商", + "非", + "验", + "连", + "断", + "深", + "难", + "近", + "矿", + "千", + "周", + "委", + "素", + "技", + "备", + "半", + "办", + "青", + "省", + "列", + "习", + "响", + "约", + "支", + "般", + "史", + "感", + "劳", + "便", + "团", + "往", + "酸", + "历", + "市", + "克", + "何", + "除", + "消", + "构", + "府", + "称", + "太", + "准", + "精", + "值", + "号", + "率", + "族", + "维", + "划", + "选", + "标", + "写", + "存", + "候", + "毛", + "亲", + "快", + "效", + "斯", + "院", + "查", + "江", + "型", + "眼", + "王", + "按", + "格", + "养", + "易", + "置", + "派", + "层", + "片", + "始", + "却", + "专", + "状", + "育", + "厂", + "京", + "识", + "适", + "属", + "圆", + "包", + "火", + "住", + "调", + "满", + "县", + "局", + "照", + "参", + "红", + "细", + "引", + "听", + "该", + "铁", + "价", + "严", + "首", + "底", + "液", + "官", + "德", + "随", + "病", + "苏", + "失", + "尔", + "死", + "讲", + "配", + "女", + "黄", + "推", + "显", + "谈", + "罪", + "神", + "艺", + "呢", + "席", + "含", + "企", + "望", + "密", + "批", + "营", + "项", + "防", + "举", + "球", + "英", + "氧", + "势", + "告", + "李", + "台", + "落", + "木", + "帮", + "轮", + "破", + "亚", + "师", + "围", + "注", + "远", + "字", + "材", + "排", + "供", + "河", + "态", + "封", + "另", + "施", + "减", + "树", + "溶", + "怎", + "止", + "案", + "言", + "士", + "均", + "武", + "固", + "叶", + "鱼", + "波", + "视", + "仅", + "费", + "紧", + "爱", + "左", + "章", + "早", + "朝", + "害", + "续", + "轻", + "服", + "试", + "食", + "充", + "兵", + "源", + "判", + "护", + "司", + "足", + "某", + "练", + "差", + "致", + "板", + "田", + "降", + "黑", + "犯", + "负", + "击", + "范", + "继", + "兴", + "似", + "余", + "坚", + "曲", + "输", + "修", + "故", + "城", + "夫", + "够", + "送", + "笔", + "船", + "占", + "右", + "财", + "吃", + "富", + "春", + "职", + "觉", + "汉", + "画", + "功", + "巴", + "跟", + "虽", + "杂", + "飞", + "检", + "吸", + "助", + "升", + "阳", + "互", + "初", + "创", + "抗", + "考", + "投", + "坏", + "策", + "古", + "径", + "换", + "未", + "跑", + "留", + "钢", + "曾", + "端", + "责", + "站", + "简", + "述", + "钱", + "副", + "尽", + "帝", + "射", + "草", + "冲", + "承", + "独", + "令", + "限", + "阿", + "宣", + "环", + "双", + "请", + "超", + "微", + "让", + "控", + "州", + "良", + "轴", + "找", + "否", + "纪", + "益", + "依", + "优", + "顶", + "础", + "载", + "倒", + "房", + "突", + "坐", + "粉", + "敌", + "略", + "客", + "袁", + "冷", + "胜", + "绝", + "析", + "块", + "剂", + "测", + "丝", + "协", + "诉", + "念", + "陈", + "仍", + "罗", + "盐", + "友", + "洋", + "错", + "苦", + "夜", + "刑", + "移", + "频", + "逐", + "靠", + "混", + "母", + "短", + "皮", + "终", + "聚", + "汽", + "村", + "云", + "哪", + "既", + "距", + "卫", + "停", + "烈", + "央", + "察", + "烧", + "迅", + "境", + "若", + "印", + "洲", + "刻", + "括", + "激", + "孔", + "搞", + "甚", + "室", + "待", + "核", + "校", + "散", + "侵", + "吧", + "甲", + "游", + "久", + "菜", + "味", + "旧", + "模", + "湖", + "货", + "损", + "预", + "阻", + "毫", + "普", + "稳", + "乙", + "妈", + "植", + "息", + "扩", + "银", + "语", + "挥", + "酒", + "守", + "拿", + "序", + "纸", + "医", + "缺", + "雨", + "吗", + "针", + "刘", + "啊", + "急", + "唱", + "误", + "训", + "愿", + "审", + "附", + "获", + "茶", + "鲜", + "粮", + "斤", + "孩", + "脱", + "硫", + "肥", + "善", + "龙", + "演", + "父", + "渐", + "血", + "欢", + "械", + "掌", + "歌", + "沙", + "刚", + "攻", + "谓", + "盾", + "讨", + "晚", + "粒", + "乱", + "燃", + "矛", + "乎", + "杀", + "药", + "宁", + "鲁", + "贵", + "钟", + "煤", + "读", + "班", + "伯", + "香", + "介", + "迫", + "句", + "丰", + "培", + "握", + "兰", + "担", + "弦", + "蛋", + "沉", + "假", + "穿", + "执", + "答", + "乐", + "谁", + "顺", + "烟", + "缩", + "征", + "脸", + "喜", + "松", + "脚", + "困", + "异", + "免", + "背", + "星", + "福", + "买", + "染", + "井", + "概", + "慢", + "怕", + "磁", + "倍", + "祖", + "皇", + "促", + "静", + "补", + "评", + "翻", + "肉", + "践", + "尼", + "衣", + "宽", + "扬", + "棉", + "希", + "伤", + "操", + "垂", + "秋", + "宜", + "氢", + "套", + "督", + "振", + "架", + "亮", + "末", + "宪", + "庆", + "编", + "牛", + "触", + "映", + "雷", + "销", + "诗", + "座", + "居", + "抓", + "裂", + "胞", + "呼", + "娘", + "景", + "威", + "绿", + "晶", + "厚", + "盟", + "衡", + "鸡", + "孙", + "延", + "危", + "胶", + "屋", + "乡", + "临", + "陆", + "顾", + "掉", + "呀", + "灯", + "岁", + "措", + "束", + "耐", + "剧", + "玉", + "赵", + "跳", + "哥", + "季", + "课", + "凯", + "胡", + "额", + "款", + "绍", + "卷", + "齐", + "伟", + "蒸", + "殖", + "永", + "宗", + "苗", + "川", + "炉", + "岩", + "弱", + "零", + "杨", + "奏", + "沿", + "露", + "杆", + "探", + "滑", + "镇", + "饭", + "浓", + "航", + "怀", + "赶", + "库", + "夺", + "伊", + "灵", + "税", + "途", + "灭", + "赛", + "归", + "召", + "鼓", + "播", + "盘", + "裁", + "险", + "康", + "唯", + "录", + "菌", + "纯", + "借", + "糖", + "盖", + "横", + "符", + "私", + "努", + "堂", + "域", + "枪", + "润", + "幅", + "哈", + "竟", + "熟", + "虫", + "泽", + "脑", + "壤", + "碳", + "欧", + "遍", + "侧", + "寨", + "敢", + "彻", + "虑", + "斜", + "薄", + "庭", + "纳", + "弹", + "饲", + "伸", + "折", + "麦", + "湿", + "暗", + "荷", + "瓦", + "塞", + "床", + "筑", + "恶", + "户", + "访", + "塔", + "奇", + "透", + "梁", + "刀", + "旋", + "迹", + "卡", + "氯", + "遇", + "份", + "毒", + "泥", + "退", + "洗", + "摆", + "灰", + "彩", + "卖", + "耗", + "夏", + "择", + "忙", + "铜", + "献", + "硬", + "予", + "繁", + "圈", + "雪", + "函", + "亦", + "抽", + "篇", + "阵", + "阴", + "丁", + "尺", + "追", + "堆", + "雄", + "迎", + "泛", + "爸", + "楼", + "避", + "谋", + "吨", + "野", + "猪", + "旗", + "累", + "偏", + "典", + "馆", + "索", + "秦", + "脂", + "潮", + "爷", + "豆", + "忽", + "托", + "惊", + "塑", + "遗", + "愈", + "朱", + "替", + "纤", + "粗", + "倾", + "尚", + "痛", + "楚", + "谢", + "奋", + "购", + "磨", + "君", + "池", + "旁", + "碎", + "骨", + "监", + "捕", + "弟", + "暴", + "割", + "贯", + "殊", + "释", + "词", + "亡", + "壁", + "顿", + "宝", + "午", + "尘", + "闻", + "揭", + "炮", + "残", + "冬", + "桥", + "妇", + "警", + "综", + "招", + "吴", + "付", + "浮", + "遭", + "徐", + "您", + "摇", + "谷", + "赞", + "箱", + "隔", + "订", + "男", + "吹", + "园", + "纷", + "唐", + "败", + "宋", + "玻", + "巨", + "耕", + "坦", + "荣", + "闭", + "湾", + "键", + "凡", + "驻", + "锅", + "救", + "恩", + "剥", + "凝", + "碱", + "齿", + "截", + "炼", + "麻", + "纺", + "禁", + "废", + "盛", + "版", + "缓", + "净", + "睛", + "昌", + "婚", + "涉", + "筒", + "嘴", + "插", + "岸", + "朗", + "庄", + "街", + "藏", + "姑", + "贸", + "腐", + "奴", + "啦", + "惯", + "乘", + "伙", + "恢", + "匀", + "纱", + "扎", + "辩", + "耳", + "彪", + "臣", + "亿", + "璃", + "抵", + "脉", + "秀", + "萨", + "俄", + "网", + "舞", + "店", + "喷", + "纵", + "寸", + "汗", + "挂", + "洪", + "贺", + "闪", + "柬", + "爆", + "烯", + "津", + "稻", + "墙", + "软", + "勇", + "像", + "滚", + "厘", + "蒙", + "芳", + "肯", + "坡", + "柱", + "荡", + "腿", + "仪", + "旅", + "尾", + "轧", + "冰", + "贡", + "登", + "黎", + "削", + "钻", + "勒", + "逃", + "障", + "氨", + "郭", + "峰", + "币", + "港", + "伏", + "轨", + "亩", + "毕", + "擦", + "莫", + "刺", + "浪", + "秘", + "援", + "株", + "健", + "售", + "股", + "岛", + "甘", + "泡", + "睡", + "童", + "铸", + "汤", + "阀", + "休", + "汇", + "舍", + "牧", + "绕", + "炸", + "哲", + "磷", + "绩", + "朋", + "淡", + "尖", + "启", + "陷", + "柴", + "呈", + "徒", + "颜", + "泪", + "稍", + "忘", + "泵", + "蓝", + "拖", + "洞", + "授", + "镜", + "辛", + "壮", + "锋", + "贫", + "虚", + "弯", + "摩", + "泰", + "幼", + "廷", + "尊", + "窗", + "纲", + "弄", + "隶", + "疑", + "氏", + "宫", + "姐", + "震", + "瑞", + "怪", + "尤", + "琴", + "循", + "描", + "膜", + "违", + "夹", + "腰", + "缘", + "珠", + "穷", + "森", + "枝", + "竹", + "沟", + "催", + "绳", + "忆", + "邦", + "剩", + "幸", + "浆", + "栏", + "拥", + "牙", + "贮", + "礼", + "滤", + "钠", + "纹", + "罢", + "拍", + "咱", + "喊", + "袖", + "埃", + "勤", + "罚", + "焦", + "潜", + "伍", + "墨", + "欲", + "缝", + "姓", + "刊", + "饱", + "仿", + "奖", + "铝", + "鬼", + "丽", + "跨", + "默", + "挖", + "链", + "扫", + "喝", + "袋", + "炭", + "污", + "幕", + "诸", + "弧", + "励", + "梅", + "奶", + "洁", + "灾", + "舟", + "鉴", + "苯", + "讼", + "抱", + "毁", + "懂", + "寒", + "智", + "埔", + "寄", + "届", + "跃", + "渡", + "挑", + "丹", + "艰", + "贝", + "碰", + "拔", + "爹", + "戴", + "码", + "梦", + "芽", + "熔", + "赤", + "渔", + "哭", + "敬", + "颗", + "奔", + "铅", + "仲", + "虎", + "稀", + "妹", + "乏", + "珍", + "申", + "桌", + "遵", + "允", + "隆", + "螺", + "仓", + "魏", + "锐", + "晓", + "氮", + "兼", + "隐", + "碍", + "赫", + "拨", + "忠", + "肃", + "缸", + "牵", + "抢", + "博", + "巧", + "壳", + "兄", + "杜", + "讯", + "诚", + "碧", + "祥", + "柯", + "页", + "巡", + "矩", + "悲", + "灌", + "龄", + "伦", + "票", + "寻", + "桂", + "铺", + "圣", + "恐", + "恰", + "郑", + "趣", + "抬", + "荒", + "腾", + "贴", + "柔", + "滴", + "猛", + "阔", + "辆", + "妻", + "填", + "撤", + "储", + "签", + "闹", + "扰", + "紫", + "砂", + "递", + "戏", + "吊", + "陶", + "伐", + "喂", + "疗", + "瓶", + "婆", + "抚", + "臂", + "摸", + "忍", + "虾", + "蜡", + "邻", + "胸", + "巩", + "挤", + "偶", + "弃", + "槽", + "劲", + "乳", + "邓", + "吉", + "仁", + "烂", + "砖", + "租", + "乌", + "舰", + "伴", + "瓜", + "浅", + "丙", + "暂", + "燥", + "橡", + "柳", + "迷", + "暖", + "牌", + "秧", + "胆", + "详", + "簧", + "踏", + "瓷", + "谱", + "呆", + "宾", + "糊", + "洛", + "辉", + "愤", + "竞", + "隙", + "怒", + "粘", + "乃", + "绪", + "肩", + "籍", + "敏", + "涂", + "熙", + "皆", + "侦", + "悬", + "掘", + "享", + "纠", + "醒", + "狂", + "锁", + "淀", + "恨", + "牲", + "霸", + "爬", + "赏", + "逆", + "玩", + "陵", + "祝", + "秒", + "浙", + "貌", + "役", + "彼", + "悉", + "鸭", + "趋", + "凤", + "晨", + "畜", + "辈", + "秩", + "卵", + "署", + "梯", + "炎", + "滩", + "棋", + "驱", + "筛", + "峡", + "冒", + "啥", + "寿", + "译", + "浸", + "泉", + "帽", + "迟", + "硅", + "疆", + "贷", + "漏", + "稿", + "冠", + "嫩", + "胁", + "芯", + "牢", + "叛", + "蚀", + "奥", + "鸣", + "岭", + "羊", + "凭", + "串", + "塘", + "绘", + "酵", + "融", + "盆", + "锡", + "庙", + "筹", + "冻", + "辅", + "摄", + "袭", + "筋", + "拒", + "僚", + "旱", + "钾", + "鸟", + "漆", + "沈", + "眉", + "疏", + "添", + "棒", + "穗", + "硝", + "韩", + "逼", + "扭", + "侨", + "凉", + "挺", + "碗", + "栽", + "炒", + "杯", + "患", + "馏", + "劝", + "豪", + "辽", + "勃", + "鸿", + "旦", + "吏", + "拜", + "狗", + "埋", + "辊", + "掩", + "饮", + "搬", + "骂", + "辞", + "勾", + "扣", + "估", + "蒋", + "绒", + "雾", + "丈", + "朵", + "姆", + "拟", + "宇", + "辑", + "陕", + "雕", + "偿", + "蓄", + "崇", + "剪", + "倡", + "厅", + "咬", + "驶", + "薯", + "刷", + "斥", + "番", + "赋", + "奉", + "佛", + "浇", + "漫", + "曼", + "扇", + "钙", + "桃", + "扶", + "仔", + "返", + "俗", + "亏", + "腔", + "鞋", + "棱", + "覆", + "框", + "悄", + "叔", + "撞", + "骗", + "勘", + "旺", + "沸", + "孤", + "吐", + "孟", + "渠", + "屈", + "疾", + "妙", + "惜", + "仰", + "狠", + "胀", + "谐", + "抛", + "霉", + "桑", + "岗", + "嘛", + "衰", + "盗", + "渗", + "脏", + "赖", + "涌", + "甜", + "曹", + "阅", + "肌", + "哩", + "厉", + "烃", + "纬", + "毅", + "昨", + "伪", + "症", + "煮", + "叹", + "钉", + "搭", + "茎", + "笼", + "酷", + "偷", + "弓", + "锥", + "恒", + "杰", + "坑", + "鼻", + "翼", + "纶", + "叙", + "狱", + "逮", + "罐", + "络", + "棚", + "抑", + "膨", + "蔬", + "寺", + "骤", + "穆", + "冶", + "枯", + "册", + "尸", + "凸", + "绅", + "坯", + "牺", + "焰", + "轰", + "欣", + "晋", + "瘦", + "御", + "锭", + "锦", + "丧", + "旬", + "锻", + "垄", + "搜", + "扑", + "邀", + "亭", + "酯", + "迈", + "舒", + "脆", + "酶", + "闲", + "忧", + "酚", + "顽", + "羽", + "涨", + "卸", + "仗", + "陪", + "辟", + "惩", + "杭", + "姚", + "肚", + "捉", + "飘", + "漂", + "昆", + "欺", + "吾", + "郎", + "烷", + "汁", + "呵", + "饰", + "萧", + "雅", + "邮", + "迁", + "燕", + "撒", + "姻", + "赴", + "宴", + "烦", + "债", + "帐", + "斑", + "铃", + "旨", + "醇", + "董", + "饼", + "雏", + "姿", + "拌", + "傅", + "腹", + "妥", + "揉", + "贤", + "拆", + "歪", + "葡", + "胺", + "丢", + "浩", + "徽", + "昂", + "垫", + "挡", + "览", + "贪", + "慰", + "缴", + "汪", + "慌", + "冯", + "诺", + "姜", + "谊", + "凶", + "劣", + "诬", + "耀", + "昏", + "躺", + "盈", + "骑", + "乔", + "溪", + "丛", + "卢", + "抹", + "闷", + "咨", + "刮", + "驾", + "缆", + "悟", + "摘", + "铒", + "掷", + "颇", + "幻", + "柄", + "惠", + "惨", + "佳", + "仇", + "腊", + "窝", + "涤", + "剑", + "瞧", + "堡", + "泼", + "葱", + "罩", + "霍", + "捞", + "胎", + "苍", + "滨", + "俩", + "捅", + "湘", + "砍", + "霞", + "邵", + "萄", + "疯", + "淮", + "遂", + "熊", + "粪", + "烘", + "宿", + "档", + "戈", + "驳", + "嫂", + "裕", + "徙", + "箭", + "捐", + "肠", + "撑", + "晒", + "辨", + "殿", + "莲", + "摊", + "搅", + "酱", + "屏", + "疫", + "哀", + "蔡", + "堵", + "沫", + "皱", + "畅", + "叠", + "阁", + "莱", + "敲", + "辖", + "钩", + "痕", + "坝", + "巷", + "饿", + "祸", + "丘", + "玄", + "溜", + "曰", + "逻", + "彭", + "尝", + "卿", + "妨", + "艇", + "吞", + "韦", + "怨", + "矮", + "歇" +]; + +},{}],52:[function(require,module,exports){ +module.exports=[ + "abandon", + "ability", + "able", + "about", + "above", + "absent", + "absorb", + "abstract", + "absurd", + "abuse", + "access", + "accident", + "account", + "accuse", + "achieve", + "acid", + "acoustic", + "acquire", + "across", + "act", + "action", + "actor", + "actress", + "actual", + "adapt", + "add", + "addict", + "address", + "adjust", + "admit", + "adult", + "advance", + "advice", + "aerobic", + "affair", + "afford", + "afraid", + "again", + "age", + "agent", + "agree", + "ahead", + "aim", + "air", + "airport", + "aisle", + "alarm", + "album", + "alcohol", + "alert", + "alien", + "all", + "alley", + "allow", + "almost", + "alone", + "alpha", + "already", + "also", + "alter", + "always", + "amateur", + "amazing", + "among", + "amount", + "amused", + "analyst", + "anchor", + "ancient", + "anger", + "angle", + "angry", + "animal", + "ankle", + "announce", + "annual", + "another", + "answer", + "antenna", + "antique", + "anxiety", + "any", + "apart", + "apology", + "appear", + "apple", + "approve", + "april", + "arch", + "arctic", + "area", + "arena", + "argue", + "arm", + "armed", + "armor", + "army", + "around", + "arrange", + "arrest", + "arrive", + "arrow", + "art", + "artefact", + "artist", + "artwork", + "ask", + "aspect", + "assault", + "asset", + "assist", + "assume", + "asthma", + "athlete", + "atom", + "attack", + "attend", + "attitude", + "attract", + "auction", + "audit", + "august", + "aunt", + "author", + "auto", + "autumn", + "average", + "avocado", + "avoid", + "awake", + "aware", + "away", + "awesome", + "awful", + "awkward", + "axis", + "baby", + "bachelor", + "bacon", + "badge", + "bag", + "balance", + "balcony", + "ball", + "bamboo", + "banana", + "banner", + "bar", + "barely", + "bargain", + "barrel", + "base", + "basic", + "basket", + "battle", + "beach", + "bean", + "beauty", + "because", + "become", + "beef", + "before", + "begin", + "behave", + "behind", + "believe", + "below", + "belt", + "bench", + "benefit", + "best", + "betray", + "better", + "between", + "beyond", + "bicycle", + "bid", + "bike", + "bind", + "biology", + "bird", + "birth", + "bitter", + "black", + "blade", + "blame", + "blanket", + "blast", + "bleak", + "bless", + "blind", + "blood", + "blossom", + "blouse", + "blue", + "blur", + "blush", + "board", + "boat", + "body", + "boil", + "bomb", + "bone", + "bonus", + "book", + "boost", + "border", + "boring", + "borrow", + "boss", + "bottom", + "bounce", + "box", + "boy", + "bracket", + "brain", + "brand", + "brass", + "brave", + "bread", + "breeze", + "brick", + "bridge", + "brief", + "bright", + "bring", + "brisk", + "broccoli", + "broken", + "bronze", + "broom", + "brother", + "brown", + "brush", + "bubble", + "buddy", + "budget", + "buffalo", + "build", + "bulb", + "bulk", + "bullet", + "bundle", + "bunker", + "burden", + "burger", + "burst", + "bus", + "business", + "busy", + "butter", + "buyer", + "buzz", + "cabbage", + "cabin", + "cable", + "cactus", + "cage", + "cake", + "call", + "calm", + "camera", + "camp", + "can", + "canal", + "cancel", + "candy", + "cannon", + "canoe", + "canvas", + "canyon", + "capable", + "capital", + "captain", + "car", + "carbon", + "card", + "cargo", + "carpet", + "carry", + "cart", + "case", + "cash", + "casino", + "castle", + "casual", + "cat", + "catalog", + "catch", + "category", + "cattle", + "caught", + "cause", + "caution", + "cave", + "ceiling", + "celery", + "cement", + "census", + "century", + "cereal", + "certain", + "chair", + "chalk", + "champion", + "change", + "chaos", + "chapter", + "charge", + "chase", + "chat", + "cheap", + "check", + "cheese", + "chef", + "cherry", + "chest", + "chicken", + "chief", + "child", + "chimney", + "choice", + "choose", + "chronic", + "chuckle", + "chunk", + "churn", + "cigar", + "cinnamon", + "circle", + "citizen", + "city", + "civil", + "claim", + "clap", + "clarify", + "claw", + "clay", + "clean", + "clerk", + "clever", + "click", + "client", + "cliff", + "climb", + "clinic", + "clip", + "clock", + "clog", + "close", + "cloth", + "cloud", + "clown", + "club", + "clump", + "cluster", + "clutch", + "coach", + "coast", + "coconut", + "code", + "coffee", + "coil", + "coin", + "collect", + "color", + "column", + "combine", + "come", + "comfort", + "comic", + "common", + "company", + "concert", + "conduct", + "confirm", + "congress", + "connect", + "consider", + "control", + "convince", + "cook", + "cool", + "copper", + "copy", + "coral", + "core", + "corn", + "correct", + "cost", + "cotton", + "couch", + "country", + "couple", + "course", + "cousin", + "cover", + "coyote", + "crack", + "cradle", + "craft", + "cram", + "crane", + "crash", + "crater", + "crawl", + "crazy", + "cream", + "credit", + "creek", + "crew", + "cricket", + "crime", + "crisp", + "critic", + "crop", + "cross", + "crouch", + "crowd", + "crucial", + "cruel", + "cruise", + "crumble", + "crunch", + "crush", + "cry", + "crystal", + "cube", + "culture", + "cup", + "cupboard", + "curious", + "current", + "curtain", + "curve", + "cushion", + "custom", + "cute", + "cycle", + "dad", + "damage", + "damp", + "dance", + "danger", + "daring", + "dash", + "daughter", + "dawn", + "day", + "deal", + "debate", + "debris", + "decade", + "december", + "decide", + "decline", + "decorate", + "decrease", + "deer", + "defense", + "define", + "defy", + "degree", + "delay", + "deliver", + "demand", + "demise", + "denial", + "dentist", + "deny", + "depart", + "depend", + "deposit", + "depth", + "deputy", + "derive", + "describe", + "desert", + "design", + "desk", + "despair", + "destroy", + "detail", + "detect", + "develop", + "device", + "devote", + "diagram", + "dial", + "diamond", + "diary", + "dice", + "diesel", + "diet", + "differ", + "digital", + "dignity", + "dilemma", + "dinner", + "dinosaur", + "direct", + "dirt", + "disagree", + "discover", + "disease", + "dish", + "dismiss", + "disorder", + "display", + "distance", + "divert", + "divide", + "divorce", + "dizzy", + "doctor", + "document", + "dog", + "doll", + "dolphin", + "domain", + "donate", + "donkey", + "donor", + "door", + "dose", + "double", + "dove", + "draft", + "dragon", + "drama", + "drastic", + "draw", + "dream", + "dress", + "drift", + "drill", + "drink", + "drip", + "drive", + "drop", + "drum", + "dry", + "duck", + "dumb", + "dune", + "during", + "dust", + "dutch", + "duty", + "dwarf", + "dynamic", + "eager", + "eagle", + "early", + "earn", + "earth", + "easily", + "east", + "easy", + "echo", + "ecology", + "economy", + "edge", + "edit", + "educate", + "effort", + "egg", + "eight", + "either", + "elbow", + "elder", + "electric", + "elegant", + "element", + "elephant", + "elevator", + "elite", + "else", + "embark", + "embody", + "embrace", + "emerge", + "emotion", + "employ", + "empower", + "empty", + "enable", + "enact", + "end", + "endless", + "endorse", + "enemy", + "energy", + "enforce", + "engage", + "engine", + "enhance", + "enjoy", + "enlist", + "enough", + "enrich", + "enroll", + "ensure", + "enter", + "entire", + "entry", + "envelope", + "episode", + "equal", + "equip", + "era", + "erase", + "erode", + "erosion", + "error", + "erupt", + "escape", + "essay", + "essence", + "estate", + "eternal", + "ethics", + "evidence", + "evil", + "evoke", + "evolve", + "exact", + "example", + "excess", + "exchange", + "excite", + "exclude", + "excuse", + "execute", + "exercise", + "exhaust", + "exhibit", + "exile", + "exist", + "exit", + "exotic", + "expand", + "expect", + "expire", + "explain", + "expose", + "express", + "extend", + "extra", + "eye", + "eyebrow", + "fabric", + "face", + "faculty", + "fade", + "faint", + "faith", + "fall", + "false", + "fame", + "family", + "famous", + "fan", + "fancy", + "fantasy", + "farm", + "fashion", + "fat", + "fatal", + "father", + "fatigue", + "fault", + "favorite", + "feature", + "february", + "federal", + "fee", + "feed", + "feel", + "female", + "fence", + "festival", + "fetch", + "fever", + "few", + "fiber", + "fiction", + "field", + "figure", + "file", + "film", + "filter", + "final", + "find", + "fine", + "finger", + "finish", + "fire", + "firm", + "first", + "fiscal", + "fish", + "fit", + "fitness", + "fix", + "flag", + "flame", + "flash", + "flat", + "flavor", + "flee", + "flight", + "flip", + "float", + "flock", + "floor", + "flower", + "fluid", + "flush", + "fly", + "foam", + "focus", + "fog", + "foil", + "fold", + "follow", + "food", + "foot", + "force", + "forest", + "forget", + "fork", + "fortune", + "forum", + "forward", + "fossil", + "foster", + "found", + "fox", + "fragile", + "frame", + "frequent", + "fresh", + "friend", + "fringe", + "frog", + "front", + "frost", + "frown", + "frozen", + "fruit", + "fuel", + "fun", + "funny", + "furnace", + "fury", + "future", + "gadget", + "gain", + "galaxy", + "gallery", + "game", + "gap", + "garage", + "garbage", + "garden", + "garlic", + "garment", + "gas", + "gasp", + "gate", + "gather", + "gauge", + "gaze", + "general", + "genius", + "genre", + "gentle", + "genuine", + "gesture", + "ghost", + "giant", + "gift", + "giggle", + "ginger", + "giraffe", + "girl", + "give", + "glad", + "glance", + "glare", + "glass", + "glide", + "glimpse", + "globe", + "gloom", + "glory", + "glove", + "glow", + "glue", + "goat", + "goddess", + "gold", + "good", + "goose", + "gorilla", + "gospel", + "gossip", + "govern", + "gown", + "grab", + "grace", + "grain", + "grant", + "grape", + "grass", + "gravity", + "great", + "green", + "grid", + "grief", + "grit", + "grocery", + "group", + "grow", + "grunt", + "guard", + "guess", + "guide", + "guilt", + "guitar", + "gun", + "gym", + "habit", + "hair", + "half", + "hammer", + "hamster", + "hand", + "happy", + "harbor", + "hard", + "harsh", + "harvest", + "hat", + "have", + "hawk", + "hazard", + "head", + "health", + "heart", + "heavy", + "hedgehog", + "height", + "hello", + "helmet", + "help", + "hen", + "hero", + "hidden", + "high", + "hill", + "hint", + "hip", + "hire", + "history", + "hobby", + "hockey", + "hold", + "hole", + "holiday", + "hollow", + "home", + "honey", + "hood", + "hope", + "horn", + "horror", + "horse", + "hospital", + "host", + "hotel", + "hour", + "hover", + "hub", + "huge", + "human", + "humble", + "humor", + "hundred", + "hungry", + "hunt", + "hurdle", + "hurry", + "hurt", + "husband", + "hybrid", + "ice", + "icon", + "idea", + "identify", + "idle", + "ignore", + "ill", + "illegal", + "illness", + "image", + "imitate", + "immense", + "immune", + "impact", + "impose", + "improve", + "impulse", + "inch", + "include", + "income", + "increase", + "index", + "indicate", + "indoor", + "industry", + "infant", + "inflict", + "inform", + "inhale", + "inherit", + "initial", + "inject", + "injury", + "inmate", + "inner", + "innocent", + "input", + "inquiry", + "insane", + "insect", + "inside", + "inspire", + "install", + "intact", + "interest", + "into", + "invest", + "invite", + "involve", + "iron", + "island", + "isolate", + "issue", + "item", + "ivory", + "jacket", + "jaguar", + "jar", + "jazz", + "jealous", + "jeans", + "jelly", + "jewel", + "job", + "join", + "joke", + "journey", + "joy", + "judge", + "juice", + "jump", + "jungle", + "junior", + "junk", + "just", + "kangaroo", + "keen", + "keep", + "ketchup", + "key", + "kick", + "kid", + "kidney", + "kind", + "kingdom", + "kiss", + "kit", + "kitchen", + "kite", + "kitten", + "kiwi", + "knee", + "knife", + "knock", + "know", + "lab", + "label", + "labor", + "ladder", + "lady", + "lake", + "lamp", + "language", + "laptop", + "large", + "later", + "latin", + "laugh", + "laundry", + "lava", + "law", + "lawn", + "lawsuit", + "layer", + "lazy", + "leader", + "leaf", + "learn", + "leave", + "lecture", + "left", + "leg", + "legal", + "legend", + "leisure", + "lemon", + "lend", + "length", + "lens", + "leopard", + "lesson", + "letter", + "level", + "liar", + "liberty", + "library", + "license", + "life", + "lift", + "light", + "like", + "limb", + "limit", + "link", + "lion", + "liquid", + "list", + "little", + "live", + "lizard", + "load", + "loan", + "lobster", + "local", + "lock", + "logic", + "lonely", + "long", + "loop", + "lottery", + "loud", + "lounge", + "love", + "loyal", + "lucky", + "luggage", + "lumber", + "lunar", + "lunch", + "luxury", + "lyrics", + "machine", + "mad", + "magic", + "magnet", + "maid", + "mail", + "main", + "major", + "make", + "mammal", + "man", + "manage", + "mandate", + "mango", + "mansion", + "manual", + "maple", + "marble", + "march", + "margin", + "marine", + "market", + "marriage", + "mask", + "mass", + "master", + "match", + "material", + "math", + "matrix", + "matter", + "maximum", + "maze", + "meadow", + "mean", + "measure", + "meat", + "mechanic", + "medal", + "media", + "melody", + "melt", + "member", + "memory", + "mention", + "menu", + "mercy", + "merge", + "merit", + "merry", + "mesh", + "message", + "metal", + "method", + "middle", + "midnight", + "milk", + "million", + "mimic", + "mind", + "minimum", + "minor", + "minute", + "miracle", + "mirror", + "misery", + "miss", + "mistake", + "mix", + "mixed", + "mixture", + "mobile", + "model", + "modify", + "mom", + "moment", + "monitor", + "monkey", + "monster", + "month", + "moon", + "moral", + "more", + "morning", + "mosquito", + "mother", + "motion", + "motor", + "mountain", + "mouse", + "move", + "movie", + "much", + "muffin", + "mule", + "multiply", + "muscle", + "museum", + "mushroom", + "music", + "must", + "mutual", + "myself", + "mystery", + "myth", + "naive", + "name", + "napkin", + "narrow", + "nasty", + "nation", + "nature", + "near", + "neck", + "need", + "negative", + "neglect", + "neither", + "nephew", + "nerve", + "nest", + "net", + "network", + "neutral", + "never", + "news", + "next", + "nice", + "night", + "noble", + "noise", + "nominee", + "noodle", + "normal", + "north", + "nose", + "notable", + "note", + "nothing", + "notice", + "novel", + "now", + "nuclear", + "number", + "nurse", + "nut", + "oak", + "obey", + "object", + "oblige", + "obscure", + "observe", + "obtain", + "obvious", + "occur", + "ocean", + "october", + "odor", + "off", + "offer", + "office", + "often", + "oil", + "okay", + "old", + "olive", + "olympic", + "omit", + "once", + "one", + "onion", + "online", + "only", + "open", + "opera", + "opinion", + "oppose", + "option", + "orange", + "orbit", + "orchard", + "order", + "ordinary", + "organ", + "orient", + "original", + "orphan", + "ostrich", + "other", + "outdoor", + "outer", + "output", + "outside", + "oval", + "oven", + "over", + "own", + "owner", + "oxygen", + "oyster", + "ozone", + "pact", + "paddle", + "page", + "pair", + "palace", + "palm", + "panda", + "panel", + "panic", + "panther", + "paper", + "parade", + "parent", + "park", + "parrot", + "party", + "pass", + "patch", + "path", + "patient", + "patrol", + "pattern", + "pause", + "pave", + "payment", + "peace", + "peanut", + "pear", + "peasant", + "pelican", + "pen", + "penalty", + "pencil", + "people", + "pepper", + "perfect", + "permit", + "person", + "pet", + "phone", + "photo", + "phrase", + "physical", + "piano", + "picnic", + "picture", + "piece", + "pig", + "pigeon", + "pill", + "pilot", + "pink", + "pioneer", + "pipe", + "pistol", + "pitch", + "pizza", + "place", + "planet", + "plastic", + "plate", + "play", + "please", + "pledge", + "pluck", + "plug", + "plunge", + "poem", + "poet", + "point", + "polar", + "pole", + "police", + "pond", + "pony", + "pool", + "popular", + "portion", + "position", + "possible", + "post", + "potato", + "pottery", + "poverty", + "powder", + "power", + "practice", + "praise", + "predict", + "prefer", + "prepare", + "present", + "pretty", + "prevent", + "price", + "pride", + "primary", + "print", + "priority", + "prison", + "private", + "prize", + "problem", + "process", + "produce", + "profit", + "program", + "project", + "promote", + "proof", + "property", + "prosper", + "protect", + "proud", + "provide", + "public", + "pudding", + "pull", + "pulp", + "pulse", + "pumpkin", + "punch", + "pupil", + "puppy", + "purchase", + "purity", + "purpose", + "purse", + "push", + "put", + "puzzle", + "pyramid", + "quality", + "quantum", + "quarter", + "question", + "quick", + "quit", + "quiz", + "quote", + "rabbit", + "raccoon", + "race", + "rack", + "radar", + "radio", + "rail", + "rain", + "raise", + "rally", + "ramp", + "ranch", + "random", + "range", + "rapid", + "rare", + "rate", + "rather", + "raven", + "raw", + "razor", + "ready", + "real", + "reason", + "rebel", + "rebuild", + "recall", + "receive", + "recipe", + "record", + "recycle", + "reduce", + "reflect", + "reform", + "refuse", + "region", + "regret", + "regular", + "reject", + "relax", + "release", + "relief", + "rely", + "remain", + "remember", + "remind", + "remove", + "render", + "renew", + "rent", + "reopen", + "repair", + "repeat", + "replace", + "report", + "require", + "rescue", + "resemble", + "resist", + "resource", + "response", + "result", + "retire", + "retreat", + "return", + "reunion", + "reveal", + "review", + "reward", + "rhythm", + "rib", + "ribbon", + "rice", + "rich", + "ride", + "ridge", + "rifle", + "right", + "rigid", + "ring", + "riot", + "ripple", + "risk", + "ritual", + "rival", + "river", + "road", + "roast", + "robot", + "robust", + "rocket", + "romance", + "roof", + "rookie", + "room", + "rose", + "rotate", + "rough", + "round", + "route", + "royal", + "rubber", + "rude", + "rug", + "rule", + "run", + "runway", + "rural", + "sad", + "saddle", + "sadness", + "safe", + "sail", + "salad", + "salmon", + "salon", + "salt", + "salute", + "same", + "sample", + "sand", + "satisfy", + "satoshi", + "sauce", + "sausage", + "save", + "say", + "scale", + "scan", + "scare", + "scatter", + "scene", + "scheme", + "school", + "science", + "scissors", + "scorpion", + "scout", + "scrap", + "screen", + "script", + "scrub", + "sea", + "search", + "season", + "seat", + "second", + "secret", + "section", + "security", + "seed", + "seek", + "segment", + "select", + "sell", + "seminar", + "senior", + "sense", + "sentence", + "series", + "service", + "session", + "settle", + "setup", + "seven", + "shadow", + "shaft", + "shallow", + "share", + "shed", + "shell", + "sheriff", + "shield", + "shift", + "shine", + "ship", + "shiver", + "shock", + "shoe", + "shoot", + "shop", + "short", + "shoulder", + "shove", + "shrimp", + "shrug", + "shuffle", + "shy", + "sibling", + "sick", + "side", + "siege", + "sight", + "sign", + "silent", + "silk", + "silly", + "silver", + "similar", + "simple", + "since", + "sing", + "siren", + "sister", + "situate", + "six", + "size", + "skate", + "sketch", + "ski", + "skill", + "skin", + "skirt", + "skull", + "slab", + "slam", + "sleep", + "slender", + "slice", + "slide", + "slight", + "slim", + "slogan", + "slot", + "slow", + "slush", + "small", + "smart", + "smile", + "smoke", + "smooth", + "snack", + "snake", + "snap", + "sniff", + "snow", + "soap", + "soccer", + "social", + "sock", + "soda", + "soft", + "solar", + "soldier", + "solid", + "solution", + "solve", + "someone", + "song", + "soon", + "sorry", + "sort", + "soul", + "sound", + "soup", + "source", + "south", + "space", + "spare", + "spatial", + "spawn", + "speak", + "special", + "speed", + "spell", + "spend", + "sphere", + "spice", + "spider", + "spike", + "spin", + "spirit", + "split", + "spoil", + "sponsor", + "spoon", + "sport", + "spot", + "spray", + "spread", + "spring", + "spy", + "square", + "squeeze", + "squirrel", + "stable", + "stadium", + "staff", + "stage", + "stairs", + "stamp", + "stand", + "start", + "state", + "stay", + "steak", + "steel", + "stem", + "step", + "stereo", + "stick", + "still", + "sting", + "stock", + "stomach", + "stone", + "stool", + "story", + "stove", + "strategy", + "street", + "strike", + "strong", + "struggle", + "student", + "stuff", + "stumble", + "style", + "subject", + "submit", + "subway", + "success", + "such", + "sudden", + "suffer", + "sugar", + "suggest", + "suit", + "summer", + "sun", + "sunny", + "sunset", + "super", + "supply", + "supreme", + "sure", + "surface", + "surge", + "surprise", + "surround", + "survey", + "suspect", + "sustain", + "swallow", + "swamp", + "swap", + "swarm", + "swear", + "sweet", + "swift", + "swim", + "swing", + "switch", + "sword", + "symbol", + "symptom", + "syrup", + "system", + "table", + "tackle", + "tag", + "tail", + "talent", + "talk", + "tank", + "tape", + "target", + "task", + "taste", + "tattoo", + "taxi", + "teach", + "team", + "tell", + "ten", + "tenant", + "tennis", + "tent", + "term", + "test", + "text", + "thank", + "that", + "theme", + "then", + "theory", + "there", + "they", + "thing", + "this", + "thought", + "three", + "thrive", + "throw", + "thumb", + "thunder", + "ticket", + "tide", + "tiger", + "tilt", + "timber", + "time", + "tiny", + "tip", + "tired", + "tissue", + "title", + "toast", + "tobacco", + "today", + "toddler", + "toe", + "together", + "toilet", + "token", + "tomato", + "tomorrow", + "tone", + "tongue", + "tonight", + "tool", + "tooth", + "top", + "topic", + "topple", + "torch", + "tornado", + "tortoise", + "toss", + "total", + "tourist", + "toward", + "tower", + "town", + "toy", + "track", + "trade", + "traffic", + "tragic", + "train", + "transfer", + "trap", + "trash", + "travel", + "tray", + "treat", + "tree", + "trend", + "trial", + "tribe", + "trick", + "trigger", + "trim", + "trip", + "trophy", + "trouble", + "truck", + "true", + "truly", + "trumpet", + "trust", + "truth", + "try", + "tube", + "tuition", + "tumble", + "tuna", + "tunnel", + "turkey", + "turn", + "turtle", + "twelve", + "twenty", + "twice", + "twin", + "twist", + "two", + "type", + "typical", + "ugly", + "umbrella", + "unable", + "unaware", + "uncle", + "uncover", + "under", + "undo", + "unfair", + "unfold", + "unhappy", + "uniform", + "unique", + "unit", + "universe", + "unknown", + "unlock", + "until", + "unusual", + "unveil", + "update", + "upgrade", + "uphold", + "upon", + "upper", + "upset", + "urban", + "urge", + "usage", + "use", + "used", + "useful", + "useless", + "usual", + "utility", + "vacant", + "vacuum", + "vague", + "valid", + "valley", + "valve", + "van", + "vanish", + "vapor", + "various", + "vast", + "vault", + "vehicle", + "velvet", + "vendor", + "venture", + "venue", + "verb", + "verify", + "version", + "very", + "vessel", + "veteran", + "viable", + "vibrant", + "vicious", + "victory", + "video", + "view", + "village", + "vintage", + "violin", + "virtual", + "virus", + "visa", + "visit", + "visual", + "vital", + "vivid", + "vocal", + "voice", + "void", + "volcano", + "volume", + "vote", + "voyage", + "wage", + "wagon", + "wait", + "walk", + "wall", + "walnut", + "want", + "warfare", + "warm", + "warrior", + "wash", + "wasp", + "waste", + "water", + "wave", + "way", + "wealth", + "weapon", + "wear", + "weasel", + "weather", + "web", + "wedding", + "weekend", + "weird", + "welcome", + "west", + "wet", + "whale", + "what", + "wheat", + "wheel", + "when", + "where", + "whip", + "whisper", + "wide", + "width", + "wife", + "wild", + "will", + "win", + "window", + "wine", + "wing", + "wink", + "winner", + "winter", + "wire", + "wisdom", + "wise", + "wish", + "witness", + "wolf", + "woman", + "wonder", + "wood", + "wool", + "word", + "work", + "world", + "worry", + "worth", + "wrap", + "wreck", + "wrestle", + "wrist", + "write", + "wrong", + "yard", + "year", + "yellow", + "you", + "young", + "youth", + "zebra", + "zero", + "zone", + "zoo" +]; + +},{}],53:[function(require,module,exports){ +module.exports=[ + "あいこくしん", + "あいさつ", + "あいだ", + "あおぞら", + "あかちゃん", + "あきる", + "あけがた", + "あける", + "あこがれる", + "あさい", + "あさひ", + "あしあと", + "あじわう", + "あずかる", + "あずき", + "あそぶ", + "あたえる", + "あたためる", + "あたりまえ", + "あたる", + "あつい", + "あつかう", + "あっしゅく", + "あつまり", + "あつめる", + "あてな", + "あてはまる", + "あひる", + "あぶら", + "あぶる", + "あふれる", + "あまい", + "あまど", + "あまやかす", + "あまり", + "あみもの", + "あめりか", + "あやまる", + "あゆむ", + "あらいぐま", + "あらし", + "あらすじ", + "あらためる", + "あらゆる", + "あらわす", + "ありがとう", + "あわせる", + "あわてる", + "あんい", + "あんがい", + "あんこ", + "あんぜん", + "あんてい", + "あんない", + "あんまり", + "いいだす", + "いおん", + "いがい", + "いがく", + "いきおい", + "いきなり", + "いきもの", + "いきる", + "いくじ", + "いくぶん", + "いけばな", + "いけん", + "いこう", + "いこく", + "いこつ", + "いさましい", + "いさん", + "いしき", + "いじゅう", + "いじょう", + "いじわる", + "いずみ", + "いずれ", + "いせい", + "いせえび", + "いせかい", + "いせき", + "いぜん", + "いそうろう", + "いそがしい", + "いだい", + "いだく", + "いたずら", + "いたみ", + "いたりあ", + "いちおう", + "いちじ", + "いちど", + "いちば", + "いちぶ", + "いちりゅう", + "いつか", + "いっしゅん", + "いっせい", + "いっそう", + "いったん", + "いっち", + "いってい", + "いっぽう", + "いてざ", + "いてん", + "いどう", + "いとこ", + "いない", + "いなか", + "いねむり", + "いのち", + "いのる", + "いはつ", + "いばる", + "いはん", + "いびき", + "いひん", + "いふく", + "いへん", + "いほう", + "いみん", + "いもうと", + "いもたれ", + "いもり", + "いやがる", + "いやす", + "いよかん", + "いよく", + "いらい", + "いらすと", + "いりぐち", + "いりょう", + "いれい", + "いれもの", + "いれる", + "いろえんぴつ", + "いわい", + "いわう", + "いわかん", + "いわば", + "いわゆる", + "いんげんまめ", + "いんさつ", + "いんしょう", + "いんよう", + "うえき", + "うえる", + "うおざ", + "うがい", + "うかぶ", + "うかべる", + "うきわ", + "うくらいな", + "うくれれ", + "うけたまわる", + "うけつけ", + "うけとる", + "うけもつ", + "うける", + "うごかす", + "うごく", + "うこん", + "うさぎ", + "うしなう", + "うしろがみ", + "うすい", + "うすぎ", + "うすぐらい", + "うすめる", + "うせつ", + "うちあわせ", + "うちがわ", + "うちき", + "うちゅう", + "うっかり", + "うつくしい", + "うったえる", + "うつる", + "うどん", + "うなぎ", + "うなじ", + "うなずく", + "うなる", + "うねる", + "うのう", + "うぶげ", + "うぶごえ", + "うまれる", + "うめる", + "うもう", + "うやまう", + "うよく", + "うらがえす", + "うらぐち", + "うらない", + "うりあげ", + "うりきれ", + "うるさい", + "うれしい", + "うれゆき", + "うれる", + "うろこ", + "うわき", + "うわさ", + "うんこう", + "うんちん", + "うんてん", + "うんどう", + "えいえん", + "えいが", + "えいきょう", + "えいご", + "えいせい", + "えいぶん", + "えいよう", + "えいわ", + "えおり", + "えがお", + "えがく", + "えきたい", + "えくせる", + "えしゃく", + "えすて", + "えつらん", + "えのぐ", + "えほうまき", + "えほん", + "えまき", + "えもじ", + "えもの", + "えらい", + "えらぶ", + "えりあ", + "えんえん", + "えんかい", + "えんぎ", + "えんげき", + "えんしゅう", + "えんぜつ", + "えんそく", + "えんちょう", + "えんとつ", + "おいかける", + "おいこす", + "おいしい", + "おいつく", + "おうえん", + "おうさま", + "おうじ", + "おうせつ", + "おうたい", + "おうふく", + "おうべい", + "おうよう", + "おえる", + "おおい", + "おおう", + "おおどおり", + "おおや", + "おおよそ", + "おかえり", + "おかず", + "おがむ", + "おかわり", + "おぎなう", + "おきる", + "おくさま", + "おくじょう", + "おくりがな", + "おくる", + "おくれる", + "おこす", + "おこなう", + "おこる", + "おさえる", + "おさない", + "おさめる", + "おしいれ", + "おしえる", + "おじぎ", + "おじさん", + "おしゃれ", + "おそらく", + "おそわる", + "おたがい", + "おたく", + "おだやか", + "おちつく", + "おっと", + "おつり", + "おでかけ", + "おとしもの", + "おとなしい", + "おどり", + "おどろかす", + "おばさん", + "おまいり", + "おめでとう", + "おもいで", + "おもう", + "おもたい", + "おもちゃ", + "おやつ", + "おやゆび", + "およぼす", + "おらんだ", + "おろす", + "おんがく", + "おんけい", + "おんしゃ", + "おんせん", + "おんだん", + "おんちゅう", + "おんどけい", + "かあつ", + "かいが", + "がいき", + "がいけん", + "がいこう", + "かいさつ", + "かいしゃ", + "かいすいよく", + "かいぜん", + "かいぞうど", + "かいつう", + "かいてん", + "かいとう", + "かいふく", + "がいへき", + "かいほう", + "かいよう", + "がいらい", + "かいわ", + "かえる", + "かおり", + "かかえる", + "かがく", + "かがし", + "かがみ", + "かくご", + "かくとく", + "かざる", + "がぞう", + "かたい", + "かたち", + "がちょう", + "がっきゅう", + "がっこう", + "がっさん", + "がっしょう", + "かなざわし", + "かのう", + "がはく", + "かぶか", + "かほう", + "かほご", + "かまう", + "かまぼこ", + "かめれおん", + "かゆい", + "かようび", + "からい", + "かるい", + "かろう", + "かわく", + "かわら", + "がんか", + "かんけい", + "かんこう", + "かんしゃ", + "かんそう", + "かんたん", + "かんち", + "がんばる", + "きあい", + "きあつ", + "きいろ", + "ぎいん", + "きうい", + "きうん", + "きえる", + "きおう", + "きおく", + "きおち", + "きおん", + "きかい", + "きかく", + "きかんしゃ", + "ききて", + "きくばり", + "きくらげ", + "きけんせい", + "きこう", + "きこえる", + "きこく", + "きさい", + "きさく", + "きさま", + "きさらぎ", + "ぎじかがく", + "ぎしき", + "ぎじたいけん", + "ぎじにってい", + "ぎじゅつしゃ", + "きすう", + "きせい", + "きせき", + "きせつ", + "きそう", + "きぞく", + "きぞん", + "きたえる", + "きちょう", + "きつえん", + "ぎっちり", + "きつつき", + "きつね", + "きてい", + "きどう", + "きどく", + "きない", + "きなが", + "きなこ", + "きぬごし", + "きねん", + "きのう", + "きのした", + "きはく", + "きびしい", + "きひん", + "きふく", + "きぶん", + "きぼう", + "きほん", + "きまる", + "きみつ", + "きむずかしい", + "きめる", + "きもだめし", + "きもち", + "きもの", + "きゃく", + "きやく", + "ぎゅうにく", + "きよう", + "きょうりゅう", + "きらい", + "きらく", + "きりん", + "きれい", + "きれつ", + "きろく", + "ぎろん", + "きわめる", + "ぎんいろ", + "きんかくじ", + "きんじょ", + "きんようび", + "ぐあい", + "くいず", + "くうかん", + "くうき", + "くうぐん", + "くうこう", + "ぐうせい", + "くうそう", + "ぐうたら", + "くうふく", + "くうぼ", + "くかん", + "くきょう", + "くげん", + "ぐこう", + "くさい", + "くさき", + "くさばな", + "くさる", + "くしゃみ", + "くしょう", + "くすのき", + "くすりゆび", + "くせげ", + "くせん", + "ぐたいてき", + "くださる", + "くたびれる", + "くちこみ", + "くちさき", + "くつした", + "ぐっすり", + "くつろぐ", + "くとうてん", + "くどく", + "くなん", + "くねくね", + "くのう", + "くふう", + "くみあわせ", + "くみたてる", + "くめる", + "くやくしょ", + "くらす", + "くらべる", + "くるま", + "くれる", + "くろう", + "くわしい", + "ぐんかん", + "ぐんしょく", + "ぐんたい", + "ぐんて", + "けあな", + "けいかく", + "けいけん", + "けいこ", + "けいさつ", + "げいじゅつ", + "けいたい", + "げいのうじん", + "けいれき", + "けいろ", + "けおとす", + "けおりもの", + "げきか", + "げきげん", + "げきだん", + "げきちん", + "げきとつ", + "げきは", + "げきやく", + "げこう", + "げこくじょう", + "げざい", + "けさき", + "げざん", + "けしき", + "けしごむ", + "けしょう", + "げすと", + "けたば", + "けちゃっぷ", + "けちらす", + "けつあつ", + "けつい", + "けつえき", + "けっこん", + "けつじょ", + "けっせき", + "けってい", + "けつまつ", + "げつようび", + "げつれい", + "けつろん", + "げどく", + "けとばす", + "けとる", + "けなげ", + "けなす", + "けなみ", + "けぬき", + "げねつ", + "けねん", + "けはい", + "げひん", + "けぶかい", + "げぼく", + "けまり", + "けみかる", + "けむし", + "けむり", + "けもの", + "けらい", + "けろけろ", + "けわしい", + "けんい", + "けんえつ", + "けんお", + "けんか", + "げんき", + "けんげん", + "けんこう", + "けんさく", + "けんしゅう", + "けんすう", + "げんそう", + "けんちく", + "けんてい", + "けんとう", + "けんない", + "けんにん", + "げんぶつ", + "けんま", + "けんみん", + "けんめい", + "けんらん", + "けんり", + "こあくま", + "こいぬ", + "こいびと", + "ごうい", + "こうえん", + "こうおん", + "こうかん", + "ごうきゅう", + "ごうけい", + "こうこう", + "こうさい", + "こうじ", + "こうすい", + "ごうせい", + "こうそく", + "こうたい", + "こうちゃ", + "こうつう", + "こうてい", + "こうどう", + "こうない", + "こうはい", + "ごうほう", + "ごうまん", + "こうもく", + "こうりつ", + "こえる", + "こおり", + "ごかい", + "ごがつ", + "ごかん", + "こくご", + "こくさい", + "こくとう", + "こくない", + "こくはく", + "こぐま", + "こけい", + "こける", + "ここのか", + "こころ", + "こさめ", + "こしつ", + "こすう", + "こせい", + "こせき", + "こぜん", + "こそだて", + "こたい", + "こたえる", + "こたつ", + "こちょう", + "こっか", + "こつこつ", + "こつばん", + "こつぶ", + "こてい", + "こてん", + "ことがら", + "ことし", + "ことば", + "ことり", + "こなごな", + "こねこね", + "このまま", + "このみ", + "このよ", + "ごはん", + "こひつじ", + "こふう", + "こふん", + "こぼれる", + "ごまあぶら", + "こまかい", + "ごますり", + "こまつな", + "こまる", + "こむぎこ", + "こもじ", + "こもち", + "こもの", + "こもん", + "こやく", + "こやま", + "こゆう", + "こゆび", + "こよい", + "こよう", + "こりる", + "これくしょん", + "ころっけ", + "こわもて", + "こわれる", + "こんいん", + "こんかい", + "こんき", + "こんしゅう", + "こんすい", + "こんだて", + "こんとん", + "こんなん", + "こんびに", + "こんぽん", + "こんまけ", + "こんや", + "こんれい", + "こんわく", + "ざいえき", + "さいかい", + "さいきん", + "ざいげん", + "ざいこ", + "さいしょ", + "さいせい", + "ざいたく", + "ざいちゅう", + "さいてき", + "ざいりょう", + "さうな", + "さかいし", + "さがす", + "さかな", + "さかみち", + "さがる", + "さぎょう", + "さくし", + "さくひん", + "さくら", + "さこく", + "さこつ", + "さずかる", + "ざせき", + "さたん", + "さつえい", + "ざつおん", + "ざっか", + "ざつがく", + "さっきょく", + "ざっし", + "さつじん", + "ざっそう", + "さつたば", + "さつまいも", + "さてい", + "さといも", + "さとう", + "さとおや", + "さとし", + "さとる", + "さのう", + "さばく", + "さびしい", + "さべつ", + "さほう", + "さほど", + "さます", + "さみしい", + "さみだれ", + "さむけ", + "さめる", + "さやえんどう", + "さゆう", + "さよう", + "さよく", + "さらだ", + "ざるそば", + "さわやか", + "さわる", + "さんいん", + "さんか", + "さんきゃく", + "さんこう", + "さんさい", + "ざんしょ", + "さんすう", + "さんせい", + "さんそ", + "さんち", + "さんま", + "さんみ", + "さんらん", + "しあい", + "しあげ", + "しあさって", + "しあわせ", + "しいく", + "しいん", + "しうち", + "しえい", + "しおけ", + "しかい", + "しかく", + "じかん", + "しごと", + "しすう", + "じだい", + "したうけ", + "したぎ", + "したて", + "したみ", + "しちょう", + "しちりん", + "しっかり", + "しつじ", + "しつもん", + "してい", + "してき", + "してつ", + "じてん", + "じどう", + "しなぎれ", + "しなもの", + "しなん", + "しねま", + "しねん", + "しのぐ", + "しのぶ", + "しはい", + "しばかり", + "しはつ", + "しはらい", + "しはん", + "しひょう", + "しふく", + "じぶん", + "しへい", + "しほう", + "しほん", + "しまう", + "しまる", + "しみん", + "しむける", + "じむしょ", + "しめい", + "しめる", + "しもん", + "しゃいん", + "しゃうん", + "しゃおん", + "じゃがいも", + "しやくしょ", + "しゃくほう", + "しゃけん", + "しゃこ", + "しゃざい", + "しゃしん", + "しゃせん", + "しゃそう", + "しゃたい", + "しゃちょう", + "しゃっきん", + "じゃま", + "しゃりん", + "しゃれい", + "じゆう", + "じゅうしょ", + "しゅくはく", + "じゅしん", + "しゅっせき", + "しゅみ", + "しゅらば", + "じゅんばん", + "しょうかい", + "しょくたく", + "しょっけん", + "しょどう", + "しょもつ", + "しらせる", + "しらべる", + "しんか", + "しんこう", + "じんじゃ", + "しんせいじ", + "しんちく", + "しんりん", + "すあげ", + "すあし", + "すあな", + "ずあん", + "すいえい", + "すいか", + "すいとう", + "ずいぶん", + "すいようび", + "すうがく", + "すうじつ", + "すうせん", + "すおどり", + "すきま", + "すくう", + "すくない", + "すける", + "すごい", + "すこし", + "ずさん", + "すずしい", + "すすむ", + "すすめる", + "すっかり", + "ずっしり", + "ずっと", + "すてき", + "すてる", + "すねる", + "すのこ", + "すはだ", + "すばらしい", + "ずひょう", + "ずぶぬれ", + "すぶり", + "すふれ", + "すべて", + "すべる", + "ずほう", + "すぼん", + "すまい", + "すめし", + "すもう", + "すやき", + "すらすら", + "するめ", + "すれちがう", + "すろっと", + "すわる", + "すんぜん", + "すんぽう", + "せあぶら", + "せいかつ", + "せいげん", + "せいじ", + "せいよう", + "せおう", + "せかいかん", + "せきにん", + "せきむ", + "せきゆ", + "せきらんうん", + "せけん", + "せこう", + "せすじ", + "せたい", + "せたけ", + "せっかく", + "せっきゃく", + "ぜっく", + "せっけん", + "せっこつ", + "せっさたくま", + "せつぞく", + "せつだん", + "せつでん", + "せっぱん", + "せつび", + "せつぶん", + "せつめい", + "せつりつ", + "せなか", + "せのび", + "せはば", + "せびろ", + "せぼね", + "せまい", + "せまる", + "せめる", + "せもたれ", + "せりふ", + "ぜんあく", + "せんい", + "せんえい", + "せんか", + "せんきょ", + "せんく", + "せんげん", + "ぜんご", + "せんさい", + "せんしゅ", + "せんすい", + "せんせい", + "せんぞ", + "せんたく", + "せんちょう", + "せんてい", + "せんとう", + "せんぬき", + "せんねん", + "せんぱい", + "ぜんぶ", + "ぜんぽう", + "せんむ", + "せんめんじょ", + "せんもん", + "せんやく", + "せんゆう", + "せんよう", + "ぜんら", + "ぜんりゃく", + "せんれい", + "せんろ", + "そあく", + "そいとげる", + "そいね", + "そうがんきょう", + "そうき", + "そうご", + "そうしん", + "そうだん", + "そうなん", + "そうび", + "そうめん", + "そうり", + "そえもの", + "そえん", + "そがい", + "そげき", + "そこう", + "そこそこ", + "そざい", + "そしな", + "そせい", + "そせん", + "そそぐ", + "そだてる", + "そつう", + "そつえん", + "そっかん", + "そつぎょう", + "そっけつ", + "そっこう", + "そっせん", + "そっと", + "そとがわ", + "そとづら", + "そなえる", + "そなた", + "そふぼ", + "そぼく", + "そぼろ", + "そまつ", + "そまる", + "そむく", + "そむりえ", + "そめる", + "そもそも", + "そよかぜ", + "そらまめ", + "そろう", + "そんかい", + "そんけい", + "そんざい", + "そんしつ", + "そんぞく", + "そんちょう", + "ぞんび", + "ぞんぶん", + "そんみん", + "たあい", + "たいいん", + "たいうん", + "たいえき", + "たいおう", + "だいがく", + "たいき", + "たいぐう", + "たいけん", + "たいこ", + "たいざい", + "だいじょうぶ", + "だいすき", + "たいせつ", + "たいそう", + "だいたい", + "たいちょう", + "たいてい", + "だいどころ", + "たいない", + "たいねつ", + "たいのう", + "たいはん", + "だいひょう", + "たいふう", + "たいへん", + "たいほ", + "たいまつばな", + "たいみんぐ", + "たいむ", + "たいめん", + "たいやき", + "たいよう", + "たいら", + "たいりょく", + "たいる", + "たいわん", + "たうえ", + "たえる", + "たおす", + "たおる", + "たおれる", + "たかい", + "たかね", + "たきび", + "たくさん", + "たこく", + "たこやき", + "たさい", + "たしざん", + "だじゃれ", + "たすける", + "たずさわる", + "たそがれ", + "たたかう", + "たたく", + "ただしい", + "たたみ", + "たちばな", + "だっかい", + "だっきゃく", + "だっこ", + "だっしゅつ", + "だったい", + "たてる", + "たとえる", + "たなばた", + "たにん", + "たぬき", + "たのしみ", + "たはつ", + "たぶん", + "たべる", + "たぼう", + "たまご", + "たまる", + "だむる", + "ためいき", + "ためす", + "ためる", + "たもつ", + "たやすい", + "たよる", + "たらす", + "たりきほんがん", + "たりょう", + "たりる", + "たると", + "たれる", + "たれんと", + "たろっと", + "たわむれる", + "だんあつ", + "たんい", + "たんおん", + "たんか", + "たんき", + "たんけん", + "たんご", + "たんさん", + "たんじょうび", + "だんせい", + "たんそく", + "たんたい", + "だんち", + "たんてい", + "たんとう", + "だんな", + "たんにん", + "だんねつ", + "たんのう", + "たんぴん", + "だんぼう", + "たんまつ", + "たんめい", + "だんれつ", + "だんろ", + "だんわ", + "ちあい", + "ちあん", + "ちいき", + "ちいさい", + "ちえん", + "ちかい", + "ちから", + "ちきゅう", + "ちきん", + "ちけいず", + "ちけん", + "ちこく", + "ちさい", + "ちしき", + "ちしりょう", + "ちせい", + "ちそう", + "ちたい", + "ちたん", + "ちちおや", + "ちつじょ", + "ちてき", + "ちてん", + "ちぬき", + "ちぬり", + "ちのう", + "ちひょう", + "ちへいせん", + "ちほう", + "ちまた", + "ちみつ", + "ちみどろ", + "ちめいど", + "ちゃんこなべ", + "ちゅうい", + "ちゆりょく", + "ちょうし", + "ちょさくけん", + "ちらし", + "ちらみ", + "ちりがみ", + "ちりょう", + "ちるど", + "ちわわ", + "ちんたい", + "ちんもく", + "ついか", + "ついたち", + "つうか", + "つうじょう", + "つうはん", + "つうわ", + "つかう", + "つかれる", + "つくね", + "つくる", + "つけね", + "つける", + "つごう", + "つたえる", + "つづく", + "つつじ", + "つつむ", + "つとめる", + "つながる", + "つなみ", + "つねづね", + "つのる", + "つぶす", + "つまらない", + "つまる", + "つみき", + "つめたい", + "つもり", + "つもる", + "つよい", + "つるぼ", + "つるみく", + "つわもの", + "つわり", + "てあし", + "てあて", + "てあみ", + "ていおん", + "ていか", + "ていき", + "ていけい", + "ていこく", + "ていさつ", + "ていし", + "ていせい", + "ていたい", + "ていど", + "ていねい", + "ていひょう", + "ていへん", + "ていぼう", + "てうち", + "ておくれ", + "てきとう", + "てくび", + "でこぼこ", + "てさぎょう", + "てさげ", + "てすり", + "てそう", + "てちがい", + "てちょう", + "てつがく", + "てつづき", + "でっぱ", + "てつぼう", + "てつや", + "でぬかえ", + "てぬき", + "てぬぐい", + "てのひら", + "てはい", + "てぶくろ", + "てふだ", + "てほどき", + "てほん", + "てまえ", + "てまきずし", + "てみじか", + "てみやげ", + "てらす", + "てれび", + "てわけ", + "てわたし", + "でんあつ", + "てんいん", + "てんかい", + "てんき", + "てんぐ", + "てんけん", + "てんごく", + "てんさい", + "てんし", + "てんすう", + "でんち", + "てんてき", + "てんとう", + "てんない", + "てんぷら", + "てんぼうだい", + "てんめつ", + "てんらんかい", + "でんりょく", + "でんわ", + "どあい", + "といれ", + "どうかん", + "とうきゅう", + "どうぐ", + "とうし", + "とうむぎ", + "とおい", + "とおか", + "とおく", + "とおす", + "とおる", + "とかい", + "とかす", + "ときおり", + "ときどき", + "とくい", + "とくしゅう", + "とくてん", + "とくに", + "とくべつ", + "とけい", + "とける", + "とこや", + "とさか", + "としょかん", + "とそう", + "とたん", + "とちゅう", + "とっきゅう", + "とっくん", + "とつぜん", + "とつにゅう", + "とどける", + "ととのえる", + "とない", + "となえる", + "となり", + "とのさま", + "とばす", + "どぶがわ", + "とほう", + "とまる", + "とめる", + "ともだち", + "ともる", + "どようび", + "とらえる", + "とんかつ", + "どんぶり", + "ないかく", + "ないこう", + "ないしょ", + "ないす", + "ないせん", + "ないそう", + "なおす", + "ながい", + "なくす", + "なげる", + "なこうど", + "なさけ", + "なたでここ", + "なっとう", + "なつやすみ", + "ななおし", + "なにごと", + "なにもの", + "なにわ", + "なのか", + "なふだ", + "なまいき", + "なまえ", + "なまみ", + "なみだ", + "なめらか", + "なめる", + "なやむ", + "ならう", + "ならび", + "ならぶ", + "なれる", + "なわとび", + "なわばり", + "にあう", + "にいがた", + "にうけ", + "におい", + "にかい", + "にがて", + "にきび", + "にくしみ", + "にくまん", + "にげる", + "にさんかたんそ", + "にしき", + "にせもの", + "にちじょう", + "にちようび", + "にっか", + "にっき", + "にっけい", + "にっこう", + "にっさん", + "にっしょく", + "にっすう", + "にっせき", + "にってい", + "になう", + "にほん", + "にまめ", + "にもつ", + "にやり", + "にゅういん", + "にりんしゃ", + "にわとり", + "にんい", + "にんか", + "にんき", + "にんげん", + "にんしき", + "にんずう", + "にんそう", + "にんたい", + "にんち", + "にんてい", + "にんにく", + "にんぷ", + "にんまり", + "にんむ", + "にんめい", + "にんよう", + "ぬいくぎ", + "ぬかす", + "ぬぐいとる", + "ぬぐう", + "ぬくもり", + "ぬすむ", + "ぬまえび", + "ぬめり", + "ぬらす", + "ぬんちゃく", + "ねあげ", + "ねいき", + "ねいる", + "ねいろ", + "ねぐせ", + "ねくたい", + "ねくら", + "ねこぜ", + "ねこむ", + "ねさげ", + "ねすごす", + "ねそべる", + "ねだん", + "ねつい", + "ねっしん", + "ねつぞう", + "ねったいぎょ", + "ねぶそく", + "ねふだ", + "ねぼう", + "ねほりはほり", + "ねまき", + "ねまわし", + "ねみみ", + "ねむい", + "ねむたい", + "ねもと", + "ねらう", + "ねわざ", + "ねんいり", + "ねんおし", + "ねんかん", + "ねんきん", + "ねんぐ", + "ねんざ", + "ねんし", + "ねんちゃく", + "ねんど", + "ねんぴ", + "ねんぶつ", + "ねんまつ", + "ねんりょう", + "ねんれい", + "のいず", + "のおづま", + "のがす", + "のきなみ", + "のこぎり", + "のこす", + "のこる", + "のせる", + "のぞく", + "のぞむ", + "のたまう", + "のちほど", + "のっく", + "のばす", + "のはら", + "のべる", + "のぼる", + "のみもの", + "のやま", + "のらいぬ", + "のらねこ", + "のりもの", + "のりゆき", + "のれん", + "のんき", + "ばあい", + "はあく", + "ばあさん", + "ばいか", + "ばいく", + "はいけん", + "はいご", + "はいしん", + "はいすい", + "はいせん", + "はいそう", + "はいち", + "ばいばい", + "はいれつ", + "はえる", + "はおる", + "はかい", + "ばかり", + "はかる", + "はくしゅ", + "はけん", + "はこぶ", + "はさみ", + "はさん", + "はしご", + "ばしょ", + "はしる", + "はせる", + "ぱそこん", + "はそん", + "はたん", + "はちみつ", + "はつおん", + "はっかく", + "はづき", + "はっきり", + "はっくつ", + "はっけん", + "はっこう", + "はっさん", + "はっしん", + "はったつ", + "はっちゅう", + "はってん", + "はっぴょう", + "はっぽう", + "はなす", + "はなび", + "はにかむ", + "はぶらし", + "はみがき", + "はむかう", + "はめつ", + "はやい", + "はやし", + "はらう", + "はろうぃん", + "はわい", + "はんい", + "はんえい", + "はんおん", + "はんかく", + "はんきょう", + "ばんぐみ", + "はんこ", + "はんしゃ", + "はんすう", + "はんだん", + "ぱんち", + "ぱんつ", + "はんてい", + "はんとし", + "はんのう", + "はんぱ", + "はんぶん", + "はんぺん", + "はんぼうき", + "はんめい", + "はんらん", + "はんろん", + "ひいき", + "ひうん", + "ひえる", + "ひかく", + "ひかり", + "ひかる", + "ひかん", + "ひくい", + "ひけつ", + "ひこうき", + "ひこく", + "ひさい", + "ひさしぶり", + "ひさん", + "びじゅつかん", + "ひしょ", + "ひそか", + "ひそむ", + "ひたむき", + "ひだり", + "ひたる", + "ひつぎ", + "ひっこし", + "ひっし", + "ひつじゅひん", + "ひっす", + "ひつぜん", + "ぴったり", + "ぴっちり", + "ひつよう", + "ひてい", + "ひとごみ", + "ひなまつり", + "ひなん", + "ひねる", + "ひはん", + "ひびく", + "ひひょう", + "ひほう", + "ひまわり", + "ひまん", + "ひみつ", + "ひめい", + "ひめじし", + "ひやけ", + "ひやす", + "ひよう", + "びょうき", + "ひらがな", + "ひらく", + "ひりつ", + "ひりょう", + "ひるま", + "ひるやすみ", + "ひれい", + "ひろい", + "ひろう", + "ひろき", + "ひろゆき", + "ひんかく", + "ひんけつ", + "ひんこん", + "ひんしゅ", + "ひんそう", + "ぴんち", + "ひんぱん", + "びんぼう", + "ふあん", + "ふいうち", + "ふうけい", + "ふうせん", + "ぷうたろう", + "ふうとう", + "ふうふ", + "ふえる", + "ふおん", + "ふかい", + "ふきん", + "ふくざつ", + "ふくぶくろ", + "ふこう", + "ふさい", + "ふしぎ", + "ふじみ", + "ふすま", + "ふせい", + "ふせぐ", + "ふそく", + "ぶたにく", + "ふたん", + "ふちょう", + "ふつう", + "ふつか", + "ふっかつ", + "ふっき", + "ふっこく", + "ぶどう", + "ふとる", + "ふとん", + "ふのう", + "ふはい", + "ふひょう", + "ふへん", + "ふまん", + "ふみん", + "ふめつ", + "ふめん", + "ふよう", + "ふりこ", + "ふりる", + "ふるい", + "ふんいき", + "ぶんがく", + "ぶんぐ", + "ふんしつ", + "ぶんせき", + "ふんそう", + "ぶんぽう", + "へいあん", + "へいおん", + "へいがい", + "へいき", + "へいげん", + "へいこう", + "へいさ", + "へいしゃ", + "へいせつ", + "へいそ", + "へいたく", + "へいてん", + "へいねつ", + "へいわ", + "へきが", + "へこむ", + "べにいろ", + "べにしょうが", + "へらす", + "へんかん", + "べんきょう", + "べんごし", + "へんさい", + "へんたい", + "べんり", + "ほあん", + "ほいく", + "ぼうぎょ", + "ほうこく", + "ほうそう", + "ほうほう", + "ほうもん", + "ほうりつ", + "ほえる", + "ほおん", + "ほかん", + "ほきょう", + "ぼきん", + "ほくろ", + "ほけつ", + "ほけん", + "ほこう", + "ほこる", + "ほしい", + "ほしつ", + "ほしゅ", + "ほしょう", + "ほせい", + "ほそい", + "ほそく", + "ほたて", + "ほたる", + "ぽちぶくろ", + "ほっきょく", + "ほっさ", + "ほったん", + "ほとんど", + "ほめる", + "ほんい", + "ほんき", + "ほんけ", + "ほんしつ", + "ほんやく", + "まいにち", + "まかい", + "まかせる", + "まがる", + "まける", + "まこと", + "まさつ", + "まじめ", + "ますく", + "まぜる", + "まつり", + "まとめ", + "まなぶ", + "まぬけ", + "まねく", + "まほう", + "まもる", + "まゆげ", + "まよう", + "まろやか", + "まわす", + "まわり", + "まわる", + "まんが", + "まんきつ", + "まんぞく", + "まんなか", + "みいら", + "みうち", + "みえる", + "みがく", + "みかた", + "みかん", + "みけん", + "みこん", + "みじかい", + "みすい", + "みすえる", + "みせる", + "みっか", + "みつかる", + "みつける", + "みてい", + "みとめる", + "みなと", + "みなみかさい", + "みねらる", + "みのう", + "みのがす", + "みほん", + "みもと", + "みやげ", + "みらい", + "みりょく", + "みわく", + "みんか", + "みんぞく", + "むいか", + "むえき", + "むえん", + "むかい", + "むかう", + "むかえ", + "むかし", + "むぎちゃ", + "むける", + "むげん", + "むさぼる", + "むしあつい", + "むしば", + "むじゅん", + "むしろ", + "むすう", + "むすこ", + "むすぶ", + "むすめ", + "むせる", + "むせん", + "むちゅう", + "むなしい", + "むのう", + "むやみ", + "むよう", + "むらさき", + "むりょう", + "むろん", + "めいあん", + "めいうん", + "めいえん", + "めいかく", + "めいきょく", + "めいさい", + "めいし", + "めいそう", + "めいぶつ", + "めいれい", + "めいわく", + "めぐまれる", + "めざす", + "めした", + "めずらしい", + "めだつ", + "めまい", + "めやす", + "めんきょ", + "めんせき", + "めんどう", + "もうしあげる", + "もうどうけん", + "もえる", + "もくし", + "もくてき", + "もくようび", + "もちろん", + "もどる", + "もらう", + "もんく", + "もんだい", + "やおや", + "やける", + "やさい", + "やさしい", + "やすい", + "やすたろう", + "やすみ", + "やせる", + "やそう", + "やたい", + "やちん", + "やっと", + "やっぱり", + "やぶる", + "やめる", + "ややこしい", + "やよい", + "やわらかい", + "ゆうき", + "ゆうびんきょく", + "ゆうべ", + "ゆうめい", + "ゆけつ", + "ゆしゅつ", + "ゆせん", + "ゆそう", + "ゆたか", + "ゆちゃく", + "ゆでる", + "ゆにゅう", + "ゆびわ", + "ゆらい", + "ゆれる", + "ようい", + "ようか", + "ようきゅう", + "ようじ", + "ようす", + "ようちえん", + "よかぜ", + "よかん", + "よきん", + "よくせい", + "よくぼう", + "よけい", + "よごれる", + "よさん", + "よしゅう", + "よそう", + "よそく", + "よっか", + "よてい", + "よどがわく", + "よねつ", + "よやく", + "よゆう", + "よろこぶ", + "よろしい", + "らいう", + "らくがき", + "らくご", + "らくさつ", + "らくだ", + "らしんばん", + "らせん", + "らぞく", + "らたい", + "らっか", + "られつ", + "りえき", + "りかい", + "りきさく", + "りきせつ", + "りくぐん", + "りくつ", + "りけん", + "りこう", + "りせい", + "りそう", + "りそく", + "りてん", + "りねん", + "りゆう", + "りゅうがく", + "りよう", + "りょうり", + "りょかん", + "りょくちゃ", + "りょこう", + "りりく", + "りれき", + "りろん", + "りんご", + "るいけい", + "るいさい", + "るいじ", + "るいせき", + "るすばん", + "るりがわら", + "れいかん", + "れいぎ", + "れいせい", + "れいぞうこ", + "れいとう", + "れいぼう", + "れきし", + "れきだい", + "れんあい", + "れんけい", + "れんこん", + "れんさい", + "れんしゅう", + "れんぞく", + "れんらく", + "ろうか", + "ろうご", + "ろうじん", + "ろうそく", + "ろくが", + "ろこつ", + "ろじうら", + "ろしゅつ", + "ろせん", + "ろてん", + "ろめん", + "ろれつ", + "ろんぎ", + "ろんぱ", + "ろんぶん", + "ろんり", + "わかす", + "わかめ", + "わかやま", + "わかれる", + "わしつ", + "わじまし", + "わすれもの", + "わらう", + "われる" +]; + +},{}],54:[function(require,module,exports){ +module.exports=[ + "abacate", + "abaixo", + "abalar", + "abater", + "abduzir", + "abelha", + "aberto", + "abismo", + "abotoar", + "abranger", + "abreviar", + "abrigar", + "abrupto", + "absinto", + "absoluto", + "absurdo", + "abutre", + "acabado", + "acalmar", + "acampar", + "acanhar", + "acaso", + "aceitar", + "acelerar", + "acenar", + "acervo", + "acessar", + "acetona", + "achatar", + "acidez", + "acima", + "acionado", + "acirrar", + "aclamar", + "aclive", + "acolhida", + "acomodar", + "acoplar", + "acordar", + "acumular", + "acusador", + "adaptar", + "adega", + "adentro", + "adepto", + "adequar", + "aderente", + "adesivo", + "adeus", + "adiante", + "aditivo", + "adjetivo", + "adjunto", + "admirar", + "adorar", + "adquirir", + "adubo", + "adverso", + "advogado", + "aeronave", + "afastar", + "aferir", + "afetivo", + "afinador", + "afivelar", + "aflito", + "afluente", + "afrontar", + "agachar", + "agarrar", + "agasalho", + "agenciar", + "agilizar", + "agiota", + "agitado", + "agora", + "agradar", + "agreste", + "agrupar", + "aguardar", + "agulha", + "ajoelhar", + "ajudar", + "ajustar", + "alameda", + "alarme", + "alastrar", + "alavanca", + "albergue", + "albino", + "alcatra", + "aldeia", + "alecrim", + "alegria", + "alertar", + "alface", + "alfinete", + "algum", + "alheio", + "aliar", + "alicate", + "alienar", + "alinhar", + "aliviar", + "almofada", + "alocar", + "alpiste", + "alterar", + "altitude", + "alucinar", + "alugar", + "aluno", + "alusivo", + "alvo", + "amaciar", + "amador", + "amarelo", + "amassar", + "ambas", + "ambiente", + "ameixa", + "amenizar", + "amido", + "amistoso", + "amizade", + "amolador", + "amontoar", + "amoroso", + "amostra", + "amparar", + "ampliar", + "ampola", + "anagrama", + "analisar", + "anarquia", + "anatomia", + "andaime", + "anel", + "anexo", + "angular", + "animar", + "anjo", + "anomalia", + "anotado", + "ansioso", + "anterior", + "anuidade", + "anunciar", + "anzol", + "apagador", + "apalpar", + "apanhado", + "apego", + "apelido", + "apertada", + "apesar", + "apetite", + "apito", + "aplauso", + "aplicada", + "apoio", + "apontar", + "aposta", + "aprendiz", + "aprovar", + "aquecer", + "arame", + "aranha", + "arara", + "arcada", + "ardente", + "areia", + "arejar", + "arenito", + "aresta", + "argiloso", + "argola", + "arma", + "arquivo", + "arraial", + "arrebate", + "arriscar", + "arroba", + "arrumar", + "arsenal", + "arterial", + "artigo", + "arvoredo", + "asfaltar", + "asilado", + "aspirar", + "assador", + "assinar", + "assoalho", + "assunto", + "astral", + "atacado", + "atadura", + "atalho", + "atarefar", + "atear", + "atender", + "aterro", + "ateu", + "atingir", + "atirador", + "ativo", + "atoleiro", + "atracar", + "atrevido", + "atriz", + "atual", + "atum", + "auditor", + "aumentar", + "aura", + "aurora", + "autismo", + "autoria", + "autuar", + "avaliar", + "avante", + "avaria", + "avental", + "avesso", + "aviador", + "avisar", + "avulso", + "axila", + "azarar", + "azedo", + "azeite", + "azulejo", + "babar", + "babosa", + "bacalhau", + "bacharel", + "bacia", + "bagagem", + "baiano", + "bailar", + "baioneta", + "bairro", + "baixista", + "bajular", + "baleia", + "baliza", + "balsa", + "banal", + "bandeira", + "banho", + "banir", + "banquete", + "barato", + "barbado", + "baronesa", + "barraca", + "barulho", + "baseado", + "bastante", + "batata", + "batedor", + "batida", + "batom", + "batucar", + "baunilha", + "beber", + "beijo", + "beirada", + "beisebol", + "beldade", + "beleza", + "belga", + "beliscar", + "bendito", + "bengala", + "benzer", + "berimbau", + "berlinda", + "berro", + "besouro", + "bexiga", + "bezerro", + "bico", + "bicudo", + "bienal", + "bifocal", + "bifurcar", + "bigorna", + "bilhete", + "bimestre", + "bimotor", + "biologia", + "biombo", + "biosfera", + "bipolar", + "birrento", + "biscoito", + "bisneto", + "bispo", + "bissexto", + "bitola", + "bizarro", + "blindado", + "bloco", + "bloquear", + "boato", + "bobagem", + "bocado", + "bocejo", + "bochecha", + "boicotar", + "bolada", + "boletim", + "bolha", + "bolo", + "bombeiro", + "bonde", + "boneco", + "bonita", + "borbulha", + "borda", + "boreal", + "borracha", + "bovino", + "boxeador", + "branco", + "brasa", + "braveza", + "breu", + "briga", + "brilho", + "brincar", + "broa", + "brochura", + "bronzear", + "broto", + "bruxo", + "bucha", + "budismo", + "bufar", + "bule", + "buraco", + "busca", + "busto", + "buzina", + "cabana", + "cabelo", + "cabide", + "cabo", + "cabrito", + "cacau", + "cacetada", + "cachorro", + "cacique", + "cadastro", + "cadeado", + "cafezal", + "caiaque", + "caipira", + "caixote", + "cajado", + "caju", + "calafrio", + "calcular", + "caldeira", + "calibrar", + "calmante", + "calota", + "camada", + "cambista", + "camisa", + "camomila", + "campanha", + "camuflar", + "canavial", + "cancelar", + "caneta", + "canguru", + "canhoto", + "canivete", + "canoa", + "cansado", + "cantar", + "canudo", + "capacho", + "capela", + "capinar", + "capotar", + "capricho", + "captador", + "capuz", + "caracol", + "carbono", + "cardeal", + "careca", + "carimbar", + "carneiro", + "carpete", + "carreira", + "cartaz", + "carvalho", + "casaco", + "casca", + "casebre", + "castelo", + "casulo", + "catarata", + "cativar", + "caule", + "causador", + "cautelar", + "cavalo", + "caverna", + "cebola", + "cedilha", + "cegonha", + "celebrar", + "celular", + "cenoura", + "censo", + "centeio", + "cercar", + "cerrado", + "certeiro", + "cerveja", + "cetim", + "cevada", + "chacota", + "chaleira", + "chamado", + "chapada", + "charme", + "chatice", + "chave", + "chefe", + "chegada", + "cheiro", + "cheque", + "chicote", + "chifre", + "chinelo", + "chocalho", + "chover", + "chumbo", + "chutar", + "chuva", + "cicatriz", + "ciclone", + "cidade", + "cidreira", + "ciente", + "cigana", + "cimento", + "cinto", + "cinza", + "ciranda", + "circuito", + "cirurgia", + "citar", + "clareza", + "clero", + "clicar", + "clone", + "clube", + "coado", + "coagir", + "cobaia", + "cobertor", + "cobrar", + "cocada", + "coelho", + "coentro", + "coeso", + "cogumelo", + "coibir", + "coifa", + "coiote", + "colar", + "coleira", + "colher", + "colidir", + "colmeia", + "colono", + "coluna", + "comando", + "combinar", + "comentar", + "comitiva", + "comover", + "complexo", + "comum", + "concha", + "condor", + "conectar", + "confuso", + "congelar", + "conhecer", + "conjugar", + "consumir", + "contrato", + "convite", + "cooperar", + "copeiro", + "copiador", + "copo", + "coquetel", + "coragem", + "cordial", + "corneta", + "coronha", + "corporal", + "correio", + "cortejo", + "coruja", + "corvo", + "cosseno", + "costela", + "cotonete", + "couro", + "couve", + "covil", + "cozinha", + "cratera", + "cravo", + "creche", + "credor", + "creme", + "crer", + "crespo", + "criada", + "criminal", + "crioulo", + "crise", + "criticar", + "crosta", + "crua", + "cruzeiro", + "cubano", + "cueca", + "cuidado", + "cujo", + "culatra", + "culminar", + "culpar", + "cultura", + "cumprir", + "cunhado", + "cupido", + "curativo", + "curral", + "cursar", + "curto", + "cuspir", + "custear", + "cutelo", + "damasco", + "datar", + "debater", + "debitar", + "deboche", + "debulhar", + "decalque", + "decimal", + "declive", + "decote", + "decretar", + "dedal", + "dedicado", + "deduzir", + "defesa", + "defumar", + "degelo", + "degrau", + "degustar", + "deitado", + "deixar", + "delator", + "delegado", + "delinear", + "delonga", + "demanda", + "demitir", + "demolido", + "dentista", + "depenado", + "depilar", + "depois", + "depressa", + "depurar", + "deriva", + "derramar", + "desafio", + "desbotar", + "descanso", + "desenho", + "desfiado", + "desgaste", + "desigual", + "deslize", + "desmamar", + "desova", + "despesa", + "destaque", + "desviar", + "detalhar", + "detentor", + "detonar", + "detrito", + "deusa", + "dever", + "devido", + "devotado", + "dezena", + "diagrama", + "dialeto", + "didata", + "difuso", + "digitar", + "dilatado", + "diluente", + "diminuir", + "dinastia", + "dinheiro", + "diocese", + "direto", + "discreta", + "disfarce", + "disparo", + "disquete", + "dissipar", + "distante", + "ditador", + "diurno", + "diverso", + "divisor", + "divulgar", + "dizer", + "dobrador", + "dolorido", + "domador", + "dominado", + "donativo", + "donzela", + "dormente", + "dorsal", + "dosagem", + "dourado", + "doutor", + "drenagem", + "drible", + "drogaria", + "duelar", + "duende", + "dueto", + "duplo", + "duquesa", + "durante", + "duvidoso", + "eclodir", + "ecoar", + "ecologia", + "edificar", + "edital", + "educado", + "efeito", + "efetivar", + "ejetar", + "elaborar", + "eleger", + "eleitor", + "elenco", + "elevador", + "eliminar", + "elogiar", + "embargo", + "embolado", + "embrulho", + "embutido", + "emenda", + "emergir", + "emissor", + "empatia", + "empenho", + "empinado", + "empolgar", + "emprego", + "empurrar", + "emulador", + "encaixe", + "encenado", + "enchente", + "encontro", + "endeusar", + "endossar", + "enfaixar", + "enfeite", + "enfim", + "engajado", + "engenho", + "englobar", + "engomado", + "engraxar", + "enguia", + "enjoar", + "enlatar", + "enquanto", + "enraizar", + "enrolado", + "enrugar", + "ensaio", + "enseada", + "ensino", + "ensopado", + "entanto", + "enteado", + "entidade", + "entortar", + "entrada", + "entulho", + "envergar", + "enviado", + "envolver", + "enxame", + "enxerto", + "enxofre", + "enxuto", + "epiderme", + "equipar", + "ereto", + "erguido", + "errata", + "erva", + "ervilha", + "esbanjar", + "esbelto", + "escama", + "escola", + "escrita", + "escuta", + "esfinge", + "esfolar", + "esfregar", + "esfumado", + "esgrima", + "esmalte", + "espanto", + "espelho", + "espiga", + "esponja", + "espreita", + "espumar", + "esquerda", + "estaca", + "esteira", + "esticar", + "estofado", + "estrela", + "estudo", + "esvaziar", + "etanol", + "etiqueta", + "euforia", + "europeu", + "evacuar", + "evaporar", + "evasivo", + "eventual", + "evidente", + "evoluir", + "exagero", + "exalar", + "examinar", + "exato", + "exausto", + "excesso", + "excitar", + "exclamar", + "executar", + "exemplo", + "exibir", + "exigente", + "exonerar", + "expandir", + "expelir", + "expirar", + "explanar", + "exposto", + "expresso", + "expulsar", + "externo", + "extinto", + "extrato", + "fabricar", + "fabuloso", + "faceta", + "facial", + "fada", + "fadiga", + "faixa", + "falar", + "falta", + "familiar", + "fandango", + "fanfarra", + "fantoche", + "fardado", + "farelo", + "farinha", + "farofa", + "farpa", + "fartura", + "fatia", + "fator", + "favorita", + "faxina", + "fazenda", + "fechado", + "feijoada", + "feirante", + "felino", + "feminino", + "fenda", + "feno", + "fera", + "feriado", + "ferrugem", + "ferver", + "festejar", + "fetal", + "feudal", + "fiapo", + "fibrose", + "ficar", + "ficheiro", + "figurado", + "fileira", + "filho", + "filme", + "filtrar", + "firmeza", + "fisgada", + "fissura", + "fita", + "fivela", + "fixador", + "fixo", + "flacidez", + "flamingo", + "flanela", + "flechada", + "flora", + "flutuar", + "fluxo", + "focal", + "focinho", + "fofocar", + "fogo", + "foguete", + "foice", + "folgado", + "folheto", + "forjar", + "formiga", + "forno", + "forte", + "fosco", + "fossa", + "fragata", + "fralda", + "frango", + "frasco", + "fraterno", + "freira", + "frente", + "fretar", + "frieza", + "friso", + "fritura", + "fronha", + "frustrar", + "fruteira", + "fugir", + "fulano", + "fuligem", + "fundar", + "fungo", + "funil", + "furador", + "furioso", + "futebol", + "gabarito", + "gabinete", + "gado", + "gaiato", + "gaiola", + "gaivota", + "galega", + "galho", + "galinha", + "galocha", + "ganhar", + "garagem", + "garfo", + "gargalo", + "garimpo", + "garoupa", + "garrafa", + "gasoduto", + "gasto", + "gata", + "gatilho", + "gaveta", + "gazela", + "gelado", + "geleia", + "gelo", + "gemada", + "gemer", + "gemido", + "generoso", + "gengiva", + "genial", + "genoma", + "genro", + "geologia", + "gerador", + "germinar", + "gesso", + "gestor", + "ginasta", + "gincana", + "gingado", + "girafa", + "girino", + "glacial", + "glicose", + "global", + "glorioso", + "goela", + "goiaba", + "golfe", + "golpear", + "gordura", + "gorjeta", + "gorro", + "gostoso", + "goteira", + "governar", + "gracejo", + "gradual", + "grafite", + "gralha", + "grampo", + "granada", + "gratuito", + "graveto", + "graxa", + "grego", + "grelhar", + "greve", + "grilo", + "grisalho", + "gritaria", + "grosso", + "grotesco", + "grudado", + "grunhido", + "gruta", + "guache", + "guarani", + "guaxinim", + "guerrear", + "guiar", + "guincho", + "guisado", + "gula", + "guloso", + "guru", + "habitar", + "harmonia", + "haste", + "haver", + "hectare", + "herdar", + "heresia", + "hesitar", + "hiato", + "hibernar", + "hidratar", + "hiena", + "hino", + "hipismo", + "hipnose", + "hipoteca", + "hoje", + "holofote", + "homem", + "honesto", + "honrado", + "hormonal", + "hospedar", + "humorado", + "iate", + "ideia", + "idoso", + "ignorado", + "igreja", + "iguana", + "ileso", + "ilha", + "iludido", + "iluminar", + "ilustrar", + "imagem", + "imediato", + "imenso", + "imersivo", + "iminente", + "imitador", + "imortal", + "impacto", + "impedir", + "implante", + "impor", + "imprensa", + "impune", + "imunizar", + "inalador", + "inapto", + "inativo", + "incenso", + "inchar", + "incidir", + "incluir", + "incolor", + "indeciso", + "indireto", + "indutor", + "ineficaz", + "inerente", + "infantil", + "infestar", + "infinito", + "inflamar", + "informal", + "infrator", + "ingerir", + "inibido", + "inicial", + "inimigo", + "injetar", + "inocente", + "inodoro", + "inovador", + "inox", + "inquieto", + "inscrito", + "inseto", + "insistir", + "inspetor", + "instalar", + "insulto", + "intacto", + "integral", + "intimar", + "intocado", + "intriga", + "invasor", + "inverno", + "invicto", + "invocar", + "iogurte", + "iraniano", + "ironizar", + "irreal", + "irritado", + "isca", + "isento", + "isolado", + "isqueiro", + "italiano", + "janeiro", + "jangada", + "janta", + "jararaca", + "jardim", + "jarro", + "jasmim", + "jato", + "javali", + "jazida", + "jejum", + "joaninha", + "joelhada", + "jogador", + "joia", + "jornal", + "jorrar", + "jovem", + "juba", + "judeu", + "judoca", + "juiz", + "julgador", + "julho", + "jurado", + "jurista", + "juro", + "justa", + "labareda", + "laboral", + "lacre", + "lactante", + "ladrilho", + "lagarta", + "lagoa", + "laje", + "lamber", + "lamentar", + "laminar", + "lampejo", + "lanche", + "lapidar", + "lapso", + "laranja", + "lareira", + "largura", + "lasanha", + "lastro", + "lateral", + "latido", + "lavanda", + "lavoura", + "lavrador", + "laxante", + "lazer", + "lealdade", + "lebre", + "legado", + "legendar", + "legista", + "leigo", + "leiloar", + "leitura", + "lembrete", + "leme", + "lenhador", + "lentilha", + "leoa", + "lesma", + "leste", + "letivo", + "letreiro", + "levar", + "leveza", + "levitar", + "liberal", + "libido", + "liderar", + "ligar", + "ligeiro", + "limitar", + "limoeiro", + "limpador", + "linda", + "linear", + "linhagem", + "liquidez", + "listagem", + "lisura", + "litoral", + "livro", + "lixa", + "lixeira", + "locador", + "locutor", + "lojista", + "lombo", + "lona", + "longe", + "lontra", + "lorde", + "lotado", + "loteria", + "loucura", + "lousa", + "louvar", + "luar", + "lucidez", + "lucro", + "luneta", + "lustre", + "lutador", + "luva", + "macaco", + "macete", + "machado", + "macio", + "madeira", + "madrinha", + "magnata", + "magreza", + "maior", + "mais", + "malandro", + "malha", + "malote", + "maluco", + "mamilo", + "mamoeiro", + "mamute", + "manada", + "mancha", + "mandato", + "manequim", + "manhoso", + "manivela", + "manobrar", + "mansa", + "manter", + "manusear", + "mapeado", + "maquinar", + "marcador", + "maresia", + "marfim", + "margem", + "marinho", + "marmita", + "maroto", + "marquise", + "marreco", + "martelo", + "marujo", + "mascote", + "masmorra", + "massagem", + "mastigar", + "matagal", + "materno", + "matinal", + "matutar", + "maxilar", + "medalha", + "medida", + "medusa", + "megafone", + "meiga", + "melancia", + "melhor", + "membro", + "memorial", + "menino", + "menos", + "mensagem", + "mental", + "merecer", + "mergulho", + "mesada", + "mesclar", + "mesmo", + "mesquita", + "mestre", + "metade", + "meteoro", + "metragem", + "mexer", + "mexicano", + "micro", + "migalha", + "migrar", + "milagre", + "milenar", + "milhar", + "mimado", + "minerar", + "minhoca", + "ministro", + "minoria", + "miolo", + "mirante", + "mirtilo", + "misturar", + "mocidade", + "moderno", + "modular", + "moeda", + "moer", + "moinho", + "moita", + "moldura", + "moleza", + "molho", + "molinete", + "molusco", + "montanha", + "moqueca", + "morango", + "morcego", + "mordomo", + "morena", + "mosaico", + "mosquete", + "mostarda", + "motel", + "motim", + "moto", + "motriz", + "muda", + "muito", + "mulata", + "mulher", + "multar", + "mundial", + "munido", + "muralha", + "murcho", + "muscular", + "museu", + "musical", + "nacional", + "nadador", + "naja", + "namoro", + "narina", + "narrado", + "nascer", + "nativa", + "natureza", + "navalha", + "navegar", + "navio", + "neblina", + "nebuloso", + "negativa", + "negociar", + "negrito", + "nervoso", + "neta", + "neural", + "nevasca", + "nevoeiro", + "ninar", + "ninho", + "nitidez", + "nivelar", + "nobreza", + "noite", + "noiva", + "nomear", + "nominal", + "nordeste", + "nortear", + "notar", + "noticiar", + "noturno", + "novelo", + "novilho", + "novo", + "nublado", + "nudez", + "numeral", + "nupcial", + "nutrir", + "nuvem", + "obcecado", + "obedecer", + "objetivo", + "obrigado", + "obscuro", + "obstetra", + "obter", + "obturar", + "ocidente", + "ocioso", + "ocorrer", + "oculista", + "ocupado", + "ofegante", + "ofensiva", + "oferenda", + "oficina", + "ofuscado", + "ogiva", + "olaria", + "oleoso", + "olhar", + "oliveira", + "ombro", + "omelete", + "omisso", + "omitir", + "ondulado", + "oneroso", + "ontem", + "opcional", + "operador", + "oponente", + "oportuno", + "oposto", + "orar", + "orbitar", + "ordem", + "ordinal", + "orfanato", + "orgasmo", + "orgulho", + "oriental", + "origem", + "oriundo", + "orla", + "ortodoxo", + "orvalho", + "oscilar", + "ossada", + "osso", + "ostentar", + "otimismo", + "ousadia", + "outono", + "outubro", + "ouvido", + "ovelha", + "ovular", + "oxidar", + "oxigenar", + "pacato", + "paciente", + "pacote", + "pactuar", + "padaria", + "padrinho", + "pagar", + "pagode", + "painel", + "pairar", + "paisagem", + "palavra", + "palestra", + "palheta", + "palito", + "palmada", + "palpitar", + "pancada", + "panela", + "panfleto", + "panqueca", + "pantanal", + "papagaio", + "papelada", + "papiro", + "parafina", + "parcial", + "pardal", + "parede", + "partida", + "pasmo", + "passado", + "pastel", + "patamar", + "patente", + "patinar", + "patrono", + "paulada", + "pausar", + "peculiar", + "pedalar", + "pedestre", + "pediatra", + "pedra", + "pegada", + "peitoral", + "peixe", + "pele", + "pelicano", + "penca", + "pendurar", + "peneira", + "penhasco", + "pensador", + "pente", + "perceber", + "perfeito", + "pergunta", + "perito", + "permitir", + "perna", + "perplexo", + "persiana", + "pertence", + "peruca", + "pescado", + "pesquisa", + "pessoa", + "petiscar", + "piada", + "picado", + "piedade", + "pigmento", + "pilastra", + "pilhado", + "pilotar", + "pimenta", + "pincel", + "pinguim", + "pinha", + "pinote", + "pintar", + "pioneiro", + "pipoca", + "piquete", + "piranha", + "pires", + "pirueta", + "piscar", + "pistola", + "pitanga", + "pivete", + "planta", + "plaqueta", + "platina", + "plebeu", + "plumagem", + "pluvial", + "pneu", + "poda", + "poeira", + "poetisa", + "polegada", + "policiar", + "poluente", + "polvilho", + "pomar", + "pomba", + "ponderar", + "pontaria", + "populoso", + "porta", + "possuir", + "postal", + "pote", + "poupar", + "pouso", + "povoar", + "praia", + "prancha", + "prato", + "praxe", + "prece", + "predador", + "prefeito", + "premiar", + "prensar", + "preparar", + "presilha", + "pretexto", + "prevenir", + "prezar", + "primata", + "princesa", + "prisma", + "privado", + "processo", + "produto", + "profeta", + "proibido", + "projeto", + "prometer", + "propagar", + "prosa", + "protetor", + "provador", + "publicar", + "pudim", + "pular", + "pulmonar", + "pulseira", + "punhal", + "punir", + "pupilo", + "pureza", + "puxador", + "quadra", + "quantia", + "quarto", + "quase", + "quebrar", + "queda", + "queijo", + "quente", + "querido", + "quimono", + "quina", + "quiosque", + "rabanada", + "rabisco", + "rachar", + "racionar", + "radial", + "raiar", + "rainha", + "raio", + "raiva", + "rajada", + "ralado", + "ramal", + "ranger", + "ranhura", + "rapadura", + "rapel", + "rapidez", + "raposa", + "raquete", + "raridade", + "rasante", + "rascunho", + "rasgar", + "raspador", + "rasteira", + "rasurar", + "ratazana", + "ratoeira", + "realeza", + "reanimar", + "reaver", + "rebaixar", + "rebelde", + "rebolar", + "recado", + "recente", + "recheio", + "recibo", + "recordar", + "recrutar", + "recuar", + "rede", + "redimir", + "redonda", + "reduzida", + "reenvio", + "refinar", + "refletir", + "refogar", + "refresco", + "refugiar", + "regalia", + "regime", + "regra", + "reinado", + "reitor", + "rejeitar", + "relativo", + "remador", + "remendo", + "remorso", + "renovado", + "reparo", + "repelir", + "repleto", + "repolho", + "represa", + "repudiar", + "requerer", + "resenha", + "resfriar", + "resgatar", + "residir", + "resolver", + "respeito", + "ressaca", + "restante", + "resumir", + "retalho", + "reter", + "retirar", + "retomada", + "retratar", + "revelar", + "revisor", + "revolta", + "riacho", + "rica", + "rigidez", + "rigoroso", + "rimar", + "ringue", + "risada", + "risco", + "risonho", + "robalo", + "rochedo", + "rodada", + "rodeio", + "rodovia", + "roedor", + "roleta", + "romano", + "roncar", + "rosado", + "roseira", + "rosto", + "rota", + "roteiro", + "rotina", + "rotular", + "rouco", + "roupa", + "roxo", + "rubro", + "rugido", + "rugoso", + "ruivo", + "rumo", + "rupestre", + "russo", + "sabor", + "saciar", + "sacola", + "sacudir", + "sadio", + "safira", + "saga", + "sagrada", + "saibro", + "salada", + "saleiro", + "salgado", + "saliva", + "salpicar", + "salsicha", + "saltar", + "salvador", + "sambar", + "samurai", + "sanar", + "sanfona", + "sangue", + "sanidade", + "sapato", + "sarda", + "sargento", + "sarjeta", + "saturar", + "saudade", + "saxofone", + "sazonal", + "secar", + "secular", + "seda", + "sedento", + "sediado", + "sedoso", + "sedutor", + "segmento", + "segredo", + "segundo", + "seiva", + "seleto", + "selvagem", + "semanal", + "semente", + "senador", + "senhor", + "sensual", + "sentado", + "separado", + "sereia", + "seringa", + "serra", + "servo", + "setembro", + "setor", + "sigilo", + "silhueta", + "silicone", + "simetria", + "simpatia", + "simular", + "sinal", + "sincero", + "singular", + "sinopse", + "sintonia", + "sirene", + "siri", + "situado", + "soberano", + "sobra", + "socorro", + "sogro", + "soja", + "solda", + "soletrar", + "solteiro", + "sombrio", + "sonata", + "sondar", + "sonegar", + "sonhador", + "sono", + "soprano", + "soquete", + "sorrir", + "sorteio", + "sossego", + "sotaque", + "soterrar", + "sovado", + "sozinho", + "suavizar", + "subida", + "submerso", + "subsolo", + "subtrair", + "sucata", + "sucesso", + "suco", + "sudeste", + "sufixo", + "sugador", + "sugerir", + "sujeito", + "sulfato", + "sumir", + "suor", + "superior", + "suplicar", + "suposto", + "suprimir", + "surdina", + "surfista", + "surpresa", + "surreal", + "surtir", + "suspiro", + "sustento", + "tabela", + "tablete", + "tabuada", + "tacho", + "tagarela", + "talher", + "talo", + "talvez", + "tamanho", + "tamborim", + "tampa", + "tangente", + "tanto", + "tapar", + "tapioca", + "tardio", + "tarefa", + "tarja", + "tarraxa", + "tatuagem", + "taurino", + "taxativo", + "taxista", + "teatral", + "tecer", + "tecido", + "teclado", + "tedioso", + "teia", + "teimar", + "telefone", + "telhado", + "tempero", + "tenente", + "tensor", + "tentar", + "termal", + "terno", + "terreno", + "tese", + "tesoura", + "testado", + "teto", + "textura", + "texugo", + "tiara", + "tigela", + "tijolo", + "timbrar", + "timidez", + "tingido", + "tinteiro", + "tiragem", + "titular", + "toalha", + "tocha", + "tolerar", + "tolice", + "tomada", + "tomilho", + "tonel", + "tontura", + "topete", + "tora", + "torcido", + "torneio", + "torque", + "torrada", + "torto", + "tostar", + "touca", + "toupeira", + "toxina", + "trabalho", + "tracejar", + "tradutor", + "trafegar", + "trajeto", + "trama", + "trancar", + "trapo", + "traseiro", + "tratador", + "travar", + "treino", + "tremer", + "trepidar", + "trevo", + "triagem", + "tribo", + "triciclo", + "tridente", + "trilogia", + "trindade", + "triplo", + "triturar", + "triunfal", + "trocar", + "trombeta", + "trova", + "trunfo", + "truque", + "tubular", + "tucano", + "tudo", + "tulipa", + "tupi", + "turbo", + "turma", + "turquesa", + "tutelar", + "tutorial", + "uivar", + "umbigo", + "unha", + "unidade", + "uniforme", + "urologia", + "urso", + "urtiga", + "urubu", + "usado", + "usina", + "usufruir", + "vacina", + "vadiar", + "vagaroso", + "vaidoso", + "vala", + "valente", + "validade", + "valores", + "vantagem", + "vaqueiro", + "varanda", + "vareta", + "varrer", + "vascular", + "vasilha", + "vassoura", + "vazar", + "vazio", + "veado", + "vedar", + "vegetar", + "veicular", + "veleiro", + "velhice", + "veludo", + "vencedor", + "vendaval", + "venerar", + "ventre", + "verbal", + "verdade", + "vereador", + "vergonha", + "vermelho", + "verniz", + "versar", + "vertente", + "vespa", + "vestido", + "vetorial", + "viaduto", + "viagem", + "viajar", + "viatura", + "vibrador", + "videira", + "vidraria", + "viela", + "viga", + "vigente", + "vigiar", + "vigorar", + "vilarejo", + "vinco", + "vinheta", + "vinil", + "violeta", + "virada", + "virtude", + "visitar", + "visto", + "vitral", + "viveiro", + "vizinho", + "voador", + "voar", + "vogal", + "volante", + "voleibol", + "voltagem", + "volumoso", + "vontade", + "vulto", + "vuvuzela", + "xadrez", + "xarope", + "xeque", + "xeretar", + "xerife", + "xingar", + "zangado", + "zarpar", + "zebu", + "zelador", + "zombar", + "zoologia", + "zumbido" +]; + +},{}]},{},[50])(50) +}); +}(bip39_browser)); + +var global$1 = (typeof global$1 !== "undefined" ? global$1 : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + +var lookup$1 = []; +var revLookup$1 = []; +var Arr$1 = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; +var inited = false; +function init () { + inited = true; + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup$1[i] = code[i]; + revLookup$1[code.charCodeAt(i)] = i; + } + + revLookup$1['-'.charCodeAt(0)] = 62; + revLookup$1['_'.charCodeAt(0)] = 63; +} + +function toByteArray$1 (b64) { + if (!inited) { + init(); + } + var i, j, l, tmp, placeHolders, arr; + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr$1(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup$1[b64.charCodeAt(i)] << 18) | (revLookup$1[b64.charCodeAt(i + 1)] << 12) | (revLookup$1[b64.charCodeAt(i + 2)] << 6) | revLookup$1[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup$1[b64.charCodeAt(i)] << 2) | (revLookup$1[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup$1[b64.charCodeAt(i)] << 10) | (revLookup$1[b64.charCodeAt(i + 1)] << 4) | (revLookup$1[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64$1 (num) { + return lookup$1[num >> 18 & 0x3F] + lookup$1[num >> 12 & 0x3F] + lookup$1[num >> 6 & 0x3F] + lookup$1[num & 0x3F] +} + +function encodeChunk$1 (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64$1(tmp)); + } + return output.join('') +} + +function fromByteArray$1 (uint8) { + if (!inited) { + init(); + } + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk$1(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup$1[tmp >> 2]; + output += lookup$1[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup$1[tmp >> 10]; + output += lookup$1[(tmp >> 4) & 0x3F]; + output += lookup$1[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + +function read (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +function write (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +} + +var toString = {}.toString; + +var isArray = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +var INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer$i.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined + ? global$1.TYPED_ARRAY_SUPPORT + : true; + +function kMaxLength () { + return Buffer$i.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer$i.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer$i(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer$i (arg, encodingOrOffset, length) { + if (!Buffer$i.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$i)) { + return new Buffer$i(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from$1(this, arg, encodingOrOffset, length) +} + +Buffer$i.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer$i._augment = function (arr) { + arr.__proto__ = Buffer$i.prototype; + return arr +}; + +function from$1 (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer$i.from = function (value, encodingOrOffset, length) { + return from$1(null, value, encodingOrOffset, length) +}; + +if (Buffer$i.TYPED_ARRAY_SUPPORT) { + Buffer$i.prototype.__proto__ = Uint8Array.prototype; + Buffer$i.__proto__ = Uint8Array; +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer$i.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer$i.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer$i.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer$i.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer$i.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength$1(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer$i.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (internalIsBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} +Buffer$i.isBuffer = isBuffer; +function internalIsBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer$i.compare = function compare (a, b) { + if (!internalIsBuffer(a) || !internalIsBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer$i.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer$i.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer$i.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer$i.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!internalIsBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength$1 (string, encoding) { + if (internalIsBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer$i.byteLength = byteLength$1; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer$i.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer$i.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer$i.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer$i.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer$i.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer$i.prototype.equals = function equals (b) { + if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer$i.compare(this, b) === 0 +}; + +Buffer$i.prototype.inspect = function inspect () { + var str = ''; + var max = INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '' +}; + +Buffer$i.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!internalIsBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer$i.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (internalIsBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer$i.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer$i.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer$i.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer$i.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer$i.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer$i.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return fromByteArray$1(buf) + } else { + return fromByteArray$1(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer$i.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer$i.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer$i(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer$i.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer$i.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer$i.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer$i.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer$i.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer$i.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer$i.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer$i.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer$i.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer$i.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer$i.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer$i.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer$i.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer$i.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer$i.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, true, 23, 4) +}; + +Buffer$i.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, false, 23, 4) +}; + +Buffer$i.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, true, 52, 8) +}; + +Buffer$i.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer$i.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer$i.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer$i.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer$i.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer$i.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer$i.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer$i.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer$i.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer$i.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer$i.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer$i.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer$i.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer$i.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer$i.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer$i.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer$i.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer$i.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer$i.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer$i.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer$i.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer$i.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer$i.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer$i.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer$i.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer$i.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = internalIsBuffer(val) + ? val + : utf8ToBytes(new Buffer$i(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + + +function base64ToBytes (str) { + return toByteArray$1(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +function isBuffer(obj) { + return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) +} + +function isFastBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) +} + +var dist = {}; + +var inherits_browser$1 = {exports: {}}; + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + inherits_browser$1.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + inherits_browser$1.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + }; +} + +var safeBuffer$1 = {exports: {}}; + +var buffer = {}; + +var base64Js = {}; + +base64Js.byteLength = byteLength; +base64Js.toByteArray = toByteArray; +base64Js.fromByteArray = fromByteArray; + +var lookup = []; +var revLookup = []; +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62; +revLookup['_'.charCodeAt(0)] = 63; + +function getLens (b64) { + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('='); + if (validLen === -1) validLen = len; + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4); + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + + var curByte = 0; + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen; + + var i; + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = (tmp >> 16) & 0xFF; + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ); + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ); + } + + return parts.join('') +} + +var ieee754 = {}; + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ + +ieee754.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +}; + +ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +(function (exports) { + +const base64 = base64Js; +const ieee754$1 = ieee754; +const customInspectSymbol = + (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation + ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation + : null; + +exports.Buffer = Buffer; +exports.SlowBuffer = SlowBuffer; +exports.INSPECT_MAX_BYTES = 50; + +const K_MAX_LENGTH = 0x7fffffff; +exports.kMaxLength = K_MAX_LENGTH; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ); +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + const arr = new Uint8Array(1); + const proto = { foo: function () { return 42 } }; + Object.setPrototypeOf(proto, Uint8Array.prototype); + Object.setPrototypeOf(arr, proto); + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}); + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}); + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + const buf = new Uint8Array(length); + Object.setPrototypeOf(buf, Buffer.prototype); + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayView(value) + } + + if (value == null) { + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof SharedArrayBuffer !== 'undefined' && + (isInstance(value, SharedArrayBuffer) || + (value && isInstance(value.buffer, SharedArrayBuffer)))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + const valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + const b = fromObject(value); + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +}; + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); +Object.setPrototypeOf(Buffer, Uint8Array); + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpreted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +}; + +function allocUnsafe (size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +}; + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + const length = byteLength(string, encoding) | 0; + let buf = createBuffer(length); + + const actual = buf.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual); + } + + return buf +} + +function fromArrayLike (array) { + const length = array.length < 0 ? 0 : checked(array.length) | 0; + const buf = createBuffer(length); + for (let i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf +} + +function fromArrayView (arrayView) { + if (isInstance(arrayView, Uint8Array)) { + const copy = new Uint8Array(arrayView); + return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) + } + return fromArrayLike(arrayView) +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + let buf; + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array); + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(buf, Buffer.prototype); + + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + const len = checked(obj.length) | 0; + const buf = createBuffer(len); + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len); + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +}; + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + let x = a.length; + let y = b.length; + + for (let i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + let i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + const buffer = Buffer.allocUnsafe(length); + let pos = 0; + for (i = 0; i < list.length; ++i) { + let buf = list[i]; + if (isInstance(buf, Uint8Array)) { + if (pos + buf.length > buffer.length) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); + buf.copy(buffer, pos); + } else { + Uint8Array.prototype.set.call( + buffer, + buf, + pos + ); + } + } else if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } else { + buf.copy(buffer, pos); + } + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + const len = string.length; + const mustMatch = (arguments.length > 2 && arguments[2] === true); + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + let loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + let loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coercion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + const i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + const len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (let i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + const len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (let i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + const len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (let i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + const length = this.length; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.toLocaleString = Buffer.prototype.toString; + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + let str = ''; + const max = exports.INSPECT_MAX_BYTES; + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); + if (this.length > max) str += ' ... '; + return '' +}; +if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength); + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + let x = thisEnd - thisStart; + let y = end - start; + const len = Math.min(x, y); + + const thisCopy = this.slice(thisStart, thisEnd); + const targetCopy = target.slice(start, end); + + for (let i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + let indexSize = 1; + let arrLength = arr.length; + let valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + let i; + if (dir) { + let foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + let found = true; + for (let j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + const remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + const strLen = string.length; + + if (length > strLen / 2) { + length = strLen / 2; + } + let i; + for (i = 0; i < length; ++i) { + const parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + const remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + let loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + case 'latin1': + case 'binary': + return asciiWrite(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + const res = []; + + let i = start; + while (i < end) { + const firstByte = buf[i]; + let codePoint = null; + let bytesPerSequence = (firstByte > 0xEF) + ? 4 + : (firstByte > 0xDF) + ? 3 + : (firstByte > 0xBF) + ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + let secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +const MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + const len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + let res = ''; + let i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + let ret = ''; + end = Math.min(buf.length, end); + + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + let ret = ''; + end = Math.min(buf.length, end); + + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + const len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + let out = ''; + for (let i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]]; + } + return out +} + +function utf16leSlice (buf, start, end) { + const bytes = buf.slice(start, end); + let res = ''; + // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) + for (let i = 0; i < bytes.length - 1; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + const len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + const newBuf = this.subarray(start, end); + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(newBuf, Buffer.prototype); + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUintLE = +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUintBE = +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + let val = this[offset + --byteLength]; + let mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUint8 = +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUint16LE = +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUint16BE = +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUint32LE = +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUint32BE = +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const lo = first + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 24; + + const hi = this[++offset] + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + last * 2 ** 24; + + return BigInt(lo) + (BigInt(hi) << BigInt(32)) +}); + +Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const hi = first * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + this[++offset]; + + const lo = this[++offset] * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + last; + + return (BigInt(hi) << BigInt(32)) + BigInt(lo) +}); + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let i = byteLength; + let mul = 1; + let val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const val = this[offset + 4] + + this[offset + 5] * 2 ** 8 + + this[offset + 6] * 2 ** 16 + + (last << 24); // Overflow + + return (BigInt(val) << BigInt(32)) + + BigInt(first + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 24) +}); + +Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const val = (first << 24) + // Overflow + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + this[++offset]; + + return (BigInt(val) << BigInt(32)) + + BigInt(this[++offset] * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + last) +}); + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754$1.read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754$1.read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754$1.read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754$1.read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUintLE = +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + let mul = 1; + let i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUintBE = +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + let i = byteLength - 1; + let mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUint8 = +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeUint16LE = +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeUint16BE = +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeUint32LE = +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeUint32BE = +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +function wrtBigUInt64LE (buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + + let lo = Number(value & BigInt(0xffffffff)); + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + return offset +} + +function wrtBigUInt64BE (buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + + let lo = Number(value & BigInt(0xffffffff)); + buf[offset + 7] = lo; + lo = lo >> 8; + buf[offset + 6] = lo; + lo = lo >> 8; + buf[offset + 5] = lo; + lo = lo >> 8; + buf[offset + 4] = lo; + let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); + buf[offset + 3] = hi; + hi = hi >> 8; + buf[offset + 2] = hi; + hi = hi >> 8; + buf[offset + 1] = hi; + hi = hi >> 8; + buf[offset] = hi; + return offset + 8 +} + +Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) +}); + +Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) +}); + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + let i = 0; + let mul = 1; + let sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + let i = byteLength - 1; + let mul = 1; + let sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) +}); + +Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) +}); + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + ieee754$1.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + ieee754$1.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + const len = end - start; + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end); + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + const code = val.charCodeAt(0); + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code; + } + } + } else if (typeof val === 'number') { + val = val & 255; + } else if (typeof val === 'boolean') { + val = Number(val); + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + let i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + const bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding); + const len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// CUSTOM ERRORS +// ============= + +// Simplified versions from Node, changed for Buffer-only usage +const errors = {}; +function E (sym, getMessage, Base) { + errors[sym] = class NodeError extends Base { + constructor () { + super(); + + Object.defineProperty(this, 'message', { + value: getMessage.apply(this, arguments), + writable: true, + configurable: true + }); + + // Add the error code to the name to include it in the stack trace. + this.name = `${this.name} [${sym}]`; + // Access the stack to generate the error message including the error code + // from the name. + this.stack; // eslint-disable-line no-unused-expressions + // Reset the name to the actual name. + delete this.name; + } + + get code () { + return sym + } + + set code (value) { + Object.defineProperty(this, 'code', { + configurable: true, + enumerable: true, + value, + writable: true + }); + } + + toString () { + return `${this.name} [${sym}]: ${this.message}` + } + }; +} + +E('ERR_BUFFER_OUT_OF_BOUNDS', + function (name) { + if (name) { + return `${name} is outside of buffer bounds` + } + + return 'Attempt to access memory outside buffer bounds' + }, RangeError); +E('ERR_INVALID_ARG_TYPE', + function (name, actual) { + return `The "${name}" argument must be of type number. Received type ${typeof actual}` + }, TypeError); +E('ERR_OUT_OF_RANGE', + function (str, range, input) { + let msg = `The value of "${str}" is out of range.`; + let received = input; + if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { + received = addNumericalSeparator(String(input)); + } else if (typeof input === 'bigint') { + received = String(input); + if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { + received = addNumericalSeparator(received); + } + received += 'n'; + } + msg += ` It must be ${range}. Received ${received}`; + return msg + }, RangeError); + +function addNumericalSeparator (val) { + let res = ''; + let i = val.length; + const start = val[0] === '-' ? 1 : 0; + for (; i >= start + 4; i -= 3) { + res = `_${val.slice(i - 3, i)}${res}`; + } + return `${val.slice(0, i)}${res}` +} + +// CHECK FUNCTIONS +// =============== + +function checkBounds (buf, offset, byteLength) { + validateNumber(offset, 'offset'); + if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { + boundsError(offset, buf.length - (byteLength + 1)); + } +} + +function checkIntBI (value, min, max, buf, offset, byteLength) { + if (value > max || value < min) { + const n = typeof min === 'bigint' ? 'n' : ''; + let range; + if (byteLength > 3) { + if (min === 0 || min === BigInt(0)) { + range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`; + } else { + range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + + `${(byteLength + 1) * 8 - 1}${n}`; + } + } else { + range = `>= ${min}${n} and <= ${max}${n}`; + } + throw new errors.ERR_OUT_OF_RANGE('value', range, value) + } + checkBounds(buf, offset, byteLength); +} + +function validateNumber (value, name) { + if (typeof value !== 'number') { + throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value) + } +} + +function boundsError (value, length, type) { + if (Math.floor(value) !== value) { + validateNumber(value, type); + throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value) + } + + if (length < 0) { + throw new errors.ERR_BUFFER_OUT_OF_BOUNDS() + } + + throw new errors.ERR_OUT_OF_RANGE(type || 'offset', + `>= ${type ? 1 : 0} and <= ${length}`, + value) +} + +// HELPER FUNCTIONS +// ================ + +const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0]; + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + let codePoint; + const length = string.length; + let leadSurrogate = null; + const bytes = []; + + for (let i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + let c, hi, lo; + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + let i; + for (i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +// Create lookup table for `toString('hex')` +// See: https://github.com/feross/buffer/issues/219 +const hexSliceLookupTable = (function () { + const alphabet = '0123456789abcdef'; + const table = new Array(256); + for (let i = 0; i < 16; ++i) { + const i16 = i * 16; + for (let j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j]; + } + } + return table +})(); + +// Return not function with Error if BigInt not supported +function defineBigIntMethod (fn) { + return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn +} + +function BufferBigIntNotDefined () { + throw new Error('BigInt not supported') +} +}(buffer)); + +/* eslint-disable node/no-deprecated-api */ + +(function (module, exports) { +var buffer$1 = buffer; +var Buffer = buffer$1.Buffer; + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key]; + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer$1; +} else { + // Copy properties from require('buffer') + copyProps(buffer$1, exports); + exports.Buffer = SafeBuffer; +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer); + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +}; + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size); + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf +}; + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +}; + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer$1.SlowBuffer(size) +}; +}(safeBuffer$1, safeBuffer$1.exports)); + +var domain; + +// This constructor is used to store event handlers. Instantiating this is +// faster than explicitly calling `Object.create(null)` to get a "clean" empty +// object (tested with v8 v4.9). +function EventHandlers() {} +EventHandlers.prototype = Object.create(null); + +function EventEmitter$1() { + EventEmitter$1.init.call(this); +} + +// nodejs oddity +// require('events') === require('events').EventEmitter +EventEmitter$1.EventEmitter = EventEmitter$1; + +EventEmitter$1.usingDomains = false; + +EventEmitter$1.prototype.domain = undefined; +EventEmitter$1.prototype._events = undefined; +EventEmitter$1.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter$1.defaultMaxListeners = 10; + +EventEmitter$1.init = function() { + this.domain = null; + if (EventEmitter$1.usingDomains) { + // if there is an active domain, then attach to it. + if (domain.active ) ; + } + + if (!this._events || this._events === Object.getPrototypeOf(this)._events) { + this._events = new EventHandlers(); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter$1.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || isNaN(n)) + throw new TypeError('"n" argument must be a positive number'); + this._maxListeners = n; + return this; +}; + +function $getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter$1.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter$1.prototype.getMaxListeners = function getMaxListeners() { + return $getMaxListeners(this); +}; + +// These standalone emit* functions are used to optimize calling of event +// handlers for fast cases because emit() itself often has a variable number of +// arguments and can be deoptimized because of that. These functions always have +// the same number of arguments and thus do not get deoptimized, so the code +// inside them can execute faster. +function emitNone(handler, isFn, self) { + if (isFn) + handler.call(self); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self); + } +} +function emitOne(handler, isFn, self, arg1) { + if (isFn) + handler.call(self, arg1); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1); + } +} +function emitTwo(handler, isFn, self, arg1, arg2) { + if (isFn) + handler.call(self, arg1, arg2); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2); + } +} +function emitThree(handler, isFn, self, arg1, arg2, arg3) { + if (isFn) + handler.call(self, arg1, arg2, arg3); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2, arg3); + } +} + +function emitMany(handler, isFn, self, args) { + if (isFn) + handler.apply(self, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].apply(self, args); + } +} + +EventEmitter$1.prototype.emit = function emit(type) { + var er, handler, len, args, i, events, domain; + var doError = (type === 'error'); + + events = this._events; + if (events) + doError = (doError && events.error == null); + else if (!doError) + return false; + + domain = this.domain; + + // If there is no 'error' event listener then throw. + if (doError) { + er = arguments[1]; + if (domain) { + if (!er) + er = new Error('Uncaught, unspecified "error" event'); + er.domainEmitter = this; + er.domain = domain; + er.domainThrown = false; + domain.emit('error', er); + } else if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + return false; + } + + handler = events[type]; + + if (!handler) + return false; + + var isFn = typeof handler === 'function'; + len = arguments.length; + switch (len) { + // fast cases + case 1: + emitNone(handler, isFn, this); + break; + case 2: + emitOne(handler, isFn, this, arguments[1]); + break; + case 3: + emitTwo(handler, isFn, this, arguments[1], arguments[2]); + break; + case 4: + emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); + break; + // slower + default: + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + emitMany(handler, isFn, this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + + events = target._events; + if (!events) { + events = target._events = new EventHandlers(); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (!existing) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = prepend ? [listener, existing] : + [existing, listener]; + } else { + // If we've already got an array, just append. + if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + } + + // Check for listener leak + if (!existing.warned) { + m = $getMaxListeners(target); + if (m && m > 0 && existing.length > m) { + existing.warned = true; + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + type + ' listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + emitWarning(w); + } + } + } + + return target; +} +function emitWarning(e) { + typeof console.warn === 'function' ? console.warn(e) : console.log(e); +} +EventEmitter$1.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter$1.prototype.on = EventEmitter$1.prototype.addListener; + +EventEmitter$1.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function _onceWrap(target, type, listener) { + var fired = false; + function g() { + target.removeListener(type, g); + if (!fired) { + fired = true; + listener.apply(target, arguments); + } + } + g.listener = listener; + return g; +} + +EventEmitter$1.prototype.once = function once(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter$1.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter$1.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + + events = this._events; + if (!events) + return this; + + list = events[type]; + if (!list) + return this; + + if (list === listener || (list.listener && list.listener === listener)) { + if (--this._eventsCount === 0) + this._events = new EventHandlers(); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list[0] = undefined; + if (--this._eventsCount === 0) { + this._events = new EventHandlers(); + return this; + } else { + delete events[type]; + } + } else { + spliceOne(list, position); + } + + if (events.removeListener) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +// Alias for removeListener added in NodeJS 10.0 +// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener +EventEmitter$1.prototype.off = function(type, listener){ + return this.removeListener(type, listener); +}; + +EventEmitter$1.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events; + + events = this._events; + if (!events) + return this; + + // not listening for removeListener, no need to emit + if (!events.removeListener) { + if (arguments.length === 0) { + this._events = new EventHandlers(); + this._eventsCount = 0; + } else if (events[type]) { + if (--this._eventsCount === 0) + this._events = new EventHandlers(); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + for (var i = 0, key; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = new EventHandlers(); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + do { + this.removeListener(type, listeners[listeners.length - 1]); + } while (listeners[0]); + } + + return this; + }; + +EventEmitter$1.prototype.listeners = function listeners(type) { + var evlistener; + var ret; + var events = this._events; + + if (!events) + ret = []; + else { + evlistener = events[type]; + if (!evlistener) + ret = []; + else if (typeof evlistener === 'function') + ret = [evlistener.listener || evlistener]; + else + ret = unwrapListeners(evlistener); + } + + return ret; +}; + +EventEmitter$1.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount$1.call(emitter, type); + } +}; + +EventEmitter$1.prototype.listenerCount = listenerCount$1; +function listenerCount$1(type) { + var events = this._events; + + if (events) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter$1.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; +}; + +// About 1.5x faster than the two-arg version of Array#splice(). +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) + list[i] = list[k]; + list.pop(); +} + +function arrayClone(arr, i) { + var copy = new Array(i); + while (i--) + copy[i] = arr[i]; + return copy; +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +var _polyfillNode_events = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': EventEmitter$1, + EventEmitter: EventEmitter$1 +}); + +// shim for using process in browser +// based off https://github.com/defunctzombie/node-process/blob/master/browser.js + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +var cachedSetTimeout = defaultSetTimout; +var cachedClearTimeout = defaultClearTimeout; +if (typeof global$1.setTimeout === 'function') { + cachedSetTimeout = setTimeout; +} +if (typeof global$1.clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; +} + +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +function nextTick(fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +var title = 'browser'; +var platform = 'browser'; +var browser$3 = true; +var env = {}; +var argv = []; +var version = ''; // empty string to avoid regexp issues +var versions = {}; +var release = {}; +var config$1 = {}; + +function noop$2() {} + +var on = noop$2; +var addListener = noop$2; +var once$2 = noop$2; +var off = noop$2; +var removeListener = noop$2; +var removeAllListeners = noop$2; +var emit = noop$2; + +function binding(name) { + throw new Error('process.binding is not supported'); +} + +function cwd () { return '/' } +function chdir (dir) { + throw new Error('process.chdir is not supported'); +}function umask() { return 0; } + +// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js +var performance = global$1.performance || {}; +var performanceNow = + performance.now || + performance.mozNow || + performance.msNow || + performance.oNow || + performance.webkitNow || + function(){ return (new Date()).getTime() }; + +// generate timestamp or delta +// see http://nodejs.org/api/process.html#process_process_hrtime +function hrtime(previousTimestamp){ + var clocktime = performanceNow.call(performance)*1e-3; + var seconds = Math.floor(clocktime); + var nanoseconds = Math.floor((clocktime%1)*1e9); + if (previousTimestamp) { + seconds = seconds - previousTimestamp[0]; + nanoseconds = nanoseconds - previousTimestamp[1]; + if (nanoseconds<0) { + seconds--; + nanoseconds += 1e9; + } + } + return [seconds,nanoseconds] +} + +var startTime = new Date(); +function uptime() { + var currentTime = new Date(); + var dif = currentTime - startTime; + return dif / 1000; +} + +var browser$1$1 = { + nextTick: nextTick, + title: title, + browser: browser$3, + env: env, + argv: argv, + version: version, + versions: versions, + on: on, + addListener: addListener, + once: once$2, + off: off, + removeListener: removeListener, + removeAllListeners: removeAllListeners, + emit: emit, + binding: binding, + cwd: cwd, + chdir: chdir, + umask: umask, + hrtime: hrtime, + platform: platform, + release: release, + config: config$1, + uptime: uptime +}; + +var process = browser$1$1; + +var util = {}; + +var isBufferBrowser = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +}; + +(function (exports) { +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(commonjsGlobal.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var length = output.reduce(function(prev, cur) { + if (cur.indexOf('\n') >= 0) ; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = isBufferBrowser; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = inherits_browser$1.exports; + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} +}(util)); + +function BufferList$1() { + this.head = null; + this.tail = null; + this.length = 0; +} + +BufferList$1.prototype.push = function (v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; +}; + +BufferList$1.prototype.unshift = function (v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; +}; + +BufferList$1.prototype.shift = function () { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; +}; + +BufferList$1.prototype.clear = function () { + this.head = this.tail = null; + this.length = 0; +}; + +BufferList$1.prototype.join = function (s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; +}; + +BufferList$1.prototype.concat = function (n) { + if (this.length === 0) return buffer.Buffer.alloc(0); + if (this.length === 1) return this.head.data; + var ret = buffer.Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + p.data.copy(ret, i); + i += p.data.length; + p = p.next; + } + return ret; +}; + +var string_decoder = {}; + +/**/ + +var Buffer$h = safeBuffer$1.exports.Buffer; +/**/ + +var isEncoding = Buffer$h.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +} +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer$h.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +var StringDecoder_1 = string_decoder.StringDecoder = StringDecoder$2; +function StringDecoder$2(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer$h.allocUnsafe(nb); +} + +StringDecoder$2.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder$2.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder$2.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder$2.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + 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; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +Readable$2.ReadableState = ReadableState$1; + +var debug$1 = util.debuglog('stream'); +util.inherits(Readable$2, EventEmitter$1); + +function prependListener$1(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') { + return emitter.prependListener(event, fn); + } else { + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + 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]]; + } +} +function listenerCount (emitter, type) { + return emitter.listeners(type).length; +} +function ReadableState$1(options, stream) { + + options = options || {}; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex$4) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList$1(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + this.decoder = new StringDecoder_1(options.encoding); + this.encoding = options.encoding; + } +} +function Readable$2(options) { + + if (!(this instanceof Readable$2)) return new Readable$2(options); + + this._readableState = new ReadableState$1(options, this); + + // legacy + this.readable = true; + + if (options && typeof options.read === 'function') this._read = options.read; + + EventEmitter$1.call(this); +} + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable$2.prototype.push = function (chunk, encoding) { + var state = this._readableState; + + if (!state.objectMode && typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer$i.from(chunk, encoding); + encoding = ''; + } + } + + return readableAddChunk$1(this, state, chunk, encoding, false); +}; + +// Unshift should *always* be something directly out of read() +Readable$2.prototype.unshift = function (chunk) { + var state = this._readableState; + return readableAddChunk$1(this, state, chunk, '', true); +}; + +Readable$2.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +function readableAddChunk$1(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid$1(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null) { + state.reading = false; + onEofChunk$1(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var _e = new Error('stream.unshift() after end event'); + stream.emit('error', _e); + } else { + var skipAdd; + if (state.decoder && !addToFront && !encoding) { + chunk = state.decoder.write(chunk); + skipAdd = !state.objectMode && chunk.length === 0; + } + + if (!addToFront) state.reading = false; + + // Don't add to the buffer if we've decoded to an empty string chunk and + // we're not in object mode + if (!skipAdd) { + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable$1(stream); + } + } + + maybeReadMore$1(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } + + return needMoreData(state); +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +// backwards compatibility. +Readable$2.prototype.setEncoding = function (enc) { + this._readableState.decoder = new StringDecoder_1(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM$1 = 0x800000; +function computeNewHighWaterMark$1(n) { + if (n >= MAX_HWM$1) { + n = MAX_HWM$1; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead$1(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark$1(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable$2.prototype.read = function (n) { + debug$1('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug$1('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable$1(this);else emitReadable$1(this); + return null; + } + + n = howMuchToRead$1(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable$1(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug$1('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug$1('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug$1('reading or ended', doRead); + } else if (doRead) { + debug$1('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead$1(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList$1(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable$1(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function chunkInvalid$1(state, chunk) { + var er = null; + if (!Buffer$i.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +function onEofChunk$1(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable$1(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable$1(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug$1('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) nextTick(emitReadable_$1, stream);else emitReadable_$1(stream); + } +} + +function emitReadable_$1(stream) { + debug$1('emit readable'); + stream.emit('readable'); + flow$1(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore$1(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + nextTick(maybeReadMore_$1, stream, state); + } +} + +function maybeReadMore_$1(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug$1('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable$2.prototype._read = function (n) { + this.emit('error', new Error('not implemented')); +}; + +Readable$2.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug$1('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false); + + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug$1('onunpipe'); + if (readable === src) { + cleanup(); + } + } + + function onend() { + debug$1('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain$1(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug$1('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug$1('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf$1(state.pipes, dest) !== -1) && !cleanedUp) { + debug$1('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug$1('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (listenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener$1(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug$1('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug$1('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug$1('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain$1(src) { + return function () { + var state = src._readableState; + debug$1('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && src.listeners('data').length) { + state.flowing = true; + flow$1(src); + } + }; +} + +Readable$2.prototype.unpipe = function (dest) { + var state = this._readableState; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var _i = 0; _i < len; _i++) { + dests[_i].emit('unpipe', this); + }return this; + } + + // try to find the right one. + var i = indexOf$1(state.pipes, dest); + if (i === -1) return this; + + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable$2.prototype.on = function (ev, fn) { + var res = EventEmitter$1.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + nextTick(nReadingNextTick$1, this); + } else if (state.length) { + emitReadable$1(this); + } + } + } + + return res; +}; +Readable$2.prototype.addListener = Readable$2.prototype.on; + +function nReadingNextTick$1(self) { + debug$1('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable$2.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug$1('resume'); + state.flowing = true; + resume$1(this, state); + } + return this; +}; + +function resume$1(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + nextTick(resume_$1, stream, state); + } +} + +function resume_$1(stream, state) { + if (!state.reading) { + debug$1('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow$1(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable$2.prototype.pause = function () { + debug$1('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug$1('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow$1(stream) { + var state = stream._readableState; + debug$1('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable$2.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; + + var self = this; + stream.on('end', function () { + debug$1('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); + } + + self.push(null); + }); + + stream.on('data', function (chunk) { + debug$1('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function (ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug$1('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return self; +}; + +// exposed for testing purposes only. +Readable$2._fromList = fromList$1; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList$1(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + 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); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer$i.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable$1(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + nextTick(endReadableNT$1, state, stream); + } +} + +function endReadableNT$1(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} + +function indexOf$1(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} + +// A bit simpler than readable streams. +Writable$2.WritableState = WritableState$1; +util.inherits(Writable$2, EventEmitter$1); + +function nop$1() {} + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +function WritableState$1(options, stream) { + Object.defineProperty(this, 'buffer', { + get: util.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') + }); + options = options || {}; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (stream instanceof Duplex$4) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; + + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite$1(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest$1(this); +} + +WritableState$1.prototype.getBuffer = function writableStateGetBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; +function Writable$2(options) { + + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable$2) && !(this instanceof Duplex$4)) return new Writable$2(options); + + this._writableState = new WritableState$1(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + } + + EventEmitter$1.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable$2.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd$1(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + nextTick(cb, er); +} + +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk$1(stream, state, chunk, cb) { + var valid = true; + var er = false; + // Always throw error if a null is written + // if we are not in object mode then throw + // if it is not a buffer, string, or undefined. + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (!buffer.Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable$2.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (buffer.Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop$1; + + if (state.ended) writeAfterEnd$1(this, cb);else if (validChunk$1(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer$1(this, state, chunk, encoding, cb); + } + + return ret; +}; + +Writable$2.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable$2.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer$1(this, state); + } +}; + +Writable$2.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + 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); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk$1(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = buffer.Buffer.from(chunk, encoding); + } + return chunk; +} + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer$1(stream, state, chunk, encoding, cb) { + chunk = decodeChunk$1(state, chunk, encoding); + + if (buffer.Buffer.isBuffer(chunk)) encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite$1(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite$1(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError$1(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) nextTick(cb, er);else cb(er); + + stream._writableState.errorEmitted = true; + stream.emit('error', er); +} + +function onwriteStateUpdate$1(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite$1(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate$1(state); + + if (er) onwriteError$1(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish$1(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer$1(stream, state); + } + + if (sync) { + /**/ + nextTick(afterWrite$1, stream, state, finished, cb); + /**/ + } else { + afterWrite$1(stream, state, finished, cb); + } + } +} + +function afterWrite$1(stream, state, finished, cb) { + if (!finished) onwriteDrain$1(stream, state); + state.pendingcb--; + cb(); + finishMaybe$1(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain$1(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer$1(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + while (entry) { + buffer[count] = entry; + entry = entry.next; + count += 1; + } + + doWrite$1(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest$1(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite$1(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable$2.prototype._write = function (chunk, encoding, cb) { + cb(new Error('not implemented')); +}; + +Writable$2.prototype._writev = null; + +Writable$2.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable$1(this, state, cb); +}; + +function needFinish$1(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function prefinish$2(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); + } +} + +function finishMaybe$1(stream, state) { + var need = needFinish$1(state); + if (need) { + if (state.pendingcb === 0) { + prefinish$2(stream, state); + state.finished = true; + stream.emit('finish'); + } else { + prefinish$2(stream, state); + } + } + return need; +} + +function endWritable$1(stream, state, cb) { + state.ending = true; + finishMaybe$1(stream, state); + if (cb) { + if (state.finished) nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest$1(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function (err) { + var entry = _this.entry; + _this.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = _this; + } else { + state.corkedRequestsFree = _this; + } + }; +} + +util.inherits(Duplex$4, Readable$2); + +var keys$1 = Object.keys(Writable$2.prototype); +for (var v$1 = 0; v$1 < keys$1.length; v$1++) { + var method$1 = keys$1[v$1]; + if (!Duplex$4.prototype[method$1]) Duplex$4.prototype[method$1] = Writable$2.prototype[method$1]; +} +function Duplex$4(options) { + if (!(this instanceof Duplex$4)) return new Duplex$4(options); + + Readable$2.call(this, options); + Writable$2.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend$1); +} + +// the no-half-open enforcer +function onend$1() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + nextTick(onEndNT$1, this); +} + +function onEndNT$1(self) { + self.end(); +} + +// a transform stream is a readable/writable stream where you do +util.inherits(Transform$4, Duplex$4); + +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform$1(stream, er, data); + }; + + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; +} + +function afterTransform$1(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); + + ts.writechunk = null; + ts.writecb = null; + + if (data !== null && data !== undefined) stream.push(data); + + cb(er); + + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} +function Transform$4(options) { + if (!(this instanceof Transform$4)) return new Transform$4(options); + + Duplex$4.call(this, options); + + this._transformState = new TransformState(this); + + // when the writable side finishes, then flush out anything remaining. + var stream = this; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er) { + done$1(stream, er); + });else done$1(stream); + }); +} + +Transform$4.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex$4.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform$4.prototype._transform = function (chunk, encoding, cb) { + throw new Error('Not implemented'); +}; + +Transform$4.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform$4.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +function done$1(stream, er) { + if (er) return stream.emit('error', er); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; + + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); + + if (ts.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +util.inherits(PassThrough$1, Transform$4); +function PassThrough$1(options) { + if (!(this instanceof PassThrough$1)) return new PassThrough$1(options); + + Transform$4.call(this, options); +} + +PassThrough$1.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +util.inherits(Stream$2, EventEmitter$1); +Stream$2.Readable = Readable$2; +Stream$2.Writable = Writable$2; +Stream$2.Duplex = Duplex$4; +Stream$2.Transform = Transform$4; +Stream$2.PassThrough = PassThrough$1; + +// Backwards-compat with node 0.4.x +Stream$2.Stream = Stream$2; + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream$2() { + EventEmitter$1.call(this); +} + +Stream$2.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EventEmitter$1.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +var _polyfillNode_stream = /*#__PURE__*/Object.freeze({ + __proto__: null, + 'default': Stream$2, + Readable: Readable$2, + Writable: Writable$2, + Duplex: Duplex$4, + Transform: Transform$4, + PassThrough: PassThrough$1, + Stream: Stream$2 +}); + +var require$$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_stream); + +var Buffer$g = safeBuffer$1.exports.Buffer; +var Transform$3 = require$$1.Transform; +var StringDecoder$1 = string_decoder.StringDecoder; +var inherits$b = inherits_browser$1.exports; + +function CipherBase (hashMode) { + Transform$3.call(this); + this.hashMode = typeof hashMode === 'string'; + if (this.hashMode) { + this[hashMode] = this._finalOrDigest; + } else { + this.final = this._finalOrDigest; + } + if (this._final) { + this.__final = this._final; + this._final = null; + } + this._decoder = null; + this._encoding = null; +} +inherits$b(CipherBase, Transform$3); + +CipherBase.prototype.update = function (data, inputEnc, outputEnc) { + if (typeof data === 'string') { + data = Buffer$g.from(data, inputEnc); + } + + var outData = this._update(data); + if (this.hashMode) return this + + if (outputEnc) { + outData = this._toString(outData, outputEnc); + } + + return outData +}; + +CipherBase.prototype.setAutoPadding = function () {}; +CipherBase.prototype.getAuthTag = function () { + throw new Error('trying to get auth tag in unsupported state') +}; + +CipherBase.prototype.setAuthTag = function () { + throw new Error('trying to set auth tag in unsupported state') +}; + +CipherBase.prototype.setAAD = function () { + throw new Error('trying to set aad in unsupported state') +}; + +CipherBase.prototype._transform = function (data, _, next) { + var err; + try { + if (this.hashMode) { + this._update(data); + } else { + this.push(this._update(data)); + } + } catch (e) { + err = e; + } finally { + next(err); + } +}; +CipherBase.prototype._flush = function (done) { + var err; + try { + this.push(this.__final()); + } catch (e) { + err = e; + } + + done(err); +}; +CipherBase.prototype._finalOrDigest = function (outputEnc) { + var outData = this.__final() || Buffer$g.alloc(0); + if (outputEnc) { + outData = this._toString(outData, outputEnc, true); + } + return outData +}; + +CipherBase.prototype._toString = function (value, enc, fin) { + if (!this._decoder) { + this._decoder = new StringDecoder$1(enc); + this._encoding = enc; + } + + if (this._encoding !== enc) throw new Error('can\'t switch encodings') + + var out = this._decoder.write(value); + if (fin) { + out += this._decoder.end(); + } + + return out +}; + +var cipherBase = CipherBase; + +var inherits$a = inherits_browser$1.exports; +var Buffer$f = safeBuffer$1.exports.Buffer; + +var Base$1 = cipherBase; + +var ZEROS$1 = Buffer$f.alloc(128); +var blocksize = 64; + +function Hmac$1 (alg, key) { + Base$1.call(this, 'digest'); + if (typeof key === 'string') { + key = Buffer$f.from(key); + } + + this._alg = alg; + this._key = key; + + if (key.length > blocksize) { + key = alg(key); + } else if (key.length < blocksize) { + key = Buffer$f.concat([key, ZEROS$1], blocksize); + } + + var ipad = this._ipad = Buffer$f.allocUnsafe(blocksize); + var opad = this._opad = Buffer$f.allocUnsafe(blocksize); + + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36; + opad[i] = key[i] ^ 0x5C; + } + + this._hash = [ipad]; +} + +inherits$a(Hmac$1, Base$1); + +Hmac$1.prototype._update = function (data) { + this._hash.push(data); +}; + +Hmac$1.prototype._final = function () { + var h = this._alg(Buffer$f.concat(this._hash)); + return this._alg(Buffer$f.concat([this._opad, h])) +}; +var legacy = Hmac$1; + +var safeBuffer = {exports: {}}; + +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ + +(function (module, exports) { +/* eslint-disable node/no-deprecated-api */ +var buffer$1 = buffer; +var Buffer = buffer$1.Buffer; + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key]; + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer$1; +} else { + // Copy properties from require('buffer') + copyProps(buffer$1, exports); + exports.Buffer = SafeBuffer; +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype); + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer); + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +}; + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size); + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf +}; + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +}; + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer$1.SlowBuffer(size) +}; +}(safeBuffer, safeBuffer.exports)); + +var readableBrowser = {exports: {}}; + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_events); + +var streamBrowser = require$$0.EventEmitter; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require$2 = buffer, + Buffer$e = _require$2.Buffer; + +var _require2 = require$$0$1, + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer$e.prototype.copy.call(src, target, offset); +} + +var buffer_list = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer$e.alloc(0); + var ret = Buffer$e.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer$e.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy$2(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +var destroy_1 = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy$2 +}; + +var errorsBrowser = {}; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +errorsBrowser.codes = codes; + +var ERR_INVALID_OPT_VALUE = errorsBrowser.codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark$2(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +var state = { + getHighWaterMark: getHighWaterMark$2 +}; + +var inherits_browser = {exports: {}}; + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + inherits_browser.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; +} else { + // old school shim for old browsers + inherits_browser.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; +} + +/** + * Module exports. + */ + +var browser$2 = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!commonjsGlobal.localStorage) return false; + } catch (_) { + return false; + } + var val = commonjsGlobal.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +var _stream_writable = Writable$1; +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex$3; +/**/ + +Writable$1.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: browser$2 +}; +/**/ + +/**/ + +var Stream$1 = streamBrowser; +/**/ + + +var Buffer$d = buffer.Buffer; + +var OurUint8Array$1 = commonjsGlobal.Uint8Array || function () {}; + +function _uint8ArrayToBuffer$1(chunk) { + return Buffer$d.from(chunk); +} + +function _isUint8Array$1(obj) { + return Buffer$d.isBuffer(obj) || obj instanceof OurUint8Array$1; +} + +var destroyImpl$1 = destroy_1; + +var _require$1 = state, + getHighWaterMark$1 = _require$1.getHighWaterMark; + +var _require$codes$3 = errorsBrowser.codes, + ERR_INVALID_ARG_TYPE$1 = _require$codes$3.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED$2 = _require$codes$3.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK$1 = _require$codes$3.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes$3.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED$1 = _require$codes$3.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes$3.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes$3.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes$3.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy$1 = destroyImpl$1.errorOrDestroy; + +inherits_browser.exports(Writable$1, Stream$1); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex$3 = Duplex$3 || _stream_duplex; + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex$3; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark$1(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable$1, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable$1) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable$1(options) { + Duplex$3 = Duplex$3 || _stream_duplex; // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex$3; + if (!isDuplex && !realHasInstance.call(Writable$1, this)) return new Writable$1(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream$1.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable$1.prototype.pipe = function () { + errorOrDestroy$1(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy$1(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE$1('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy$1(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable$1.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array$1(chunk); + + if (isBuf && !Buffer$d.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer$1(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable$1.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable$1.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable$1.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + 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); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable$1.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer$d.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable$1.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED$1('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy$1(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy$1(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK$1(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable$1.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED$2('_write()')); +}; + +Writable$1.prototype._writev = null; + +Writable$1.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable$1.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy$1(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish$1(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish$1(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable$1.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable$1.prototype.destroy = destroyImpl$1.destroy; +Writable$1.prototype._undestroy = destroyImpl$1.undestroy; + +Writable$1.prototype._destroy = function (err, cb) { + cb(err); +}; + +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +var _stream_duplex = Duplex$2; + +var Readable$1 = _stream_readable; + +var Writable = _stream_writable; + +inherits_browser.exports(Duplex$2, Readable$1); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex$2.prototype[method]) Duplex$2.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex$2(options) { + if (!(this instanceof Duplex$2)) return new Duplex$2(options); + Readable$1.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex$2.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex$2.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex$2.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex$2.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +var ERR_STREAM_PREMATURE_CLOSE = errorsBrowser.codes.ERR_STREAM_PREMATURE_CLOSE; + +function once$1(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop$1() {} + +function isRequest$1(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos$1(stream, opts, callback) { + if (typeof opts === 'function') return eos$1(stream, null, opts); + if (!opts) opts = {}; + callback = once$1(callback || noop$1); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest$1(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +var endOfStream = eos$1; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = endOfStream; + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator$1 = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +var async_iterator = createReadableStreamAsyncIterator$1; + +var fromBrowser = function () { + throw new Error('Readable.from is not available in the browser') +}; + +var _stream_readable = Readable; +/**/ + +var Duplex$1; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +require$$0.EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = streamBrowser; +/**/ + + +var Buffer$c = buffer.Buffer; + +var OurUint8Array = commonjsGlobal.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer$c.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer$c.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require$$0$1; + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = buffer_list; + +var destroyImpl = destroy_1; + +var _require = state, + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes$2 = errorsBrowser.codes, + ERR_INVALID_ARG_TYPE = _require$codes$2.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes$2.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED$1 = _require$codes$2.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes$2.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +inherits_browser.exports(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + 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 + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + 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]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex$1 = Duplex$1 || _stream_duplex; + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex$1; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = string_decoder.StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex$1 = Duplex$1 || _stream_duplex; + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex$1; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer$c.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer$c.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = string_decoder.StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED$1('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = async_iterator; + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = fromBrowser; + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} + +var _stream_transform = Transform$2; + +var _require$codes$1 = errorsBrowser.codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes$1.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes$1.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes$1.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes$1.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = _stream_duplex; + +inherits_browser.exports(Transform$2, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform$2(options) { + if (!(this instanceof Transform$2)) return new Transform$2(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform$2.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform$2.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform$2.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform$2.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform$2.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} + +var _stream_passthrough = PassThrough; + +var Transform$1 = _stream_transform; + +inherits_browser.exports(PassThrough, Transform$1); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform$1.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = errorsBrowser.codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = endOfStream; + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +var pipeline_1 = pipeline; + +(function (module, exports) { +exports = module.exports = _stream_readable; +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = _stream_writable; +exports.Duplex = _stream_duplex; +exports.Transform = _stream_transform; +exports.PassThrough = _stream_passthrough; +exports.finished = endOfStream; +exports.pipeline = pipeline_1; +}(readableBrowser, readableBrowser.exports)); + +var Buffer$b = safeBuffer.exports.Buffer; +var Transform = readableBrowser.exports.Transform; +var inherits$9 = inherits_browser.exports; + +function throwIfNotStringOrBuffer (val, prefix) { + if (!Buffer$b.isBuffer(val) && typeof val !== 'string') { + throw new TypeError(prefix + ' must be a string or a buffer') + } +} + +function HashBase$2 (blockSize) { + Transform.call(this); + + this._block = Buffer$b.allocUnsafe(blockSize); + this._blockSize = blockSize; + this._blockOffset = 0; + this._length = [0, 0, 0, 0]; + + this._finalized = false; +} + +inherits$9(HashBase$2, Transform); + +HashBase$2.prototype._transform = function (chunk, encoding, callback) { + var error = null; + try { + this.update(chunk, encoding); + } catch (err) { + error = err; + } + + callback(error); +}; + +HashBase$2.prototype._flush = function (callback) { + var error = null; + try { + this.push(this.digest()); + } catch (err) { + error = err; + } + + callback(error); +}; + +HashBase$2.prototype.update = function (data, encoding) { + throwIfNotStringOrBuffer(data, 'Data'); + if (this._finalized) throw new Error('Digest already called') + if (!Buffer$b.isBuffer(data)) data = Buffer$b.from(data, encoding); + + // consume data + var block = this._block; + var offset = 0; + while (this._blockOffset + data.length - offset >= this._blockSize) { + for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]; + this._update(); + this._blockOffset = 0; + } + while (offset < data.length) block[this._blockOffset++] = data[offset++]; + + // update length + for (var j = 0, carry = data.length * 8; carry > 0; ++j) { + this._length[j] += carry; + carry = (this._length[j] / 0x0100000000) | 0; + if (carry > 0) this._length[j] -= 0x0100000000 * carry; + } + + return this +}; + +HashBase$2.prototype._update = function () { + throw new Error('_update is not implemented') +}; + +HashBase$2.prototype.digest = function (encoding) { + if (this._finalized) throw new Error('Digest already called') + this._finalized = true; + + var digest = this._digest(); + if (encoding !== undefined) digest = digest.toString(encoding); + + // reset state + this._block.fill(0); + this._blockOffset = 0; + for (var i = 0; i < 4; ++i) this._length[i] = 0; + + return digest +}; + +HashBase$2.prototype._digest = function () { + throw new Error('_digest is not implemented') +}; + +var hashBase = HashBase$2; + +var inherits$8 = inherits_browser$1.exports; +var HashBase$1 = hashBase; +var Buffer$a = safeBuffer$1.exports.Buffer; + +var ARRAY16$1 = new Array(16); + +function MD5$1 () { + HashBase$1.call(this, 64); + + // state + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; +} + +inherits$8(MD5$1, HashBase$1); + +MD5$1.prototype._update = function () { + var M = ARRAY16$1; + for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4); + + var a = this._a; + var b = this._b; + var c = this._c; + var d = this._d; + + a = fnF(a, b, c, d, M[0], 0xd76aa478, 7); + d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12); + c = fnF(c, d, a, b, M[2], 0x242070db, 17); + b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22); + a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7); + d = fnF(d, a, b, c, M[5], 0x4787c62a, 12); + c = fnF(c, d, a, b, M[6], 0xa8304613, 17); + b = fnF(b, c, d, a, M[7], 0xfd469501, 22); + a = fnF(a, b, c, d, M[8], 0x698098d8, 7); + d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12); + c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17); + b = fnF(b, c, d, a, M[11], 0x895cd7be, 22); + a = fnF(a, b, c, d, M[12], 0x6b901122, 7); + d = fnF(d, a, b, c, M[13], 0xfd987193, 12); + c = fnF(c, d, a, b, M[14], 0xa679438e, 17); + b = fnF(b, c, d, a, M[15], 0x49b40821, 22); + + a = fnG(a, b, c, d, M[1], 0xf61e2562, 5); + d = fnG(d, a, b, c, M[6], 0xc040b340, 9); + c = fnG(c, d, a, b, M[11], 0x265e5a51, 14); + b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20); + a = fnG(a, b, c, d, M[5], 0xd62f105d, 5); + d = fnG(d, a, b, c, M[10], 0x02441453, 9); + c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14); + b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20); + a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5); + d = fnG(d, a, b, c, M[14], 0xc33707d6, 9); + c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14); + b = fnG(b, c, d, a, M[8], 0x455a14ed, 20); + a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5); + d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9); + c = fnG(c, d, a, b, M[7], 0x676f02d9, 14); + b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20); + + a = fnH(a, b, c, d, M[5], 0xfffa3942, 4); + d = fnH(d, a, b, c, M[8], 0x8771f681, 11); + c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16); + b = fnH(b, c, d, a, M[14], 0xfde5380c, 23); + a = fnH(a, b, c, d, M[1], 0xa4beea44, 4); + d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11); + c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16); + b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23); + a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4); + d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11); + c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16); + b = fnH(b, c, d, a, M[6], 0x04881d05, 23); + a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4); + d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11); + c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16); + b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23); + + a = fnI(a, b, c, d, M[0], 0xf4292244, 6); + d = fnI(d, a, b, c, M[7], 0x432aff97, 10); + c = fnI(c, d, a, b, M[14], 0xab9423a7, 15); + b = fnI(b, c, d, a, M[5], 0xfc93a039, 21); + a = fnI(a, b, c, d, M[12], 0x655b59c3, 6); + d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10); + c = fnI(c, d, a, b, M[10], 0xffeff47d, 15); + b = fnI(b, c, d, a, M[1], 0x85845dd1, 21); + a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6); + d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10); + c = fnI(c, d, a, b, M[6], 0xa3014314, 15); + b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21); + a = fnI(a, b, c, d, M[4], 0xf7537e82, 6); + d = fnI(d, a, b, c, M[11], 0xbd3af235, 10); + c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15); + b = fnI(b, c, d, a, M[9], 0xeb86d391, 21); + + this._a = (this._a + a) | 0; + this._b = (this._b + b) | 0; + this._c = (this._c + c) | 0; + this._d = (this._d + d) | 0; +}; + +MD5$1.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80; + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64); + this._update(); + this._blockOffset = 0; + } + + this._block.fill(0, this._blockOffset, 56); + this._block.writeUInt32LE(this._length[0], 56); + this._block.writeUInt32LE(this._length[1], 60); + this._update(); + + // produce result + var buffer = Buffer$a.allocUnsafe(16); + buffer.writeInt32LE(this._a, 0); + buffer.writeInt32LE(this._b, 4); + buffer.writeInt32LE(this._c, 8); + buffer.writeInt32LE(this._d, 12); + return buffer +}; + +function rotl$1 (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fnF (a, b, c, d, m, k, s) { + return (rotl$1((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 +} + +function fnG (a, b, c, d, m, k, s) { + return (rotl$1((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 +} + +function fnH (a, b, c, d, m, k, s) { + return (rotl$1((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 +} + +function fnI (a, b, c, d, m, k, s) { + return (rotl$1((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 +} + +var md5_js = MD5$1; + +var MD5 = md5_js; + +var md5$1 = function (buffer) { + return new MD5().update(buffer).digest() +}; + +var Buffer$9 = buffer.Buffer; +var inherits$7 = inherits_browser$1.exports; +var HashBase = hashBase; + +var ARRAY16 = new Array(16); + +var 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 +]; + +var 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 +]; + +var 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 +]; + +var 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 +]; + +var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]; +var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]; + +function RIPEMD160$1 () { + HashBase.call(this, 64); + + // state + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; +} + +inherits$7(RIPEMD160$1, HashBase); + +RIPEMD160$1.prototype._update = function () { + var words = ARRAY16; + for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4); + + var al = this._a | 0; + var bl = this._b | 0; + var cl = this._c | 0; + var dl = this._d | 0; + var el = this._e | 0; + + var ar = this._a | 0; + var br = this._b | 0; + var cr = this._c | 0; + var dr = this._d | 0; + var er = this._e | 0; + + // computation + for (var i = 0; i < 80; i += 1) { + var tl; + var tr; + if (i < 16) { + tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]); + tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]); + } else if (i < 32) { + tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]); + tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]); + } else if (i < 48) { + tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]); + tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]); + } else if (i < 64) { + tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]); + tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]); + } else { // if (i<80) { + tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]); + tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]); + } + + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = tl; + + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = tr; + } + + // update state + var t = (this._b + cl + dr) | 0; + this._b = (this._c + dl + er) | 0; + this._c = (this._d + el + ar) | 0; + this._d = (this._e + al + br) | 0; + this._e = (this._a + bl + cr) | 0; + this._a = t; +}; + +RIPEMD160$1.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80; + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64); + this._update(); + this._blockOffset = 0; + } + + this._block.fill(0, this._blockOffset, 56); + this._block.writeUInt32LE(this._length[0], 56); + this._block.writeUInt32LE(this._length[1], 60); + this._update(); + + // produce result + var buffer = Buffer$9.alloc ? Buffer$9.alloc(20) : new Buffer$9(20); + buffer.writeInt32LE(this._a, 0); + buffer.writeInt32LE(this._b, 4); + buffer.writeInt32LE(this._c, 8); + buffer.writeInt32LE(this._d, 12); + buffer.writeInt32LE(this._e, 16); + return buffer +}; + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fn1 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn2 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 +} + +function fn3 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn4 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 +} + +function fn5 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 +} + +var ripemd160 = RIPEMD160$1; + +var sha_js = {exports: {}}; + +var Buffer$8 = safeBuffer$1.exports.Buffer; + +// prototype class for hash functions +function Hash$6 (blockSize, finalSize) { + this._block = Buffer$8.alloc(blockSize); + this._finalSize = finalSize; + this._blockSize = blockSize; + this._len = 0; +} + +Hash$6.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8'; + data = Buffer$8.from(data, enc); + } + + var block = this._block; + var blockSize = this._blockSize; + var length = data.length; + var accum = this._len; + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize; + var remainder = Math.min(length - offset, blockSize - assigned); + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i]; + } + + accum += remainder; + offset += remainder; + + if ((accum % blockSize) === 0) { + this._update(block); + } + } + + this._len += length; + return this +}; + +Hash$6.prototype.digest = function (enc) { + var rem = this._len % this._blockSize; + + this._block[rem] = 0x80; + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1); + + if (rem >= this._finalSize) { + this._update(this._block); + this._block.fill(0); + } + + var bits = this._len * 8; + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4); + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0; + var highBits = (bits - lowBits) / 0x100000000; + + this._block.writeUInt32BE(highBits, this._blockSize - 8); + this._block.writeUInt32BE(lowBits, this._blockSize - 4); + } + + this._update(this._block); + var hash = this._hash(); + + return enc ? hash.toString(enc) : hash +}; + +Hash$6.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +}; + +var hash = Hash$6; + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ + +var inherits$6 = inherits_browser$1.exports; +var Hash$5 = hash; +var Buffer$7 = safeBuffer$1.exports.Buffer; + +var K$3 = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +]; + +var W$5 = new Array(80); + +function Sha () { + this.init(); + this._w = W$5; + + Hash$5.call(this, 64, 56); +} + +inherits$6(Sha, Hash$5); + +Sha.prototype.init = function () { + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; + + return this +}; + +function rotl5$1 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30$1 (num) { + return (num << 30) | (num >>> 2) +} + +function ft$1 (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = (rotl5$1(a) + ft$1(s, b, c, d) + e + W[j] + K$3[s]) | 0; + + e = d; + d = c; + c = rotl30$1(b); + b = a; + a = t; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; +}; + +Sha.prototype._hash = function () { + var H = Buffer$7.allocUnsafe(20); + + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + + return H +}; + +var sha$1 = Sha; + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var inherits$5 = inherits_browser$1.exports; +var Hash$4 = hash; +var Buffer$6 = safeBuffer$1.exports.Buffer; + +var K$2 = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +]; + +var W$4 = new Array(80); + +function Sha1 () { + this.init(); + this._w = W$4; + + Hash$4.call(this, 64, 56); +} + +inherits$5(Sha1, Hash$4); + +Sha1.prototype.init = function () { + this._a = 0x67452301; + this._b = 0xefcdab89; + this._c = 0x98badcfe; + this._d = 0x10325476; + this._e = 0xc3d2e1f0; + + return this +}; + +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha1.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]); + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K$2[s]) | 0; + + e = d; + d = c; + c = rotl30(b); + b = a; + a = t; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; +}; + +Sha1.prototype._hash = function () { + var H = Buffer$6.allocUnsafe(20); + + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + + return H +}; + +var sha1 = Sha1; + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits$4 = inherits_browser$1.exports; +var Hash$3 = hash; +var Buffer$5 = safeBuffer$1.exports.Buffer; + +var K$1 = [ + 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 +]; + +var W$3 = new Array(64); + +function Sha256$1 () { + this.init(); + + this._w = W$3; // new Array(64) + + Hash$3.call(this, 64, 56); +} + +inherits$4(Sha256$1, Hash$3); + +Sha256$1.prototype.init = function () { + this._a = 0x6a09e667; + this._b = 0xbb67ae85; + this._c = 0x3c6ef372; + this._d = 0xa54ff53a; + this._e = 0x510e527f; + this._f = 0x9b05688c; + this._g = 0x1f83d9ab; + this._h = 0x5be0cd19; + + return this +}; + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj$1 (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0$1 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1$1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256$1.prototype._update = function (M) { + var W = this._w; + + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + var f = this._f | 0; + var g = this._g | 0; + var h = this._h | 0; + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0; + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1$1(e) + ch(e, f, g) + K$1[j] + W[j]) | 0; + var T2 = (sigma0$1(a) + maj$1(a, b, c)) | 0; + + h = g; + g = f; + f = e; + e = (d + T1) | 0; + d = c; + c = b; + b = a; + a = (T1 + T2) | 0; + } + + this._a = (a + this._a) | 0; + this._b = (b + this._b) | 0; + this._c = (c + this._c) | 0; + this._d = (d + this._d) | 0; + this._e = (e + this._e) | 0; + this._f = (f + this._f) | 0; + this._g = (g + this._g) | 0; + this._h = (h + this._h) | 0; +}; + +Sha256$1.prototype._hash = function () { + var H = Buffer$5.allocUnsafe(32); + + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + H.writeInt32BE(this._h, 28); + + return H +}; + +var sha256 = Sha256$1; + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits$3 = inherits_browser$1.exports; +var Sha256 = sha256; +var Hash$2 = hash; +var Buffer$4 = safeBuffer$1.exports.Buffer; + +var W$2 = new Array(64); + +function Sha224 () { + this.init(); + + this._w = W$2; // new Array(64) + + Hash$2.call(this, 64, 56); +} + +inherits$3(Sha224, Sha256); + +Sha224.prototype.init = function () { + this._a = 0xc1059ed8; + this._b = 0x367cd507; + this._c = 0x3070dd17; + this._d = 0xf70e5939; + this._e = 0xffc00b31; + this._f = 0x68581511; + this._g = 0x64f98fa7; + this._h = 0xbefa4fa4; + + return this +}; + +Sha224.prototype._hash = function () { + var H = Buffer$4.allocUnsafe(28); + + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + + return H +}; + +var sha224 = Sha224; + +var inherits$2 = inherits_browser$1.exports; +var Hash$1 = hash; +var Buffer$3 = safeBuffer$1.exports.Buffer; + +var 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 +]; + +var W$1 = new Array(160); + +function Sha512 () { + this.init(); + this._w = W$1; + + Hash$1.call(this, 128, 112); +} + +inherits$2(Sha512, Hash$1); + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667; + this._bh = 0xbb67ae85; + this._ch = 0x3c6ef372; + this._dh = 0xa54ff53a; + this._eh = 0x510e527f; + this._fh = 0x9b05688c; + this._gh = 0x1f83d9ab; + this._hh = 0x5be0cd19; + + this._al = 0xf3bcc908; + this._bl = 0x84caa73b; + this._cl = 0xfe94f82b; + this._dl = 0x5f1d36f1; + this._el = 0xade682d1; + this._fl = 0x2b3e6c1f; + this._gl = 0xfb41bd6b; + this._hl = 0x137e2179; + + return this +}; + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w; + + var ah = this._ah | 0; + var bh = this._bh | 0; + var ch = this._ch | 0; + var dh = this._dh | 0; + var eh = this._eh | 0; + var fh = this._fh | 0; + var gh = this._gh | 0; + var hh = this._hh | 0; + + var al = this._al | 0; + var bl = this._bl | 0; + var cl = this._cl | 0; + var dl = this._dl | 0; + var el = this._el | 0; + var fl = this._fl | 0; + var gl = this._gl | 0; + var hl = this._hl | 0; + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4); + W[i + 1] = M.readInt32BE(i * 4 + 4); + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2]; + var xl = W[i - 15 * 2 + 1]; + var gamma0 = Gamma0(xh, xl); + var gamma0l = Gamma0l(xl, xh); + + xh = W[i - 2 * 2]; + xl = W[i - 2 * 2 + 1]; + var gamma1 = Gamma1(xh, xl); + var gamma1l = Gamma1l(xl, xh); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2]; + var Wi7l = W[i - 7 * 2 + 1]; + + var Wi16h = W[i - 16 * 2]; + var Wi16l = W[i - 16 * 2 + 1]; + + var Wil = (gamma0l + Wi7l) | 0; + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0; + Wil = (Wil + gamma1l) | 0; + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0; + Wil = (Wil + Wi16l) | 0; + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0; + + W[i] = Wih; + W[i + 1] = Wil; + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j]; + Wil = W[j + 1]; + + var majh = maj(ah, bh, ch); + var majl = maj(al, bl, cl); + + var sigma0h = sigma0(ah, al); + var sigma0l = sigma0(al, ah); + var sigma1h = sigma1(eh, el); + var sigma1l = sigma1(el, eh); + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j]; + var Kil = K[j + 1]; + + var chh = Ch(eh, fh, gh); + var chl = Ch(el, fl, gl); + + var t1l = (hl + sigma1l) | 0; + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0; + t1l = (t1l + chl) | 0; + t1h = (t1h + chh + getCarry(t1l, chl)) | 0; + t1l = (t1l + Kil) | 0; + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0; + t1l = (t1l + Wil) | 0; + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0; + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0; + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0; + + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + getCarry(el, dl)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + getCarry(al, t1l)) | 0; + } + + this._al = (this._al + al) | 0; + this._bl = (this._bl + bl) | 0; + this._cl = (this._cl + cl) | 0; + this._dl = (this._dl + dl) | 0; + this._el = (this._el + el) | 0; + this._fl = (this._fl + fl) | 0; + this._gl = (this._gl + gl) | 0; + this._hl = (this._hl + hl) | 0; + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0; + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0; + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0; + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0; + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0; + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0; + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0; + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0; +}; + +Sha512.prototype._hash = function () { + var H = Buffer$3.allocUnsafe(64); + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + writeInt64BE(this._gh, this._gl, 48); + writeInt64BE(this._hh, this._hl, 56); + + return H +}; + +var sha512 = Sha512; + +var inherits$1 = inherits_browser$1.exports; +var SHA512 = sha512; +var Hash = hash; +var Buffer$2 = safeBuffer$1.exports.Buffer; + +var W = new Array(160); + +function Sha384 () { + this.init(); + this._w = W; + + Hash.call(this, 128, 112); +} + +inherits$1(Sha384, SHA512); + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d; + this._bh = 0x629a292a; + this._ch = 0x9159015a; + this._dh = 0x152fecd8; + this._eh = 0x67332667; + this._fh = 0x8eb44a87; + this._gh = 0xdb0c2e0d; + this._hh = 0x47b5481d; + + this._al = 0xc1059ed8; + this._bl = 0x367cd507; + this._cl = 0x3070dd17; + this._dl = 0xf70e5939; + this._el = 0xffc00b31; + this._fl = 0x68581511; + this._gl = 0x64f98fa7; + this._hl = 0xbefa4fa4; + + return this +}; + +Sha384.prototype._hash = function () { + var H = Buffer$2.allocUnsafe(48); + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + + return H +}; + +var sha384 = Sha384; + +var exports = sha_js.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase(); + + var Algorithm = exports[algorithm]; + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +}; + +exports.sha = sha$1; +exports.sha1 = sha1; +exports.sha224 = sha224; +exports.sha256 = sha256; +exports.sha384 = sha384; +exports.sha512 = sha512; + +var inherits = inherits_browser$1.exports; +var Legacy = legacy; +var Base = cipherBase; +var Buffer$1 = safeBuffer$1.exports.Buffer; +var md5 = md5$1; +var RIPEMD160 = ripemd160; + +var sha = sha_js.exports; + +var ZEROS = Buffer$1.alloc(128); + +function Hmac (alg, key) { + Base.call(this, 'digest'); + if (typeof key === 'string') { + key = Buffer$1.from(key); + } + + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64; + + this._alg = alg; + this._key = key; + if (key.length > blocksize) { + var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); + key = hash.update(key).digest(); + } else if (key.length < blocksize) { + key = Buffer$1.concat([key, ZEROS], blocksize); + } + + var ipad = this._ipad = Buffer$1.allocUnsafe(blocksize); + var opad = this._opad = Buffer$1.allocUnsafe(blocksize); + + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36; + opad[i] = key[i] ^ 0x5C; + } + this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); + this._hash.update(ipad); +} + +inherits(Hmac, Base); + +Hmac.prototype._update = function (data) { + this._hash.update(data); +}; + +Hmac.prototype._final = function () { + var h = this._hash.digest(); + var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg); + return hash.update(this._opad).update(h).digest() +}; + +var browser$1 = function createHmac (alg, key) { + alg = alg.toLowerCase(); + if (alg === 'rmd160' || alg === 'ripemd160') { + return new Hmac('rmd160', key) + } + if (alg === 'md5') { + return new Legacy(md5, key) + } + return new Hmac(alg, key) +}; + +var naclFast = {exports: {}}; + +(function (module) { +(function(nacl) { + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; +} + +function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; +} + +function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); +} + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +*/ + +var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +}; + +poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; +}; + +poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; +}; + +poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } +}; + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; +} + +function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; +} + +function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +var 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 +]; + +function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = Math.floor((x[j] + 128) / 256); + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + return n; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES, + + gf: gf, + D: D, + L: L, + pack25519: pack25519, + unpack25519: unpack25519, + M: M, + A: A, + S: S, + Z: Z, + pow2523: pow2523, + add: add, + set25519: set25519, + modL: modL, + scalarmult: scalarmult, + scalarbase: scalarbase, +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + for (var i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Uint8Array)) + throw new TypeError('unexpected type, use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return null; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof commonjsRequire !== 'undefined') { + // Node.js. + crypto = require$$0$1; + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})(module.exports ? module.exports : (self.nacl = self.nacl || {})); +}(naclFast)); + +var utils = {}; + +Object.defineProperty(utils, "__esModule", { value: true }); +utils.replaceDerive = utils.pathRegex = void 0; +utils.pathRegex = new RegExp("^m(\\/[0-9]+')+$"); +utils.replaceDerive = (val) => val.replace("'", ''); + +(function (exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.derivePath = exports.isValidPath = exports.getPublicKey = exports.getMasterKeyFromSeed = void 0; +const createHmac = browser$1; +const nacl = naclFast.exports; +const utils_1 = utils; +const ED25519_CURVE = 'ed25519 seed'; +const HARDENED_OFFSET = 0x80000000; +exports.getMasterKeyFromSeed = (seed) => { + const hmac = createHmac('sha512', ED25519_CURVE); + const I = hmac.update(Buffer$i.from(seed, 'hex')).digest(); + const IL = I.slice(0, 32); + const IR = I.slice(32); + return { + key: IL, + chainCode: IR, + }; +}; +const CKDPriv = ({ key, chainCode }, index) => { + const indexBuffer = Buffer$i.allocUnsafe(4); + indexBuffer.writeUInt32BE(index, 0); + const data = Buffer$i.concat([Buffer$i.alloc(1, 0), key, indexBuffer]); + const I = createHmac('sha512', chainCode) + .update(data) + .digest(); + const IL = I.slice(0, 32); + const IR = I.slice(32); + return { + key: IL, + chainCode: IR, + }; +}; +exports.getPublicKey = (privateKey, withZeroByte = true) => { + const keyPair = nacl.sign.keyPair.fromSeed(privateKey); + const signPk = keyPair.secretKey.subarray(32); + const zero = Buffer$i.alloc(1, 0); + return withZeroByte ? + Buffer$i.concat([zero, Buffer$i.from(signPk)]) : + Buffer$i.from(signPk); +}; +exports.isValidPath = (path) => { + if (!utils_1.pathRegex.test(path)) { + return false; + } + return !path + .split('/') + .slice(1) + .map(utils_1.replaceDerive) + .some(isNaN); +}; +exports.derivePath = (path, seed, offset = HARDENED_OFFSET) => { + if (!exports.isValidPath(path)) { + throw new Error('Invalid derivation path'); + } + const { key, chainCode } = exports.getMasterKeyFromSeed(seed); + const segments = path + .split('/') + .slice(1) + .map(utils_1.replaceDerive) + .map(el => parseInt(el, 10)); + return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode }); +}; +}(dist)); + +var bip32 = /*@__PURE__*/getDefaultExportFromCjs(dist); + +/** + * Create a wallet object for signing and verifying messages + * + * @param {Object} [args={}] Args Object + * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from + * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users + * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages + * @return {Object} Wallet Object with sign and verify methods + */ +let create_wallet = (args = {}) => { + let { sk = undefined, keepPrivate = false, seed = null } = args; + + let vk; + + if (sk) { + vk = get_vk(sk); + } else { + let keyPair = new_wallet(seed); + vk = keyPair.vk; + sk = keyPair.sk; + } + + const wallet = () => { + return { + sign: (msg) => sign(sk, msg), + verify: (msg, sig) => verify(vk, msg, sig), + vk, + sk: !keepPrivate ? sk : undefined, + }; + }; + + return wallet(); +}; + +/** + * @param Uint8Array(length: 32) seed + * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be + * avoided by everyday users + * + * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + */ +function generate_keys(seed = null) { + var kp = null; + if (seed == null) { + kp = nacl.sign.keyPair(); + } else { + kp = nacl.sign.keyPair.fromSeed(seed); + } + // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey + // and the vk is the last 32 bytes of the secretKey as well as the publicKey + // { + // 'publicKey': , + // 'secretKey': + // } + return { + sk: new Uint8Array(kp["secretKey"].slice(0, 32)), + vk: new Uint8Array(kp["secretKey"].slice(32, 64)), + }; +} +/** + * @param String sk + * sk: A 64 character long hex representation of a signing key (private key) + * + * @return String vk + * vk: A 64 character long hex representation of a verify key (public key) + */ +function get_vk(sk) { + var kp = format_to_keys(sk); + var kpf = keys_to_format(kp); + return kpf.vk; +} +/** + * @param String sk + * sk: A 64 character long hex representation of a signing key (private key) + * + * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + */ +function format_to_keys(sk) { + var skf = hex2buf(sk); + var kp = generate_keys(skf); + return kp; +} +/** + * @param Object kp + * kp: Object containing the properties sk and vk + * sk: Signing Key (SK) represents 32 byte signing key + * vk: Verify Key (VK) represents a 32 byte verify key + * + * @return {string, string} { sk, vk } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + */ +function keys_to_format(kp) { + return { + vk: buf2hex(kp.vk), + sk: buf2hex(kp.sk), + }; +} +/** + * @param Uint8Array(length: 32) seed + * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be + * avoided by everyday users + * + * @return {string, string} { sk, vk } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + */ +function new_wallet(seed = null) { + const keys = generate_keys(seed); + return keys_to_format(keys); +} + +/** + * + * @param mnemonic 24 word seed phrase + * @param derivationIndex bip32 derivation key index + * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} + * derivationIndex: bip32 derivation key index + * vk: Verify Key (VK) represented as a 64 character hex string + * sk: Signing Key (SK) represented as a 64 character hex string + * mnemonic: 24 word seed phrase + + */ +function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { + let finalMnemonic; + + if (mnemonic !== undefined) { + finalMnemonic = mnemonic; + } else { + finalMnemonic = bip39_browser.exports.generateMnemonic(256); + } + + const seed = bip39_browser.exports.mnemonicToSeedSync(finalMnemonic).toString("hex"); + + const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; + const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); + + const privateKey = key.toString("hex"); + const publicKey = bip32.getPublicKey(key, false).toString("hex"); + + if (publicKey !== get_vk(privateKey)) { + throw Error("Bip32 public key does not match with Lamden public key!"); + } + + return { + sk: privateKey, + vk: publicKey, + derivationIndex: derivationIndex, + mnemonic: finalMnemonic, + }; +} + +/** + * @param mnemonic 24 word seed phrase + * @param derivationIndex bip32 derivation key index + * + * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } + * sk: Signing Key (SK) represented as a 64 character hex string + * vk: Verify Key (VK) represented as a 64 character hex string + * derivationIndex: Bip32 derivation index + * mnemonic: 24 word seed phrase + */ +function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { + return generate_keys_bip39(mnemonic, derivationIndex); +} + +/** + * @param String sk + * @param Uint8Array msg + * sk: A 64 character long hex representation of a signing key (private key) + * msg: A Uint8Array of bytes representing the message you would like to sign + * + * @return String sig + * sig: A 128 character long hex string representing the message's signature + */ +function sign(sk, msg) { + var kp = format_to_keys(sk); + // This is required due to the secretKey required to sign a transaction + // in the js implementation of NaCL being the combination of the sk and + // vk for some stupid reason. That being said, we still want the sk and + // vk objects to exist in 32-byte string format (same as cilantro's + // python implementation) when presented to the user. + var jsnacl_sk = concatUint8Arrays(kp.sk, kp.vk); + return buf2hex(nacl.sign.detached(msg, jsnacl_sk)); +} +/** + * @param String vk + * @param Uint8Array msg + * @param String sig + * vk: A 64 character long hex representation of a verify key (public key) + * msg: A Uint8Array (bytes) representation of a message that has been signed + * sig: A 128 character long hex representation of a nacl signature + * + * @return Bool result + * result: true if verify checked out, false if not + */ +function verify(vk, msg, sig) { + var vkb = hex2buf(vk); + var sigb = hex2buf(sig); + try { + return nacl.sign.detached.verify(msg, sigb, vkb); + } catch (_a) { + return false; + } +} + +var wallet = /*#__PURE__*/Object.freeze({ + __proto__: null, + create_wallet: create_wallet, + generate_keys: generate_keys, + get_vk: get_vk, + format_to_keys: format_to_keys, + keys_to_format: keys_to_format, + new_wallet: new_wallet, + new_wallet_bip39: new_wallet_bip39, + sign: sign, + verify: verify +}); + +class EventEmitter { + constructor() { + this._events = {}; + } + + on(name, listener) { + if (!this._events[name]) { + this._events[name] = []; + } + + this._events[name].push(listener); + } + + removeListener(name, listenerToRemove) { + if (!this._events[name]) { + throw new Error(`Can't remove a listener. Event "${name}" doesn't exits.`); + } + + const filterListeners = (listener) => listener !== listenerToRemove; + this._events[name] = this._events[name].filter(filterListeners); + } + + emit(name, data) { + if (!this._events[name]) return + + const fireCallbacks = (callback) => { + callback(data); + }; + + this._events[name].forEach(fireCallbacks); + } + } + +var browser = {exports: {}}; + +(function (module, exports) { + +// ref: https://github.com/tc39/proposal-global +var getGlobal = function () { + // the only reliable means to get the global object is + // `Function('return this')()` + // However, this causes CSP violations in Chrome apps. + if (typeof self !== 'undefined') { return self; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + throw new Error('unable to locate global object'); +}; + +var global = getGlobal(); + +module.exports = exports = global.fetch; + +// Needed for TypeScript and Webpack. +if (global.fetch) { + exports.default = global.fetch.bind(global); +} + +exports.Headers = global.Headers; +exports.Request = global.Request; +exports.Response = global.Response; +}(browser, browser.exports)); + +var fetch = browser.exports; + +var bignumber = {exports: {}}; + +(function (module) { +(function (globalObject) { + +/* + * bignumber.js v9.0.0 + * A JavaScript library for arbitrary-precision arithmetic. + * https://github.com/MikeMcl/bignumber.js + * Copyright (c) 2019 Michael Mclaughlin + * MIT Licensed. + * + * BigNumber.prototype methods | BigNumber methods + * | + * absoluteValue abs | clone + * comparedTo | config set + * decimalPlaces dp | DECIMAL_PLACES + * dividedBy div | ROUNDING_MODE + * dividedToIntegerBy idiv | EXPONENTIAL_AT + * exponentiatedBy pow | RANGE + * integerValue | CRYPTO + * isEqualTo eq | MODULO_MODE + * isFinite | POW_PRECISION + * isGreaterThan gt | FORMAT + * isGreaterThanOrEqualTo gte | ALPHABET + * isInteger | isBigNumber + * isLessThan lt | maximum max + * isLessThanOrEqualTo lte | minimum min + * isNaN | random + * isNegative | sum + * isPositive | + * isZero | + * minus | + * modulo mod | + * multipliedBy times | + * negated | + * plus | + * precision sd | + * shiftedBy | + * squareRoot sqrt | + * toExponential | + * toFixed | + * toFormat | + * toFraction | + * toJSON | + * toNumber | + * toPrecision | + * toString | + * valueOf | + * + */ + + + var BigNumber, + isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, + mathceil = Math.ceil, + mathfloor = Math.floor, + + bignumberError = '[BigNumber Error] ', + tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ', + + BASE = 1e14, + LOG_BASE = 14, + MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 + // MAX_INT32 = 0x7fffffff, // 2^31 - 1 + POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], + SQRT_BASE = 1e7, + + // EDITABLE + // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and + // the arguments to toExponential, toFixed, toFormat, and toPrecision. + MAX = 1E9; // 0 to MAX_INT32 + + + /* + * Create and return a BigNumber constructor. + */ + function clone(configObject) { + var div, convertBase, parseNumeric, + P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null }, + ONE = new BigNumber(1), + + + //----------------------------- EDITABLE CONFIG DEFAULTS ------------------------------- + + + // The default values below must be integers within the inclusive ranges stated. + // The values can also be changed at run-time using BigNumber.set. + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + // The rounding mode used when rounding to the above decimal places, and when using + // toExponential, toFixed, toFormat and toPrecision, and round (default value). + // UP 0 Away from zero. + // DOWN 1 Towards zero. + // CEIL 2 Towards +Infinity. + // FLOOR 3 Towards -Infinity. + // HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -1e7, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. + MAX_EXP = 1e7, // 1 to MAX + + // Whether to use cryptographically-secure random number generation, if available. + CRYPTO = false, // true or false + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend. + // This modulo mode is commonly known as 'truncated division' and is + // equivalent to (a % n) in JavaScript. + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). + // The remainder is always positive. + // + // The truncated division, floored division, Euclidian division and IEEE 754 remainder + // modes are commonly used for the modulus operation. + // Although the other rounding modes can also be used, they may not give useful results. + MODULO_MODE = 1, // 0 to 9 + + // The maximum number of significant digits of the result of the exponentiatedBy operation. + // If POW_PRECISION is 0, there will be unlimited significant digits. + POW_PRECISION = 0, // 0 to MAX + + // The format specification used by the BigNumber.prototype.toFormat method. + FORMAT = { + prefix: '', + groupSize: 3, + secondaryGroupSize: 0, + groupSeparator: ',', + decimalSeparator: '.', + fractionGroupSize: 0, + fractionGroupSeparator: '\xA0', // non-breaking space + suffix: '' + }, + + // The alphabet used for base conversion. It must be at least 2 characters long, with no '+', + // '-', '.', whitespace, or repeated character. + // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' + ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; + + + //------------------------------------------------------------------------------------------ + + + // CONSTRUCTOR + + + /* + * The BigNumber constructor and exported function. + * Create and return a new instance of a BigNumber object. + * + * v {number|string|BigNumber} A numeric value. + * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive. + */ + function BigNumber(v, b) { + var alphabet, c, caseChanged, e, i, isNum, len, str, + x = this; + + // Enable constructor call without `new`. + if (!(x instanceof BigNumber)) return new BigNumber(v, b); + + if (b == null) { + + if (v && v._isBigNumber === true) { + x.s = v.s; + + if (!v.c || v.e > MAX_EXP) { + x.c = x.e = null; + } else if (v.e < MIN_EXP) { + x.c = [x.e = 0]; + } else { + x.e = v.e; + x.c = v.c.slice(); + } + + return; + } + + if ((isNum = typeof v == 'number') && v * 0 == 0) { + + // Use `1 / n` to handle minus zero also. + x.s = 1 / v < 0 ? (v = -v, -1) : 1; + + // Fast path for integers, where n < 2147483648 (2**31). + if (v === ~~v) { + for (e = 0, i = v; i >= 10; i /= 10, e++); + + if (e > MAX_EXP) { + x.c = x.e = null; + } else { + x.e = e; + x.c = [v]; + } + + return; + } + + str = String(v); + } else { + + if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum); + + x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; + } + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + + // Exponential form? + if ((i = str.search(/e/i)) > 0) { + + // Determine exponent. + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + + // Integer. + e = str.length; + } + + } else { + + // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + intCheck(b, 2, ALPHABET.length, 'Base'); + + // Allow exponential notation to be used with base 10 argument, while + // also rounding to DECIMAL_PLACES as with other bases. + if (b == 10) { + x = new BigNumber(v); + return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE); + } + + str = String(v); + + if (isNum = typeof v == 'number') { + + // Avoid potential interpretation of Infinity and NaN as base 44+ values. + if (v * 0 != 0) return parseNumeric(x, str, isNum, b); + + x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if (BigNumber.DEBUG && str.replace(/^0\.0*|\./, '').length > 15) { + throw Error + (tooManyDigits + v); + } + } else { + x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; + } + + alphabet = ALPHABET.slice(0, b); + e = i = 0; + + // Check that str is a valid base b number. + // Don't use RegExp, so alphabet can contain special characters. + for (len = str.length; i < len; i++) { + if (alphabet.indexOf(c = str.charAt(i)) < 0) { + if (c == '.') { + + // If '.' is not the first character and it has not be found before. + if (i > e) { + e = len; + continue; + } + } else if (!caseChanged) { + + // Allow e.g. hexadecimal 'FF' as well as 'ff'. + if (str == str.toUpperCase() && (str = str.toLowerCase()) || + str == str.toLowerCase() && (str = str.toUpperCase())) { + caseChanged = true; + i = -1; + e = 0; + continue; + } + } + + return parseNumeric(x, String(v), isNum, b); + } + } + + // Prevent later check for length on converted number. + isNum = false; + str = convertBase(str, b, 10, x.s); + + // Decimal point? + if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); + else e = str.length; + } + + // Determine leading zeros. + for (i = 0; str.charCodeAt(i) === 48; i++); + + // Determine trailing zeros. + for (len = str.length; str.charCodeAt(--len) === 48;); + + if (str = str.slice(i, ++len)) { + len -= i; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if (isNum && BigNumber.DEBUG && + len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { + throw Error + (tooManyDigits + (x.s * v)); + } + + // Overflow? + if ((e = e - i - 1) > MAX_EXP) { + + // Infinity. + x.c = x.e = null; + + // Underflow? + } else if (e < MIN_EXP) { + + // Zero. + x.c = [x.e = 0]; + } else { + x.e = e; + x.c = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first element of the coefficient array. + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; // i < 1 + + if (i < len) { + if (i) x.c.push(+str.slice(0, i)); + + for (len -= LOG_BASE; i < len;) { + x.c.push(+str.slice(i, i += LOG_BASE)); + } + + i = LOG_BASE - (str = str.slice(i)).length; + } else { + i -= len; + } + + for (; i--; str += '0'); + x.c.push(+str); + } + } else { + + // Zero. + x.c = [x.e = 0]; + } + } + + + // CONSTRUCTOR PROPERTIES + + + BigNumber.clone = clone; + + BigNumber.ROUND_UP = 0; + BigNumber.ROUND_DOWN = 1; + BigNumber.ROUND_CEIL = 2; + BigNumber.ROUND_FLOOR = 3; + BigNumber.ROUND_HALF_UP = 4; + BigNumber.ROUND_HALF_DOWN = 5; + BigNumber.ROUND_HALF_EVEN = 6; + BigNumber.ROUND_HALF_CEIL = 7; + BigNumber.ROUND_HALF_FLOOR = 8; + BigNumber.EUCLID = 9; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object with the following optional properties (if the value of a property is + * a number, it must be an integer within the inclusive range stated): + * + * DECIMAL_PLACES {number} 0 to MAX + * ROUNDING_MODE {number} 0 to 8 + * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX] + * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX] + * CRYPTO {boolean} true or false + * MODULO_MODE {number} 0 to 9 + * POW_PRECISION {number} 0 to MAX + * ALPHABET {string} A string of two or more unique characters which does + * not contain '.'. + * FORMAT {object} An object with some of the following properties: + * prefix {string} + * groupSize {number} + * secondaryGroupSize {number} + * groupSeparator {string} + * decimalSeparator {string} + * fractionGroupSize {number} + * fractionGroupSeparator {string} + * suffix {string} + * + * (The values assigned to the above FORMAT object properties are not checked for validity.) + * + * E.g. + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * + * Ignore properties/parameters set to null or undefined, except for ALPHABET. + * + * Return an object with the properties current values. + */ + BigNumber.config = BigNumber.set = function (obj) { + var p, v; + + if (obj != null) { + + if (typeof obj == 'object') { + + // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) { + v = obj[p]; + intCheck(v, 0, MAX, p); + DECIMAL_PLACES = v; + } + + // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. + // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) { + v = obj[p]; + intCheck(v, 0, 8, p); + ROUNDING_MODE = v; + } + + // EXPONENTIAL_AT {number|number[]} + // Integer, -MAX to MAX inclusive or + // [integer -MAX to 0 inclusive, 0 to MAX inclusive]. + // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, 0, p); + intCheck(v[1], 0, MAX, p); + TO_EXP_NEG = v[0]; + TO_EXP_POS = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); + } + } + + // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or + // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. + // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}' + if (obj.hasOwnProperty(p = 'RANGE')) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, -1, p); + intCheck(v[1], 1, MAX, p); + MIN_EXP = v[0]; + MAX_EXP = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + if (v) { + MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); + } else { + throw Error + (bignumberError + p + ' cannot be zero: ' + v); + } + } + } + + // CRYPTO {boolean} true or false. + // '[BigNumber Error] CRYPTO not true or false: {v}' + // '[BigNumber Error] crypto unavailable' + if (obj.hasOwnProperty(p = 'CRYPTO')) { + v = obj[p]; + if (v === !!v) { + if (v) { + if (typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes)) { + CRYPTO = v; + } else { + CRYPTO = !v; + throw Error + (bignumberError + 'crypto unavailable'); + } + } else { + CRYPTO = v; + } + } else { + throw Error + (bignumberError + p + ' not true or false: ' + v); + } + } + + // MODULO_MODE {number} Integer, 0 to 9 inclusive. + // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'MODULO_MODE')) { + v = obj[p]; + intCheck(v, 0, 9, p); + MODULO_MODE = v; + } + + // POW_PRECISION {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}' + if (obj.hasOwnProperty(p = 'POW_PRECISION')) { + v = obj[p]; + intCheck(v, 0, MAX, p); + POW_PRECISION = v; + } + + // FORMAT {object} + // '[BigNumber Error] FORMAT not an object: {v}' + if (obj.hasOwnProperty(p = 'FORMAT')) { + v = obj[p]; + if (typeof v == 'object') FORMAT = v; + else throw Error + (bignumberError + p + ' not an object: ' + v); + } + + // ALPHABET {string} + // '[BigNumber Error] ALPHABET invalid: {v}' + if (obj.hasOwnProperty(p = 'ALPHABET')) { + v = obj[p]; + + // Disallow if only one character, + // or if it contains '+', '-', '.', whitespace, or a repeated character. + if (typeof v == 'string' && !/^.$|[+-.\s]|(.).*\1/.test(v)) { + ALPHABET = v; + } else { + throw Error + (bignumberError + p + ' invalid: ' + v); + } + } + + } else { + + // '[BigNumber Error] Object expected: {v}' + throw Error + (bignumberError + 'Object expected: ' + obj); + } + } + + return { + DECIMAL_PLACES: DECIMAL_PLACES, + ROUNDING_MODE: ROUNDING_MODE, + EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], + RANGE: [MIN_EXP, MAX_EXP], + CRYPTO: CRYPTO, + MODULO_MODE: MODULO_MODE, + POW_PRECISION: POW_PRECISION, + FORMAT: FORMAT, + ALPHABET: ALPHABET + }; + }; + + + /* + * Return true if v is a BigNumber instance, otherwise return false. + * + * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed. + * + * v {any} + * + * '[BigNumber Error] Invalid BigNumber: {v}' + */ + BigNumber.isBigNumber = function (v) { + if (!v || v._isBigNumber !== true) return false; + if (!BigNumber.DEBUG) return true; + + var i, n, + c = v.c, + e = v.e, + s = v.s; + + out: if ({}.toString.call(c) == '[object Array]') { + + if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) { + + // If the first element is zero, the BigNumber value must be zero. + if (c[0] === 0) { + if (e === 0 && c.length === 1) return true; + break out; + } + + // Calculate number of digits that c[0] should have, based on the exponent. + i = (e + 1) % LOG_BASE; + if (i < 1) i += LOG_BASE; + + // Calculate number of digits of c[0]. + //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) { + if (String(c[0]).length == i) { + + for (i = 0; i < c.length; i++) { + n = c[i]; + if (n < 0 || n >= BASE || n !== mathfloor(n)) break out; + } + + // Last element cannot be zero, unless it is the only element. + if (n !== 0) return true; + } + } + + // Infinity/NaN + } else if (c === null && e === null && (s === null || s === 1 || s === -1)) { + return true; + } + + throw Error + (bignumberError + 'Invalid BigNumber: ' + v); + }; + + + /* + * Return a new BigNumber whose value is the maximum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.maximum = BigNumber.max = function () { + return maxOrMin(arguments, P.lt); + }; + + + /* + * Return a new BigNumber whose value is the minimum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.minimum = BigNumber.min = function () { + return maxOrMin(arguments, P.gt); + }; + + + /* + * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, + * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing + * zeros are produced). + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}' + * '[BigNumber Error] crypto unavailable' + */ + BigNumber.random = (function () { + var pow2_53 = 0x20000000000000; + + // Return a 53 bit integer n, where 0 <= n < 9007199254740992. + // Check if Math.random() produces more than 32 bits of randomness. + // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. + // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. + var random53bitInt = (Math.random() * pow2_53) & 0x1fffff + ? function () { return mathfloor(Math.random() * pow2_53); } + : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + + (Math.random() * 0x800000 | 0); }; + + return function (dp) { + var a, b, e, k, v, + i = 0, + c = [], + rand = new BigNumber(ONE); + + if (dp == null) dp = DECIMAL_PLACES; + else intCheck(dp, 0, MAX); + + k = mathceil(dp / LOG_BASE); + + if (CRYPTO) { + + // Browsers supporting crypto.getRandomValues. + if (crypto.getRandomValues) { + + a = crypto.getRandomValues(new Uint32Array(k *= 2)); + + for (; i < k;) { + + // 53 bits: + // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) + // 11111 11111111 11111111 11111111 11100000 00000000 00000000 + // ((Math.pow(2, 32) - 1) >>> 11).toString(2) + // 11111 11111111 11111111 + // 0x20000 is 2^21. + v = a[i] * 0x20000 + (a[i + 1] >>> 11); + + // Rejection sampling: + // 0 <= v < 9007199254740992 + // Probability that v >= 9e15, is + // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 + if (v >= 9e15) { + b = crypto.getRandomValues(new Uint32Array(2)); + a[i] = b[0]; + a[i + 1] = b[1]; + } else { + + // 0 <= v <= 8999999999999999 + // 0 <= (v % 1e14) <= 99999999999999 + c.push(v % 1e14); + i += 2; + } + } + i = k / 2; + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + a = crypto.randomBytes(k *= 7); + + for (; i < k;) { + + // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 + // 0x100000000 is 2^32, 0x1000000 is 2^24 + // 11111 11111111 11111111 11111111 11111111 11111111 11111111 + // 0 <= v < 9007199254740992 + v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) + + (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) + + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6]; + + if (v >= 9e15) { + crypto.randomBytes(7).copy(a, i); + } else { + + // 0 <= (v % 1e14) <= 99999999999999 + c.push(v % 1e14); + i += 7; + } + } + i = k / 7; + } else { + CRYPTO = false; + throw Error + (bignumberError + 'crypto unavailable'); + } + } + + // Use Math.random. + if (!CRYPTO) { + + for (; i < k;) { + v = random53bitInt(); + if (v < 9e15) c[i++] = v % 1e14; + } + } + + k = c[--i]; + dp %= LOG_BASE; + + // Convert trailing digits to zeros according to dp. + if (k && dp) { + v = POWS_TEN[LOG_BASE - dp]; + c[i] = mathfloor(k / v) * v; + } + + // Remove trailing elements which are zero. + for (; c[i] === 0; c.pop(), i--); + + // Zero? + if (i < 0) { + c = [e = 0]; + } else { + + // Remove leading elements which are zero and adjust exponent accordingly. + for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE); + + // Count the digits of the first element of c to determine leading zeros, and... + for (i = 1, v = c[0]; v >= 10; v /= 10, i++); + + // adjust the exponent accordingly. + if (i < LOG_BASE) e -= LOG_BASE - i; + } + + rand.e = e; + rand.c = c; + return rand; + }; + })(); + + + /* + * Return a BigNumber whose value is the sum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.sum = function () { + var i = 1, + args = arguments, + sum = new BigNumber(args[0]); + for (; i < args.length;) sum = sum.plus(args[i++]); + return sum; + }; + + + // PRIVATE FUNCTIONS + + + // Called by BigNumber and BigNumber.prototype.toString. + convertBase = (function () { + var decimal = '0123456789'; + + /* + * Convert string of baseIn to an array of numbers of baseOut. + * Eg. toBaseOut('255', 10, 16) returns [15, 15]. + * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5]. + */ + function toBaseOut(str, baseIn, baseOut, alphabet) { + var j, + arr = [0], + arrL, + i = 0, + len = str.length; + + for (; i < len;) { + for (arrL = arr.length; arrL--; arr[arrL] *= baseIn); + + arr[0] += alphabet.indexOf(str.charAt(i++)); + + for (j = 0; j < arr.length; j++) { + + if (arr[j] > baseOut - 1) { + if (arr[j + 1] == null) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + // Convert a numeric string of baseIn to a numeric string of baseOut. + // If the caller is toString, we are converting from base 10 to baseOut. + // If the caller is BigNumber, we are converting from baseIn to base 10. + return function (str, baseIn, baseOut, sign, callerIsToString) { + var alphabet, d, e, k, r, x, xc, y, + i = str.indexOf('.'), + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE; + + // Non-integer. + if (i >= 0) { + k = POW_PRECISION; + + // Unlimited precision. + POW_PRECISION = 0; + str = str.replace('.', ''); + y = new BigNumber(baseIn); + x = y.pow(str.length - i); + POW_PRECISION = k; + + // Convert str as if an integer, then restore the fraction part by dividing the + // result by its base raised to a power. + + y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'), + 10, baseOut, decimal); + y.e = y.c.length; + } + + // Convert the number as integer. + + xc = toBaseOut(str, baseIn, baseOut, callerIsToString + ? (alphabet = ALPHABET, decimal) + : (alphabet = decimal, ALPHABET)); + + // xc now represents str as an integer and converted to baseOut. e is the exponent. + e = k = xc.length; + + // Remove trailing zeros. + for (; xc[--k] == 0; xc.pop()); + + // Zero? + if (!xc[0]) return alphabet.charAt(0); + + // Does str represent an integer? If so, no need for the division. + if (i < 0) { + --e; + } else { + x.c = xc; + x.e = e; + + // The sign is needed for correct rounding. + x.s = sign; + x = div(x, y, dp, rm, baseOut); + xc = x.c; + r = x.r; + e = x.e; + } + + // xc now represents str converted to baseOut. + + // THe index of the rounding digit. + d = e + dp + 1; + + // The rounding digit: the digit to the right of the digit that may be rounded up. + i = xc[d]; + + // Look at the rounding digits and mode to determine whether to round up. + + k = baseOut / 2; + r = r || d < 0 || xc[d + 1] != null; + + r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 || + rm == (x.s < 0 ? 8 : 7)); + + // If the index of the rounding digit is not greater than zero, or xc represents + // zero, then the result of the base conversion is zero or, if rounding up, a value + // such as 0.00001. + if (d < 1 || !xc[0]) { + + // 1^-dp or 0 + str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); + } else { + + // Truncate xc to the required number of decimal places. + xc.length = d; + + // Round up? + if (r) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for (--baseOut; ++xc[--d] > baseOut;) { + xc[d] = 0; + + if (!d) { + ++e; + xc = [1].concat(xc); + } + } + } + + // Determine trailing zeros. + for (k = xc.length; !xc[--k];); + + // E.g. [4, 11, 15] becomes 4bf. + for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++])); + + // Add leading zeros, decimal point and trailing zeros as required. + str = toFixedPoint(str, e, alphabet.charAt(0)); + } + + // The caller will add the sign. + return str; + }; + })(); + + + // Perform division in the specified base. Called by div and convertBase. + div = (function () { + + // Assume non-zero x and k. + function multiply(x, k, base) { + var m, temp, xlo, xhi, + carry = 0, + i = x.length, + klo = k % SQRT_BASE, + khi = k / SQRT_BASE | 0; + + for (x = x.slice(); i--;) { + xlo = x[i] % SQRT_BASE; + xhi = x[i] / SQRT_BASE | 0; + m = khi * xlo + xhi * klo; + temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry; + carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi; + x[i] = temp % base; + } + + if (carry) x = [carry].concat(x); + + return x; + } + + function compare(a, b, aL, bL) { + var i, cmp; + + if (aL != bL) { + cmp = aL > bL ? 1 : -1; + } else { + + for (i = cmp = 0; i < aL; i++) { + + if (a[i] != b[i]) { + cmp = a[i] > b[i] ? 1 : -1; + break; + } + } + } + + return cmp; + } + + function subtract(a, b, aL, base) { + var i = 0; + + // Subtract b from a. + for (; aL--;) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for (; !a[0] && a.length > 1; a.splice(0, 1)); + } + + // x: dividend, y: divisor. + return function (x, y, dp, rm, base) { + var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, + yL, yz, + s = x.s == y.s ? 1 : -1, + xc = x.c, + yc = y.c; + + // Either NaN, Infinity or 0? + if (!xc || !xc[0] || !yc || !yc[0]) { + + return new BigNumber( + + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : + + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s * 0 : s / 0 + ); + } + + q = new BigNumber(s); + qc = q.c = []; + e = x.e - y.e; + s = dp + e + 1; + + if (!base) { + base = BASE; + e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); + s = s / LOG_BASE | 0; + } + + // Result exponent may be one less then the current value of e. + // The coefficients of the BigNumbers from convertBase may have trailing zeros. + for (i = 0; yc[i] == (xc[i] || 0); i++); + + if (yc[i] > (xc[i] || 0)) e--; + + if (s < 0) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i = 0; + s += 2; + + // Normalise xc and yc so highest order digit of yc is >= base / 2. + + n = mathfloor(base / (yc[0] + 1)); + + // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1. + // if (n > 1 || n++ == 1 && yc[0] < base / 2) { + if (n > 1) { + yc = multiply(yc, n, base); + xc = multiply(xc, n, base); + yL = yc.length; + xL = xc.length; + } + + xi = yL; + rem = xc.slice(0, yL); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for (; remL < yL; rem[remL++] = 0); + yz = yc.slice(); + yz = [0].concat(yz); + yc0 = yc[0]; + if (yc[1] >= base / 2) yc0++; + // Not necessary, but to prevent trial digit n > base, when using base 3. + // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15; + + do { + n = 0; + + // Compare divisor and remainder. + cmp = compare(yc, rem, yL, remL); + + // If divisor < remainder. + if (cmp < 0) { + + // Calculate trial digit, n. + + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + + // n is how many times the divisor goes into the current remainder. + n = mathfloor(rem0 / yc0); + + // Algorithm: + // product = divisor multiplied by trial digit (n). + // Compare product and remainder. + // If product is greater than remainder: + // Subtract divisor from product, decrement trial digit. + // Subtract product from remainder. + // If product was less than remainder at the last compare: + // Compare new remainder and divisor. + // If remainder is greater than divisor: + // Subtract divisor from remainder, increment trial digit. + + if (n > 1) { + + // n may be > base only when base is 3. + if (n >= base) n = base - 1; + + // product = divisor * trial digit. + prod = multiply(yc, n, base); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + // If product > remainder then trial digit n too high. + // n is 1 too high about 5% of the time, and is not known to have + // ever been more than 1 too high. + while (compare(prod, rem, prodL, remL) == 1) { + n--; + + // Subtract divisor from product. + subtract(prod, yL < prodL ? yz : yc, prodL, base); + prodL = prod.length; + cmp = 1; + } + } else { + + // n is 0 or 1, cmp is -1. + // If n is 0, there is no need to compare yc and rem again below, + // so change cmp to 1 to avoid it. + // If n is 1, leave cmp as -1, so yc and rem are compared again. + if (n == 0) { + + // divisor < remainder, so n must be at least 1. + cmp = n = 1; + } + + // product = divisor + prod = yc.slice(); + prodL = prod.length; + } + + if (prodL < remL) prod = [0].concat(prod); + + // Subtract product from remainder. + subtract(rem, prod, remL, base); + remL = rem.length; + + // If product was < remainder. + if (cmp == -1) { + + // Compare divisor and new remainder. + // If divisor < new remainder, subtract divisor from remainder. + // Trial digit n too low. + // n is 1 too low about 5% of the time, and very rarely 2 too low. + while (compare(yc, rem, yL, remL) < 1) { + n++; + + // Subtract divisor from remainder. + subtract(rem, yL < remL ? yz : yc, remL, base); + remL = rem.length; + } + } + } else if (cmp === 0) { + n++; + rem = [0]; + } // else cmp === 1 and n will be 0 + + // Add the next digit, n, to the result array. + qc[i++] = n; + + // Update the remainder. + if (rem[0]) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [xc[xi]]; + remL = 1; + } + } while ((xi++ < xL || rem[0] != null) && s--); + + more = rem[0] != null; + + // Leading zero? + if (!qc[0]) qc.splice(0, 1); + } + + if (base == BASE) { + + // To calculate q.e, first get the number of digits of qc[0]. + for (i = 1, s = qc[0]; s >= 10; s /= 10, i++); + + round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more); + + // Caller is convertBase. + } else { + q.e = e; + q.r = +more; + } + + return q; + }; + })(); + + + /* + * Return a string representing the value of BigNumber n in fixed-point or exponential + * notation rounded to the specified decimal places or significant digits. + * + * n: a BigNumber. + * i: the index of the last digit required (i.e. the digit that may be rounded up). + * rm: the rounding mode. + * id: 1 (toExponential) or 2 (toPrecision). + */ + function format(n, i, rm, id) { + var c0, e, ne, len, str; + + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + if (!n.c) return n.toString(); + + c0 = n.c[0]; + ne = n.e; + + if (i == null) { + str = coeffToString(n.c); + str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) + ? toExponential(str, ne) + : toFixedPoint(str, ne, '0'); + } else { + n = round(new BigNumber(n), i, rm); + + // n.e may have changed if the value was rounded up. + e = n.e; + + str = coeffToString(n.c); + len = str.length; + + // toPrecision returns exponential notation if the number of significant digits + // specified is less than the number of digits necessary to represent the integer + // part of the value in fixed-point notation. + + // Exponential notation. + if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) { + + // Append zeros? + for (; len < i; str += '0', len++); + str = toExponential(str, e); + + // Fixed-point notation. + } else { + i -= ne; + str = toFixedPoint(str, e, '0'); + + // Append zeros? + if (e + 1 > len) { + if (--i > 0) for (str += '.'; i--; str += '0'); + } else { + i += e - len; + if (i > 0) { + if (e + 1 == len) str += '.'; + for (; i--; str += '0'); + } + } + } + } + + return n.s < 0 && c0 ? '-' + str : str; + } + + + // Handle BigNumber.max and BigNumber.min. + function maxOrMin(args, method) { + var n, + i = 1, + m = new BigNumber(args[0]); + + for (; i < args.length; i++) { + n = new BigNumber(args[i]); + + // If any number is NaN, return NaN. + if (!n.s) { + m = n; + break; + } else if (method.call(m, n)) { + m = n; + } + } + + return m; + } + + + /* + * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. + * Called by minus, plus and times. + */ + function normalise(n, c, e) { + var i = 1, + j = c.length; + + // Remove trailing zeros. + for (; !c[--j]; c.pop()); + + // Calculate the base 10 exponent. First get the number of digits of c[0]. + for (j = c[0]; j >= 10; j /= 10, i++); + + // Overflow? + if ((e = i + e * LOG_BASE - 1) > MAX_EXP) { + + // Infinity. + n.c = n.e = null; + + // Underflow? + } else if (e < MIN_EXP) { + + // Zero. + n.c = [n.e = 0]; + } else { + n.e = e; + n.c = c; + } + + return n; + } + + + // Handle values that fail the validity test in BigNumber. + parseNumeric = (function () { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, + dotAfter = /^([^.]+)\.$/, + dotBefore = /^\.([^.]+)$/, + isInfinityOrNaN = /^-?(Infinity|NaN)$/, + whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + + return function (x, str, isNum, b) { + var base, + s = isNum ? str : str.replace(whitespaceOrPlus, ''); + + // No exception on ±Infinity or NaN. + if (isInfinityOrNaN.test(s)) { + x.s = isNaN(s) ? null : s < 0 ? -1 : 1; + } else { + if (!isNum) { + + // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i + s = s.replace(basePrefix, function (m, p1, p2) { + base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8; + return !b || b == base ? p1 : m; + }); + + if (b) { + base = b; + + // E.g. '1.' to '1', '.1' to '0.1' + s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1'); + } + + if (str != s) return new BigNumber(s, base); + } + + // '[BigNumber Error] Not a number: {n}' + // '[BigNumber Error] Not a base {b} number: {n}' + if (BigNumber.DEBUG) { + throw Error + (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str); + } + + // NaN + x.s = null; + } + + x.c = x.e = null; + } + })(); + + + /* + * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. + * If r is truthy, it is known that there are more digits after the rounding digit. + */ + function round(x, sd, rm, r) { + var d, i, j, k, n, ni, rd, + xc = x.c, + pows10 = POWS_TEN; + + // if x is not Infinity or NaN... + if (xc) { + + // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. + // n is a base 1e14 number, the value of the element of array x.c containing rd. + // ni is the index of n within x.c. + // d is the number of digits of n. + // i is the index of rd within n including leading zeros. + // j is the actual index of rd within n (if < 0, rd is a leading zero). + out: { + + // Get the number of digits of the first element of xc. + for (d = 1, k = xc[0]; k >= 10; k /= 10, d++); + i = sd - d; + + // If the rounding digit is in the first element of xc... + if (i < 0) { + i += LOG_BASE; + j = sd; + n = xc[ni = 0]; + + // Get the rounding digit at index j of n. + rd = n / pows10[d - j - 1] % 10 | 0; + } else { + ni = mathceil((i + 1) / LOG_BASE); + + if (ni >= xc.length) { + + if (r) { + + // Needed by sqrt. + for (; xc.length <= ni; xc.push(0)); + n = rd = 0; + d = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + + // Get the number of digits of n. + for (d = 1; k >= 10; k /= 10, d++); + + // Get the index of rd within n. + i %= LOG_BASE; + + // Get the index of rd within n, adjusted for leading zeros. + // The number of leading zeros of n is given by LOG_BASE - d. + j = i - LOG_BASE + d; + + // Get the rounding digit at index j of n. + rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0; + } + } + + r = r || sd < 0 || + + // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[d - j - 1] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); + + r = rm < 4 + ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) + : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 || + rm == (x.s < 0 ? 8 : 7)); + + if (sd < 1 || !xc[0]) { + xc.length = 0; + + if (r) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; + x.e = -sd || 0; + } else { + + // Zero. + xc[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if (i == 0) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[LOG_BASE - i]; + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of n. + xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; + } + + // Round up? + if (r) { + + for (; ;) { + + // If the digit to be rounded up is in the first element of xc... + if (ni == 0) { + + // i will be the length of xc[0] before k is added. + for (i = 1, j = xc[0]; j >= 10; j /= 10, i++); + j = xc[0] += k; + for (k = 1; j >= 10; j /= 10, k++); + + // if i != k the length has increased. + if (i != k) { + x.e++; + if (xc[0] == BASE) xc[0] = 1; + } + + break; + } else { + xc[ni] += k; + if (xc[ni] != BASE) break; + xc[ni--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for (i = xc.length; xc[--i] === 0; xc.pop()); + } + + // Overflow? Infinity. + if (x.e > MAX_EXP) { + x.c = x.e = null; + + // Underflow? Zero. + } else if (x.e < MIN_EXP) { + x.c = [x.e = 0]; + } + } + + return x; + } + + + function valueOf(n) { + var str, + e = n.e; + + if (e === null) return n.toString(); + + str = coeffToString(n.c); + + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential(str, e) + : toFixedPoint(str, e, '0'); + + return n.s < 0 ? '-' + str : str; + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P.absoluteValue = P.abs = function () { + var x = new BigNumber(this); + if (x.s < 0) x.s = 1; + return x; + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P.comparedTo = function (y, b) { + return compare(this, new BigNumber(y, b)); + }; + + + /* + * If dp is undefined or null or true or false, return the number of decimal places of the + * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * + * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * [dp] {number} Decimal places: integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.decimalPlaces = P.dp = function (dp, rm) { + var c, n, v, + x = this; + + if (dp != null) { + intCheck(dp, 0, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + return round(new BigNumber(x), dp + x.e + 1, rm); + } + + if (!(c = x.c)) return null; + n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; + + // Subtract the number of trailing zeros of the last number. + if (v = c[v]) for (; v % 10 == 0; v /= 10, n--); + if (n < 0) n = 0; + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber divided by the value of + * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.dividedBy = P.div = function (y, b) { + return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE); + }; + + + /* + * Return a new BigNumber whose value is the integer part of dividing the value of this + * BigNumber by the value of BigNumber(y, b). + */ + P.dividedToIntegerBy = P.idiv = function (y, b) { + return div(this, new BigNumber(y, b), 0, 1); + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber exponentiated by n. + * + * If m is present, return the result modulo m. + * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. + * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE. + * + * The modular power operation works efficiently when x, n, and m are integers, otherwise it + * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0. + * + * n {number|string|BigNumber} The exponent. An integer. + * [m] {number|string|BigNumber} The modulus. + * + * '[BigNumber Error] Exponent not an integer: {n}' + */ + P.exponentiatedBy = P.pow = function (n, m) { + var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, + x = this; + + n = new BigNumber(n); + + // Allow NaN and ±Infinity, but not other non-integers. + if (n.c && !n.isInteger()) { + throw Error + (bignumberError + 'Exponent not an integer: ' + valueOf(n)); + } + + if (m != null) m = new BigNumber(m); + + // Exponent of MAX_SAFE_INTEGER is 15. + nIsBig = n.e > 14; + + // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0. + if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) { + + // The sign of the result of pow when x is negative depends on the evenness of n. + // If +n overflows to ±Infinity, the evenness of n would be not be known. + y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n))); + return m ? y.mod(m) : y; + } + + nIsNeg = n.s < 0; + + if (m) { + + // x % m returns NaN if abs(m) is zero, or m is NaN. + if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN); + + isModExp = !nIsNeg && x.isInteger() && m.isInteger(); + + if (isModExp) x = x.mod(m); + + // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15. + // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15. + } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 + // [1, 240000000] + ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 + // [80000000000000] [99999750000000] + : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) { + + // If x is negative and n is odd, k = -0, else k = 0. + k = x.s < 0 && isOdd(n) ? -0 : 0; + + // If x >= 1, k = ±Infinity. + if (x.e > -1) k = 1 / k; + + // If n is negative return ±0, else return ±Infinity. + return new BigNumber(nIsNeg ? 1 / k : k); + + } else if (POW_PRECISION) { + + // Truncating each coefficient array to a length of k after each multiplication + // equates to truncating significant digits to POW_PRECISION + [28, 41], + // i.e. there will be a minimum of 28 guard digits retained. + k = mathceil(POW_PRECISION / LOG_BASE + 2); + } + + if (nIsBig) { + half = new BigNumber(0.5); + if (nIsNeg) n.s = 1; + nIsOdd = isOdd(n); + } else { + i = Math.abs(+valueOf(n)); + nIsOdd = i % 2; + } + + y = new BigNumber(ONE); + + // Performs 54 loop iterations for n of 9007199254740991. + for (; ;) { + + if (nIsOdd) { + y = y.times(x); + if (!y.c) break; + + if (k) { + if (y.c.length > k) y.c.length = k; + } else if (isModExp) { + y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m)); + } + } + + if (i) { + i = mathfloor(i / 2); + if (i === 0) break; + nIsOdd = i % 2; + } else { + n = n.times(half); + round(n, n.e + 1, 1); + + if (n.e > 14) { + nIsOdd = isOdd(n); + } else { + i = +valueOf(n); + if (i === 0) break; + nIsOdd = i % 2; + } + } + + x = x.times(x); + + if (k) { + if (x.c && x.c.length > k) x.c.length = k; + } else if (isModExp) { + x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m)); + } + } + + if (isModExp) return y; + if (nIsNeg) y = ONE.div(y); + + return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer + * using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}' + */ + P.integerValue = function (rm) { + var n = new BigNumber(this); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + return round(n, n.e + 1, rm); + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), + * otherwise return false. + */ + P.isEqualTo = P.eq = function (y, b) { + return compare(this, new BigNumber(y, b)) === 0; + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise return false. + */ + P.isFinite = function () { + return !!this.c; + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isGreaterThan = P.gt = function (y, b) { + return compare(this, new BigNumber(y, b)) > 0; + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isGreaterThanOrEqualTo = P.gte = function (y, b) { + return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0; + + }; + + + /* + * Return true if the value of this BigNumber is an integer, otherwise return false. + */ + P.isInteger = function () { + return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; + }; + + + /* + * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isLessThan = P.lt = function (y, b) { + return compare(this, new BigNumber(y, b)) < 0; + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isLessThanOrEqualTo = P.lte = function (y, b) { + return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0; + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise return false. + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise return false. + */ + P.isNegative = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this BigNumber is positive, otherwise return false. + */ + P.isPositive = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise return false. + */ + P.isZero = function () { + return !!this.c && this.c[0] == 0; + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus the value of + * BigNumber(y, b). + */ + P.minus = function (y, b) { + var i, j, t, xLTy, + x = this, + a = x.s; + + y = new BigNumber(y, b); + b = y.s; + + // Either NaN? + if (!a || !b) return new BigNumber(NaN); + + // Signs differ? + if (a != b) { + y.s = -b; + return x.plus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if (!xe || !ye) { + + // Either Infinity? + if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN); + + // Either zero? + if (!xc[0] || !yc[0]) { + + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x : + + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0); + } + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Determine which is the bigger number. + if (a = xe - ye) { + + if (xLTy = a < 0) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + + // Prepend zeros to equalise exponents. + for (b = a; b--; t.push(0)); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; + + for (a = b = 0; b < j; b++) { + + if (xc[b] != yc[b]) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; + + b = (j = yc.length) - (i = xc.length); + + // Append zeros to xc if shorter. + // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. + if (b > 0) for (; b--; xc[i++] = 0); + b = BASE - 1; + + // Subtract yc from xc. + for (; j > a;) { + + if (xc[--j] < yc[j]) { + for (i = j; i && !xc[--i]; xc[i] = b); + --xc[i]; + xc[j] += BASE; + } + + xc[j] -= yc[j]; + } + + // Remove leading zeros and adjust exponent accordingly. + for (; xc[0] == 0; xc.splice(0, 1), --ye); + + // Zero? + if (!xc[0]) { + + // Following IEEE 754 (2008) 6.3, + // n - n = +0 but n - n = -0 when rounding towards -Infinity. + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [y.e = 0]; + return y; + } + + // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + // for finite x and y. + return normalise(y, xc, ye); + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo the value of + * BigNumber(y, b). The result depends on the value of MODULO_MODE. + */ + P.modulo = P.mod = function (y, b) { + var q, s, + x = this; + + y = new BigNumber(y, b); + + // Return NaN if x is Infinity or NaN, or y is NaN or zero. + if (!x.c || !y.s || y.c && !y.c[0]) { + return new BigNumber(NaN); + + // Return x if y is Infinity or x is zero. + } else if (!y.c || x.c && !x.c[0]) { + return new BigNumber(x); + } + + if (MODULO_MODE == 9) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // r = x - qy where 0 <= r < abs(y) + s = y.s; + y.s = 1; + q = div(x, y, 0, 3); + y.s = s; + q.s *= s; + } else { + q = div(x, y, 0, MODULO_MODE); + } + + y = x.minus(q.times(y)); + + // To match JavaScript %, ensure sign of zero is sign of dividend. + if (!y.c[0] && MODULO_MODE == 1) y.s = x.s; + + return y; + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value + * of BigNumber(y, b). + */ + P.multipliedBy = P.times = function (y, b) { + var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, + base, sqrtBase, + x = this, + xc = x.c, + yc = (y = new BigNumber(y, b)).c; + + // Either NaN, ±Infinity or ±0? + if (!xc || !yc || !xc[0] || !yc[0]) { + + // Return NaN if either is NaN, or one is 0 and the other is Infinity. + if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { + y.c = y.e = y.s = null; + } else { + y.s *= x.s; + + // Return ±Infinity if either is ±Infinity. + if (!xc || !yc) { + y.c = y.e = null; + + // Return ±0 if either is ±0. + } else { + y.c = [0]; + y.e = 0; + } + } + + return y; + } + + e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); + y.s *= x.s; + xcL = xc.length; + ycL = yc.length; + + // Ensure xc points to longer array and xcL to its length. + if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; + + // Initialise the result array with zeros. + for (i = xcL + ycL, zc = []; i--; zc.push(0)); + + base = BASE; + sqrtBase = SQRT_BASE; + + for (i = ycL; --i >= 0;) { + c = 0; + ylo = yc[i] % sqrtBase; + yhi = yc[i] / sqrtBase | 0; + + for (k = xcL, j = i + k; j > i;) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c; + c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi; + zc[j--] = xlo % base; + } + + zc[j] = c; + } + + if (c) { + ++e; + } else { + zc.splice(0, 1); + } + + return normalise(y, zc, e); + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber negated, + * i.e. multiplied by -1. + */ + P.negated = function () { + var x = new BigNumber(this); + x.s = -x.s || null; + return x; + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus the value of + * BigNumber(y, b). + */ + P.plus = function (y, b) { + var t, + x = this, + a = x.s; + + y = new BigNumber(y, b); + b = y.s; + + // Either NaN? + if (!a || !b) return new BigNumber(NaN); + + // Signs differ? + if (a != b) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if (!xe || !ye) { + + // Return ±Infinity if either ±Infinity. + if (!xc || !yc) return new BigNumber(a / 0); + + // Either zero? + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0); + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for (; a--; t.push(0)); + t.reverse(); + } + + a = xc.length; + b = yc.length; + + // Point xc to the longer array, and b to the shorter length. + if (a - b < 0) t = yc, yc = xc, xc = t, b = a; + + // Only start adding at yc.length - 1 as the further digits of xc can be ignored. + for (a = 0; b;) { + a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + + if (a) { + xc = [a].concat(xc); + ++ye; + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + // ye = MAX_EXP + 1 possible + return normalise(y, xc, ye); + }; + + + /* + * If sd is undefined or null or true or false, return the number of significant digits of + * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * If sd is true include integer-part trailing zeros in the count. + * + * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive. + * boolean: whether to count integer-part trailing zeros: true or false. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.precision = P.sd = function (sd, rm) { + var c, n, v, + x = this; + + if (sd != null && sd !== !!sd) { + intCheck(sd, 1, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + + return round(new BigNumber(x), sd, rm); + } + + if (!(c = x.c)) return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + + if (v = c[v]) { + + // Subtract the number of trailing zeros of the last element. + for (; v % 10 == 0; v /= 10, n--); + + // Add the number of digits of the first element. + for (v = c[0]; v >= 10; v /= 10, n++); + } + + if (sd && x.e + 1 > n) n = x.e + 1; + + return n; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber shifted by k places + * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. + * + * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}' + */ + P.shiftedBy = function (k) { + intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); + return this.times('1e' + k); + }; + + + /* + * sqrt(-n) = N + * sqrt(N) = N + * sqrt(-I) = N + * sqrt(I) = I + * sqrt(0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of this BigNumber, + * rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.squareRoot = P.sqrt = function () { + var m, n, r, rep, t, + x = this, + c = x.c, + s = x.s, + e = x.e, + dp = DECIMAL_PLACES + 4, + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if (s !== 1 || !c || !c[0]) { + return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); + } + + // Initial estimate. + s = Math.sqrt(+valueOf(x)); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if (s == 0 || s == 1 / 0) { + n = coeffToString(c); + if ((n.length + e) % 2 == 0) n += '0'; + s = Math.sqrt(+n); + e = bitFloor((e + 1) / 2) - (e < 0 || e % 2); + + if (s == 1 / 0) { + n = '1e' + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf('e') + 1) + e; + } + + r = new BigNumber(n); + } else { + r = new BigNumber(s + ''); + } + + // Check for zero. + // r could be zero if MIN_EXP is changed after the this value was created. + // This would cause a division by zero (x/t) and hence Infinity below, which would cause + // coeffToString to throw. + if (r.c[0]) { + e = r.e; + s = e + dp; + if (s < 3) s = 0; + + // Newton-Raphson iteration. + for (; ;) { + t = r; + r = half.times(t.plus(div(x, t, dp, 1))); + + if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) { + + // The exponent of r may here be one less than the final result exponent, + // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits + // are indexed correctly. + if (r.e < e) --s; + n = n.slice(s - 3, s + 1); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits + // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the + // iteration. + if (n == '9999' || !rep && n == '4999') { + + // On the first iteration only, check to see if rounding up gives the + // exact result as the nines may infinitely repeat. + if (!rep) { + round(t, t.e + DECIMAL_PLACES + 2, 0); + + if (t.times(t).eq(x)) { + r = t; + break; + } + } + + dp += 4; + s += 4; + rep = 1; + } else { + + // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact + // result. If not, then there are further digits and m will be truthy. + if (!+n || !+n.slice(1) && n.charAt(0) == '5') { + + // Truncate to the first rounding digit. + round(r, r.e + DECIMAL_PLACES + 2, 1); + m = !r.times(r).eq(x); + } + + break; + } + } + } + } + + return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m); + }; + + + /* + * Return a string representing the value of this BigNumber in exponential notation and + * rounded using ROUNDING_MODE to dp fixed decimal places. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toExponential = function (dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp++; + } + return format(this, dp, rm, 1); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounding + * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toFixed = function (dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp = dp + this.e + 1; + } + return format(this, dp, rm); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounded + * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties + * of the format or FORMAT object (see BigNumber.set). + * + * The formatting object may contain some or all of the properties shown below. + * + * FORMAT = { + * prefix: '', + * groupSize: 3, + * secondaryGroupSize: 0, + * groupSeparator: ',', + * decimalSeparator: '.', + * fractionGroupSize: 0, + * fractionGroupSeparator: '\xA0', // non-breaking space + * suffix: '' + * }; + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * [format] {object} Formatting options. See FORMAT pbject above. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + * '[BigNumber Error] Argument not an object: {format}' + */ + P.toFormat = function (dp, rm, format) { + var str, + x = this; + + if (format == null) { + if (dp != null && rm && typeof rm == 'object') { + format = rm; + rm = null; + } else if (dp && typeof dp == 'object') { + format = dp; + dp = rm = null; + } else { + format = FORMAT; + } + } else if (typeof format != 'object') { + throw Error + (bignumberError + 'Argument not an object: ' + format); + } + + str = x.toFixed(dp, rm); + + if (x.c) { + var i, + arr = str.split('.'), + g1 = +format.groupSize, + g2 = +format.secondaryGroupSize, + groupSeparator = format.groupSeparator || '', + intPart = arr[0], + fractionPart = arr[1], + isNeg = x.s < 0, + intDigits = isNeg ? intPart.slice(1) : intPart, + len = intDigits.length; + + if (g2) i = g1, g1 = g2, g2 = i, len -= i; + + if (g1 > 0 && len > 0) { + i = len % g1 || g1; + intPart = intDigits.substr(0, i); + for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1); + if (g2 > 0) intPart += groupSeparator + intDigits.slice(i); + if (isNeg) intPart = '-' + intPart; + } + + str = fractionPart + ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize) + ? fractionPart.replace(new RegExp('\\d{' + g2 + '}\\B', 'g'), + '$&' + (format.fractionGroupSeparator || '')) + : fractionPart) + : intPart; + } + + return (format.prefix || '') + str + (format.suffix || ''); + }; + + + /* + * Return an array of two BigNumbers representing the value of this BigNumber as a simple + * fraction with an integer numerator and an integer denominator. + * The denominator will be a positive non-zero value less than or equal to the specified + * maximum denominator. If a maximum denominator is not specified, the denominator will be + * the lowest value necessary to represent the number exactly. + * + * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator. + * + * '[BigNumber Error] Argument {not an integer|out of range} : {md}' + */ + P.toFraction = function (md) { + var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, + x = this, + xc = x.c; + + if (md != null) { + n = new BigNumber(md); + + // Throw if md is less than one or is not an integer, unless it is Infinity. + if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { + throw Error + (bignumberError + 'Argument ' + + (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n)); + } + } + + if (!xc) return new BigNumber(x); + + d = new BigNumber(ONE); + n1 = d0 = new BigNumber(ONE); + d1 = n0 = new BigNumber(ONE); + s = coeffToString(xc); + + // Determine initial denominator. + // d is a power of 10 and the minimum max denominator that specifies the value exactly. + e = d.e = s.length - x.e - 1; + d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; + md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n; + + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber(s); + + // n0 = d1 = 0 + n0.c[0] = 0; + + for (; ;) { + q = div(n, d, 0, 1); + d2 = d0.plus(q.times(d1)); + if (d2.comparedTo(md) == 1) break; + d0 = d1; + d1 = d2; + n1 = n0.plus(q.times(d2 = n1)); + n0 = d2; + d = n.minus(q.times(d2 = d)); + n = d2; + } + + d2 = div(md.minus(d0), d1, 0, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + e = e * 2; + + // Determine which fraction is closer to x, n0/d0 or n1/d1 + r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo( + div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0]; + + MAX_EXP = exp; + + return r; + }; + + + /* + * Return the value of this BigNumber converted to a number primitive. + */ + P.toNumber = function () { + return +valueOf(this); + }; + + + /* + * Return a string representing the value of this BigNumber rounded to sd significant digits + * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits + * necessary to represent the integer part of the value in fixed-point notation, then use + * exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.toPrecision = function (sd, rm) { + if (sd != null) intCheck(sd, 1, MAX); + return format(this, sd, rm, 2); + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or base 10 if b is + * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and + * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than + * TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to ALPHABET.length inclusive. + * + * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + */ + P.toString = function (b) { + var str, + n = this, + s = n.s, + e = n.e; + + // Infinity or NaN? + if (e === null) { + if (s) { + str = 'Infinity'; + if (s < 0) str = '-' + str; + } else { + str = 'NaN'; + } + } else { + if (b == null) { + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential(coeffToString(n.c), e) + : toFixedPoint(coeffToString(n.c), e, '0'); + } else if (b === 10) { + n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE); + str = toFixedPoint(coeffToString(n.c), n.e, '0'); + } else { + intCheck(b, 2, ALPHABET.length, 'Base'); + str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true); + } + + if (s < 0 && n.c[0]) str = '-' + str; + } + + return str; + }; + + + /* + * Return as toString, but do not accept a base argument, and include the minus sign for + * negative zero. + */ + P.valueOf = P.toJSON = function () { + return valueOf(this); + }; + + + P._isBigNumber = true; + + if (configObject != null) BigNumber.set(configObject); + + return BigNumber; + } + + + // PRIVATE HELPER FUNCTIONS + + // These functions don't need access to variables, + // e.g. DECIMAL_PLACES, in the scope of the `clone` function above. + + + function bitFloor(n) { + var i = n | 0; + return n > 0 || n === i ? i : i - 1; + } + + + // Return a coefficient array as a string of base 10 digits. + function coeffToString(a) { + var s, z, + i = 1, + j = a.length, + r = a[0] + ''; + + for (; i < j;) { + s = a[i++] + ''; + z = LOG_BASE - s.length; + for (; z--; s = '0' + s); + r += s; + } + + // Determine trailing zeros. + for (j = r.length; r.charCodeAt(--j) === 48;); + + return r.slice(0, j + 1 || 1); + } + + + // Compare the value of BigNumbers x and y. + function compare(x, y) { + var a, b, + xc = x.c, + yc = y.c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either NaN? + if (!i || !j) return null; + + a = xc && !xc[0]; + b = yc && !yc[0]; + + // Either zero? + if (a || b) return a ? b ? 0 : -j : i; + + // Signs differ? + if (i != j) return i; + + a = i < 0; + b = k == l; + + // Either Infinity? + if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1; + + // Compare exponents. + if (!b) return k > l ^ a ? 1 : -1; + + j = (k = xc.length) < (l = yc.length) ? k : l; + + // Compare digit by digit. + for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1; + + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1; + } + + + /* + * Check that n is a primitive number, an integer, and in range, otherwise throw. + */ + function intCheck(n, min, max, name) { + if (n < min || n > max || n !== mathfloor(n)) { + throw Error + (bignumberError + (name || 'Argument') + (typeof n == 'number' + ? n < min || n > max ? ' out of range: ' : ' not an integer: ' + : ' not a primitive number: ') + String(n)); + } + } + + + // Assumes finite n. + function isOdd(n) { + var k = n.c.length - 1; + return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; + } + + + function toExponential(str, e) { + return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) + + (e < 0 ? 'e' : 'e+') + e; + } + + + function toFixedPoint(str, e, z) { + var len, zs; + + // Negative exponent? + if (e < 0) { + + // Prepend zeros. + for (zs = z + '.'; ++e; zs += z); + str = zs + str; + + // Positive exponent + } else { + len = str.length; + + // Append zeros. + if (++e > len) { + for (zs = z, e -= len; --e; zs += z); + str += zs; + } else if (e < len) { + str = str.slice(0, e) + '.' + str.slice(e); + } + } + + return str; + } + + + // EXPORT + + + BigNumber = clone(); + BigNumber['default'] = BigNumber.BigNumber = BigNumber; + + // AMD. + if (module.exports) { + module.exports = BigNumber; + + // Browser. + } else { + if (!globalObject) { + globalObject = typeof self != 'undefined' && self ? self : window; + } + + globalObject.BigNumber = BigNumber; + } +})(commonjsGlobal); +}(bignumber)); + +var BigNumber = bignumber.exports; + +BigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 }); +BigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent + +function Encoder(type, value) { + const throwError = (val) => { + throw new Error(`Error encoding ${val} to ${type}`); + }; + const countDecimals = (n) => { + if (Math.floor(n) === n) return 0; + try { + return n.toString().split(".")[1].length; + } catch (e) { + return 0; + } + }; + const isString = (val) => typeof val === "string" || val instanceof String; + const isArray = (val) => val && typeof val === "object" && val.constructor === Array; + const isObject = (val) => val && typeof val === "object" && val.constructor === Object; + const isDate = (val) => val instanceof Date; + const isBoolean = (val) => typeof val === "boolean"; + + const isNumber = (val) => { + if (isArray(val)) return false; + return !isNaN(encodeBigNumber(val).toNumber()); + }; + + const isInteger = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return true; + return false; + }; + const encodeInt = (val) => { + if (!isNumber(val)) throwError(val); + else return parseInt(val); + }; + const isFloat = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return false; + return true; + }; + const encodeFloat = (val) => { + if (!isNumber(val)) throwError(val); + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + }; + const encodeNumber = (val) => { + if (!isNumber(val)) throwError(val); + if (isFloat(val)) { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + } + if (isInteger(val)) return parseInt(val); + }; + const encodeBigNumber = (val) => { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return val; + }; + + const encodeBool = (val) => { + if (isBoolean(val)) return val; + if (val === "true" || val === 1) return true; + if (val === "false" || val === 0) return false; + throwError(val); + }; + const encodeStr = (val) => { + if (isString(val)) return val; + if (isDate(val)) return val.toISOString(); + return JSON.stringify(val); + }; + const encodeDateTime = (val) => { + val = !isDate(val) ? new Date(val) : val; + if (!isDate(val)) throwError(val); + return { + __time__: [ + val.getUTCFullYear(), + val.getUTCMonth(), + val.getUTCDate(), + val.getUTCHours(), + val.getUTCMinutes(), + val.getUTCSeconds(), + val.getUTCMilliseconds(), + ], + }; + }; + const encodeTimeDelta = (val) => { + const time = isDate(val) ? val.getTime() : new Date(val).getTime(); + const days = parseInt(time / 1000 / 60 / 60 / 24); + const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000; + return { __delta__: [days, seconds] }; + }; + + const encodeList = (val) => { + if (isArray(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isArray(val)) return parseObject(val); + throwError(val); + }; + + const encodeDict = (val) => { + if (isObject(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isObject(val)) return parseObject(val); + throwError(val); + }; + + const encodeObject = (val) => { + try { + return encodeList(val); + } catch (e) { + return encodeDict(val); + } + }; + + function parseObject(obj) { + const encode = (k, v) => { + if (k === "datetime" || k === "datetime.datetime") return Encoder("datetime.datetime", v); + if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v); + if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v); + return v; + }; + + const fixDatetime = (k, v) => { + const isDatetimeObject = (val) => { + let datetimeTypes = ["datetime.datetime", "datetime", "datetime.timedelta", "timedelta"]; + return ( + Object.keys(val).length === 1 && + datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0 + ); + }; + + if (v.constructor === Array) { + v.map((val) => { + if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]]; + //if (isFloat(val)) return encodeFloat(val) + return val; + }); + } + if (v.constructor === Object) { + if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]]; + } + + //if (isFloat(v)) return encodeFloat(v) + + return v; + }; + + let encodeValues = JSON.stringify(obj, encode); + return JSON.parse(encodeValues, fixDatetime); + } + + const encoder = { + str: encodeStr, + string: encodeStr, + float: encodeFloat, + int: encodeInt, + bool: encodeBool, + boolean: encodeBool, + dict: encodeDict, + list: encodeList, + Any: () => value, + "datetime.timedelta": encodeTimeDelta, + "datetime.datetime": encodeDateTime, + timedelta: encodeTimeDelta, + datetime: encodeDateTime, + number: encodeNumber, + object: encodeObject, + bigNumber: encodeBigNumber, + }; + + if (Object.keys(encoder).includes(type)) return encoder[type](value); + else throw new Error(`Error: ${type} is not a valid encoder type.`); +} + +Encoder.BigNumber = BigNumber; + +const { validateTypes: validateTypes$4 } = validators; + +class LamdenMasterNode_API { + constructor(networkInfoObj) { + if (!validateTypes$4.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes$4.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); + + this.hosts = this.validateHosts(networkInfoObj.hosts); + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + + send(method, path, data, overrideURL, callback) { + let parms = ""; + if (Object.keys(data).includes("parms")) { + parms = this.createParms(data.parms); + } + + let options = {}; + if (method === "POST") { + let headers = { "Content-Type": "application/json" }; + options.method = method; + options.headers = headers; + options.body = data; + } + + return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) + .then(async (res) => { + if (res.status === 200) { + let json = await res.json(); + callback(json, undefined); + return json; + } else { + let error = validateTypes$4.isStringWithValue(res.statusText) ? res.statusText : false; + callback(undefined, error); + return error; + } + }) + .catch((err) => { + return callback(undefined, err.toString()); + }); + } + + createParms(parms) { + if (Object.keys(parms).length === 0) return ""; + let parmString = "?"; + Object.keys(parms).forEach((key) => { + parmString = `${parmString}${key}=${parms[key]}&`; + }); + return parmString.slice(0, -1); + } + + async getContractInfo(contractName) { + const returnInfo = (res) => { + try { + if (res.name) return res; + } catch (e) {} + return null; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => returnInfo(res)).then((res) => + returnInfo(res) + ); + } + + async getVariable(contract, variable, key = "") { + let parms = {}; + if (validateTypes$4.isStringWithValue(key)) parms.key = key; + + let path = `/contracts/${contract}/${variable}/`; + + const returnValue = (res) => { + try { + if (res.value) return res.value; + } catch (e) {} + return null; + }; + return this.send("GET", path, { parms }, undefined, (res, err) => returnValue(res)).then( + (res) => returnValue(res) + ); + } + + async getContractMethods(contract) { + const getMethods = (res) => { + try { + if (res.methods) return res.methods; + } catch (e) {} + return []; + }; + let path = `/contracts/${contract}/methods`; + return this.send("GET", path, {}, undefined, (res, err) => getMethods(res)).then((res) => + getMethods(res) + ); + } + + async getContractVariables(contract) { + const getVariables = (res) => { + try { + if (res.variables) return res; + } catch (e) {} + return {}; + }; + let path = `/contracts/${contract}/variables`; + return this.send("GET", path, {}, undefined, (res, err) => getVariables(res)).then((res) => + getVariables(res) + ); + } + + async pingServer() { + const getStatus = (res) => { + try { + if (res.status) return true; + } catch (e) {} + return false; + }; + let response = await this.send("GET", "/ping", {}, undefined, (res, err) => getStatus(res)); + return getStatus(response); + } + + async getCurrencyBalance(vk) { + let balanceRes = await this.getVariable("currency", "balances", vk); + if (!balanceRes) return Encoder("bigNumber", 0); + if (balanceRes.__fixed__) return Encoder("bigNumber", balanceRes.__fixed__); + return Encoder("bigNumber", balanceRes.toString()); + } + + async contractExists(contractName) { + const exists = (res) => { + try { + if (res.name) return true; + } catch (e) {} + return false; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => exists(res)).then((res) => + exists(res) + ); + } + + async sendTransaction(data, url = undefined, callback) { + return this.send("POST", "/", JSON.stringify(data), url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } + + async getNonce(sender, callback) { + if (!validateTypes$4.isStringHex(sender)) return `${sender} is not a hex string.`; + let path = `/nonce/${sender}`; + let url = this.host; + return this.send("GET", path, {}, url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, `Unable to get nonce for ${sender} on network ${url}`); + return; + } + return `Unable to get nonce for ${sender} on network ${url}`; + } + res.masternode = url; + if (callback) { + callback(res, undefined); + return; + } else return res; + }); + } + + checkTransaction(hash, callback) { + const parms = { hash }; + return this.send("GET", "/tx", { parms }, undefined, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } +} + +const { validateTypes: validateTypes$3 } = validators; + +class Network { + // Constructor needs an Object with the following information to build Class. + // + // networkInfo: { + // hosts: list of masternode hostname/ip urls, + // type: "testnet", "mainnet" or "custom" + // }, + constructor(networkInfoObj) { + //Reject undefined or missing info + if (!validateTypes$3.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes$3.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); + + this.type = validateTypes$3.isStringWithValue(networkInfoObj.type) + ? networkInfoObj.type.toLowerCase() + : "custom"; + this.events = new EventEmitter(); + this.hosts = this.validateHosts(networkInfoObj.hosts); + this.currencySymbol = validateTypes$3.isStringWithValue(networkInfoObj.currencySymbol) + ? networkInfoObj.currencySymbol + : "TAU"; + this.name = validateTypes$3.isStringWithValue(networkInfoObj.name) + ? networkInfoObj.name + : "lamden network"; + this.lamden = validateTypes$3.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; + this.blockExplorer = validateTypes$3.isStringWithValue(networkInfoObj.blockExplorer) + ? networkInfoObj.blockExplorer + : undefined; + + this.online = false; + try { + this.API = new LamdenMasterNode_API(networkInfoObj); + } catch (e) { + throw new Error(e); + } + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + //Check if the network is online + //Emits boolean as 'online' event + //Also returns status as well as passes status to a callback + async ping(callback = undefined) { + this.online = await this.API.pingServer(); + this.events.emit("online", this.online); + if (validateTypes$3.isFunction(callback)) callback(this.online); + return this.online; + } + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + async getNetworkInfo() { + await this.ping(); + return { + name: this.name, + lamden: this.lamden, + type: this.type, + hosts: this.hosts, + url: this.url, + online: this.online, + }; + } +} + +const { validateTypes: validateTypes$2 } = validators; + +class TransactionBuilder extends Network { + // Constructor needs an Object with the following information to build Class. + // + // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" + // host: masternode webserver hostname/ip, + // type: "testnet", "mainnet" or "mockchain" + // } + // arg[1] (txInfo): { + // uid: [Optional] unique ID for tracking purposes, + // senderVk: public key of the transaction sender, + // contractName: name of lamden smart contract, + // methodName: name of method to call in contractName, + // kwargs: key/values of args to pass to methodName + // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" + // kwargs.amount = 1000 + // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. + // nonce: [Optional] send() will attempt to retrieve this info automatically + // processor [Optional] send() will attempt to retrieve this info automatically + // } + // arg[2] (txData): [Optional] state hydrating data + constructor(networkInfo, txInfo, txData) { + if (validateTypes$2.isSpecificClass(networkInfo, "Network")) super(networkInfo.getNetworkInfo()); + else super(networkInfo); + + //Validate arguments + if (!validateTypes$2.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`); + if (!validateTypes$2.isStringHex(txInfo.senderVk)) + throw new Error(`Sender Public Key Required (Type: Hex String)`); + if (!validateTypes$2.isStringWithValue(txInfo.contractName)) + throw new Error(`Contract Name Required (Type: String)`); + if (!validateTypes$2.isStringWithValue(txInfo.methodName)) + throw new Error(`Method Required (Type: String)`); + if (!validateTypes$2.isInteger(txInfo.stampLimit)) + throw new Error(`Stamps Limit Required (Type: Integer)`); + + //Store variables in self for reference + this.uid = validateTypes$2.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; + this.sender = txInfo.senderVk; + this.contract = txInfo.contractName; + this.method = txInfo.methodName; + this.kwargs = {}; + if (validateTypes$2.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; + this.stampLimit = txInfo.stampLimit; + + //validate and set nonce and processor if user provided them + if (typeof txInfo.nonce !== "undefined") { + if (!validateTypes$2.isInteger(txInfo.nonce)) + throw new Error( + `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given` + ); + this.nonce = txInfo.nonce; + } + if (typeof txInfo.processor !== "undefined") { + if (!validateTypes$2.isStringWithValue(txInfo.processor)) + throw new Error( + `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given` + ); + this.processor = txInfo.processor; + } + + this.signature; + this.transactionSigned = false; + + //Transaction result information + this.nonceResult = {}; + this.txSendResult = { errors: [] }; + this.txBlockResult = {}; + this.txHash; + this.txCheckResult = {}; + this.txCheckAttempts = 0; + this.txCheckLimit = 1; + + //Hydrate other items if passed + if (txData) { + if (txData.uid) this.uid = txData.uid; + if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) + this.txSendResult = txData.txSendResult; + if (validateTypes$2.isObjectWithKeys(txData.nonceResult)) { + this.nonceResult = txData.nonceResult; + if (validateTypes$2.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; + if (validateTypes$2.isStringWithValue(this.nonceResult.processor)) + this.processor = this.nonceResult.processor; + } + if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) { + this.txSendResult = txData.txSendResult; + if (this.txSendResult.hash) this.txHash = this.txSendResult.hash; + } + if (validateTypes$2.isObjectWithKeys(txData.txBlockResult)) + this.txBlockResult = txData.txBlockResult; + if (validateTypes$2.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; + } + //Create Capnp messages and transactionMessages + this.makePayload(); + } + makePayload() { + this.payload = { + contract: this.contract, + function: this.method, + kwargs: this.kwargs, + nonce: this.nonce, + processor: this.processor, + sender: this.sender, + stamps_supplied: this.stampLimit, + }; + this.sortedPayload = this.sortObject(this.payload); + } + makeTransaction() { + this.tx = { + metadata: { + signature: this.signature, + timestamp: parseInt(+new Date() / 1000), + }, + payload: this.sortedPayload.orderedObj, + }; + } + verifySignature() { + //Verify the signature is correct + if (!this.transactionSigned) + throw new Error( + "Transaction has not be been signed. Use the sign() method first." + ); + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + return verify(this.sender, stringArray, this.signature); + } + sign(sk = undefined, userWallet = undefined) { + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + if (userWallet) this.signature = userWallet.sign(stringArray); + else this.signature = sign(sk, stringArray); + this.transactionSigned = true; + } + sortObject(object) { + const processObj = (obj) => { + const getType = (value) => { + return Object.prototype.toString.call(value); + }; + const isArray = (value) => { + if (getType(value) === "[object Array]") return true; + return false; + }; + const isObject = (value) => { + if (getType(value) === "[object Object]") return true; + return false; + }; + + const sortObjKeys = (unsorted) => { + const sorted = {}; + Object.keys(unsorted) + .sort() + .forEach((key) => (sorted[key] = unsorted[key])); + return sorted; + }; + + const formatKeys = (unformatted) => { + Object.keys(unformatted).forEach((key) => { + if (isArray(unformatted[key])) + unformatted[key] = unformatted[key].map((item) => { + if (isObject(item)) return formatKeys(item); + return item; + }); + if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]); + }); + return sortObjKeys(unformatted); + }; + + if (!isObject(obj)) throw new TypeError("Not a valid Object"); + try { + obj = JSON.parse(JSON.stringify(obj)); + } catch (e) { + throw new TypeError("Not a valid JSON Object"); + } + return formatKeys(obj); + }; + const orderedObj = processObj(object); + return { + orderedObj, + json: JSON.stringify(orderedObj), + }; + } + async getNonce(callback = undefined) { + let timestamp = new Date().toUTCString(); + this.nonceResult = await this.API.getNonce(this.sender); + if (typeof this.nonceResult.nonce === "undefined") { + throw new Error(this.nonceResult); + } + this.nonceResult.timestamp = timestamp; + this.nonce = this.nonceResult.nonce; + this.processor = this.nonceResult.processor; + this.nonceMasternode = this.nonceResult.masternode; + //Create payload object + this.makePayload(); + + if (!callback) return this.nonceResult; + return callback(this.nonceResult); + } + async send(sk = undefined, masternode = undefined, callback = undefined) { + //Error if transaction is not signed and no sk provided to the send method to sign it before sending + if (!validateTypes$2.isStringWithValue(sk) && !this.transactionSigned) { + throw new Error( + `Transation Not Signed: Private key needed or call sign() first` + ); + } + + let timestamp = new Date().toUTCString(); + + try { + //If the nonce isn't set attempt to get it + if (isNaN(this.nonce) || !validateTypes$2.isStringWithValue(this.processor)) + await this.getNonce(); + //if the sk is provided then sign the transaction + if (validateTypes$2.isStringWithValue(sk)) this.sign(sk); + //Serialize transaction + this.makeTransaction(); + //Send transaction to the masternode + let masternodeURL = masternode; + if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode; + let response = await this.API.sendTransaction(this.tx, masternodeURL); + //Set error if txSendResult doesn't exist + if (!response || validateTypes$2.isStringWithValue(response)) { + this.txSendResult.errors = [response || "Unknown Transaction Error"]; + } else { + if (response.error) this.txSendResult.errors = [response.error]; + else this.txSendResult = response; + } + } catch (e) { + this.txSendResult.errors = [e.message]; + } + this.txSendResult.timestamp = timestamp; + return this.handleMasterNodeResponse(this.txSendResult, callback); + } + checkForTransactionResult(callback = undefined) { + return new Promise((resolve) => { + let timerId = setTimeout( + async function checkTx() { + this.txCheckAttempts = this.txCheckAttempts + 1; + let res = await this.API.checkTransaction(this.txHash); + let checkAgain = false; + let timestamp = new Date().toUTCString(); + if (typeof res === "string" || !res) { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + res, + ]; + } + } else { + if (res.error) { + if (res.error === "Transaction not found.") { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + res.error, + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + ]; + } + } else { + this.txCheckResult.errors = [res.error]; + } + } else { + this.txCheckResult = res; + } + } + if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); + else { + if (validateTypes$2.isNumber(this.txCheckResult.status)) { + if (this.txCheckResult.status > 0) { + if (!validateTypes$2.isArray(this.txCheckResult.errors)) + this.txCheckResult.errors = []; + this.txCheckResult.errors.push("This transaction returned a non-zero status code"); + } + } + this.txCheckResult.timestamp = timestamp; + clearTimeout(timerId); + resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)); + } + }.bind(this), + 1000 + ); + }); + } + handleMasterNodeResponse(result, callback = undefined) { + //Check to see if this is a successful transacation submission + if ( + validateTypes$2.isStringWithValue(result.hash) && + validateTypes$2.isStringWithValue(result.success) + ) { + this.txHash = result.hash; + this.setPendingBlockInfo(); + } else { + this.setBlockResultInfo(result); + this.txBlockResult = result; + } + this.events.emit("response", result, this.resultInfo.subtitle); + if (validateTypes$2.isFunction(callback)) callback(result); + return result; + } + setPendingBlockInfo() { + this.resultInfo = { + title: "Transaction Pending", + subtitle: "Your transaction was submitted and is being processed", + message: `Tx Hash: ${this.txHash}`, + type: "success", + }; + return this.resultInfo; + } + setBlockResultInfo(result) { + let erroredTx = false; + let errorText = `returned an error and `; + let statusCode = validateTypes$2.isNumber(result.status) ? result.status : undefined; + let stamps = result.stampsUsed || result.stamps_used || 0; + let message = ""; + if (validateTypes$2.isArrayWithValues(result.errors)) { + erroredTx = true; + message = `This transaction returned ${result.errors.length} errors.`; + if (result.result) { + if (result.result.includes("AssertionError")) result.errors.push(result.result); + } + } + if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `; + + this.resultInfo = { + title: `Transaction ${erroredTx ? "Failed" : "Successful"}`, + subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ""}used ${stamps} stamps`, + message, + type: `${erroredTx ? "error" : "success"}`, + errorInfo: erroredTx ? result.errors : undefined, + returnResult: result.result || "", + stampsUsed: stamps, + statusCode, + }; + return this.resultInfo; + } + getResultInfo() { + return this.resultInfo; + } + getTxInfo() { + return { + senderVk: this.sender, + contractName: this.contract, + methodName: this.method, + kwargs: this.kwargs, + stampLimit: this.stampLimit, + }; + } + getAllInfo() { + return { + uid: this.uid, + txHash: this.txHash, + signed: this.transactionSigned, + tx: this.tx, + signature: this.signature, + networkInfo: this.getNetworkInfo(), + txInfo: this.getTxInfo(), + txSendResult: this.txSendResult, + txBlockResult: this.txBlockResult, + resultInfo: this.getResultInfo(), + nonceResult: this.nonceResult, + }; + } +} + +const { validateTypes: validateTypes$1 } = validators; + +class TransactionBatcher extends Network { + constructor(networkInfo) { + if (validateTypes$1.isSpecificClass(networkInfo, 'Network')) + super(networkInfo.getNetworkInfo()); + else super(networkInfo); + + this.txBatches = {}; + this.overflow = []; + this.nonceResults = {}; + this.running = false; + } + addTransaction(txInfo){ + if (this.running) { + this.overflow.push(txInfo); + return + } + this.validateTransactionInfo(txInfo); + if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []; + this.txBatches[txInfo.senderVk].push(txInfo); + } + addTransactionList(txList){ + txList.forEach(txInfo => this.addTransaction(txInfo)); + } + processOverflow(){ + const overflow = this.overflow; + this.overflow = []; + overflow.forEach(txInfo => this.addTransaction(txInfo)); + } + hasTransactions(){ + let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length); + test.filter(f => f === 0); + if (test.length > 0 ) return true + return false + } + validateTransactionInfo(txInfo){ + try{ + new TransactionBuilder(txInfo); + }catch(e){ + return false + } + return true + } + async getStartingNonce(senderVk, callback = undefined){ + let timestamp = new Date().toUTCString(); + let response = await this.API.getNonce(senderVk); + if (typeof response.nonce === 'undefined'){ + throw new Error(response) + } + response.timestamp = timestamp; + this.nonceResults[senderVk] = response; + + if (callback) callback(response); + return response; + } + async sendAllBatches(keyDict){ + if (this.running) return + let sentTransactions = []; + this.running = true; + + await Promise.all(Object.keys(this.txBatches).map((senderVk) => { + const senderBatch = this.txBatches[senderVk].splice(0,15); + if (senderBatch.length <= 15) delete this.txBatches[senderVk]; + + return new Promise(async (resolver) => { + if (senderBatch.length === 0 ) resolver(); + + if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`) + let nonceResponse = await this.getStartingNonce(senderVk); + let txBatch = this.setBatchNonces(nonceResponse, senderBatch); + this.signBatch(txBatch, keyDict[senderVk]); + this.sendBatch(txBatch).then(sentList => { + sentTransactions = [...sentTransactions, ...sentList]; + resolver(); + }); + }) + })); + + try{ + return Promise.all(sentTransactions) + }catch (e){} + finally{ + this.running = false; + this.processOverflow(); + } + } + setBatchNonces(nonceResult, txList){ + return txList.map((txInfo, index) => { + txInfo.nonce = nonceResult.nonce + index; + txInfo.processor = nonceResult.processor; + return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo) + }).sort((a, b) => a.nonce - b.nonce) + } + signBatch(txBatch, key){ + txBatch.forEach(txBuilder => txBuilder.sign(key)); + } + sendBatch(txBatch){ + let resolvedTransactions = []; + return new Promise(resolver => { + const resolve = (index) => { + if ((index + 1) === txBatch.length) resolver(resolvedTransactions); + }; + txBatch.forEach((txBuilder, index) => { + const delayedSend = () => { + resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder}); + resolve(index); + }; + setTimeout(delayedSend, 1200 * index); + }); + }) + } +} + +const { validateTypes, assertTypes } = validators; + +class Keystore { + /** + * Lamden Keystores + * + * This Class will create a lamden keystore instance + * + * @param {Object|undefined} arg constructor argument + * @param {String|undefined} arg.key Create an instance and load it with one private key + * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys + * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data + * @return {Keystore} + */ + constructor(arg = undefined) { + this.KEYSTORE_VERSION = "1.0"; + this.password = null; + this.encryptedData = null; + + this.keyList = (() => { + let keyList = []; + let outerClass = this; + let wallets = []; + + const addKey = (key) => { + keyList.push(key); + createWallets(); + }; + const deleteKey = (position) => { + keyList.splice(position, 1); + createWallets(); + }; + const clearKeys = () => { + keyList = []; + createWallets(); + }; + const numOfKeys = () => keyList.length; + const createWallets = () => { + wallets = []; + keyList.forEach(keyInfo => { + let newWallet = create_wallet({sk: keyInfo.sk, keepPrivate: true}); + newWallet = {...newWallet, ...keyInfo}; + delete newWallet.sk; + wallets.push(newWallet); + }); + }; + const createKeystore = (password, hint = undefined) => { + return JSON.stringify({ + data: encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}), + w: !hint ? "" : encryptStrHash('n1ahcKc0lb', hint), + }); + }; + const decryptKeystore = (password, data) => { + let decrypted = decryptObject(password, data); + if (decrypted) { + assertTypes.isArray(decrypted.keyList); + decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk)); + decrypted.keyList.forEach(keyInfo => addKey(keyInfo)); + outerClass.version = decrypted.version; + } else { + throw new Error("Incorrect Keystore Password.") + } + }; + + return { + getWallets: () => wallets, + getWallet: (vk) => wallets.find(wallet => wallet.vk === vk), + addKey, + clearKeys, + numOfKeys, + deleteKey, + createKeystore, + decryptKeystore + } + })(); + + if (arg){ + if (arg.key) this.addKey(arg.key); + if (arg.keyList) this.addKeys(arg.keyList); + if (arg.keystoreData) this.addKeystoreData(arg.keystoreData); + } + } + /** + * Add a list of keys to add to the keystore + * @param {Array.} keyList An array of 32 character long Lamden private keys + */ + addKeys(keyList){ + assertTypes.isArray(keyList); + keyList.forEach(key => this.addKey(key)); + } + /** + * Add a key to the keystore + * @param {string} key A 32 character long Lamden private key + */ + addKey(keyInfo){ + assertTypes.isObjectWithKeys(keyInfo); + assertTypes.isStringWithValue(keyInfo.sk); + if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk; + this.keyList.addKey(keyInfo); + } + /** + * Load the keystore with the data from an existing keystore + * @param {string} keystoreData The contents of an existing encrypted keystore file + */ + addKeystoreData(keystoreData){ + if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); + if(this.validateKeyStore(keystoreData)){ + this.encryptedData = keystoreData; + } + } + /** + * Returns the password hint in a keystore file + * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor + */ + getPasswordHint(keystoreData = undefined){ + if (!this.encryptedData && !keystoreData) throw new Error("No keystore data found.") + + if (keystoreData) { + if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); + } + else keystoreData = this.encryptedData; + + if (keystoreData.w) return decryptStrHash('n1ahcKc0lb', keystoreData.w); + else return "" + } + /** + * Removes a specific key from the keyList + * @param {Number} keyIndex The index of the key you want to remove + */ + deleteKey(keyIndex){ + assertTypes.isInteger(keyIndex); + if (this.keyList.numOfKeys() === 0) return + if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error("Key index out of range.") + this.keyList.deleteKey(keyIndex); + } + /** + * Clears all keys from the keystore + */ + clearKeys(){ + this.keyList.clearKeys(); + } + /** + * Clears all keys from the keystore + * @return {Array.} An array of wallet objects + */ + get wallets() { + return this.keyList.getWallets() + } + /** + * Load the keystore with the data from an existing keystore + * @param {String} vk A 32 character long Lamden public key + * @return {Object} A wallet object + */ + getWallet(vk) { + return this.keyList.getWallet(vk) + } + /** + * Used to validate that a keystore is the proper Lamden Format (does not decrypt data) + * @param {String} keystoreData The contents of an existing encrypted keystore file + * @return {Boolean} valid + * @throws {Error} This is not a valid keystore file. + */ + validateKeyStore(keystoreData){ + assertTypes.isObjectWithKeys(keystoreData); + try{ + let encryptedData = JSON.parse(keystoreData.data); + if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){ + throw new Error("This is not a valid keystore file.") + } + } catch (e) { + throw new Error("This is not a valid keystore file.") + } + return true; + } + /** + * Create a Keystore text string from the keys contained in the Keystore instance + * @param {String} password A password to encrypt the data + * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password. + * @return {String} A JSON stringified object containing the encrypted data + * @throws {Error} Any errors from the encyption process + */ + createKeystore(password, hint = undefined) { + assertTypes.isStringWithValue(password); + if (hint){ + assertTypes.isStringWithValue(hint); + } + return this.keyList.createKeystore(password, hint) + } + /** + * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore. + * @param {String} password A password to encrypt the data + * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor. + * @throws {Error} Any errors from the encyption process + */ + decryptKeystore(password, keystoreData = undefined){ + if (keystoreData) this.addKeystoreData(keystoreData); + if (!this.encryptedData) throw new Error ("No keystoreData to decrypt.") + try{ + this.keyList.decryptKeystore(password, this.encryptedData.data); + }catch (e){ + throw new Error("Incorrect Keystore Password.") + } + } +} + +globalThis.Buffer = buffer.Buffer; + +var index = { + TransactionBuilder, + TransactionBatcher, + Masternode_API: LamdenMasterNode_API, + Network, + wallet, + Keystore, + Encoder, + utils: utils$1, +}; + +export { index as default }; +//# sourceMappingURL=lamden.js.map diff --git a/dist/esm/lamden.js.map b/dist/esm/lamden.js.map new file mode 100644 index 0000000..03894aa --- /dev/null +++ b/dist/esm/lamden.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lamden.js","sources":["../../node_modules/types-validate-assert/dist/index.js","../../node_modules/node-cryptojs-aes/lib/core.js","../../node_modules/node-cryptojs-aes/lib/enc-base64.js","../../node_modules/node-cryptojs-aes/lib/md5.js","../../node_modules/node-cryptojs-aes/lib/evpkdf.js","../../node_modules/node-cryptojs-aes/lib/cipher-core.js","../../node_modules/node-cryptojs-aes/lib/aes.js","../../node_modules/node-cryptojs-aes/lib/jsonformatter.js","../../node_modules/node-cryptojs-aes/cryptojs.js","../../src/js/helpers.js","../../node_modules/tweetnacl/nacl-fast.js","../../src/bip39.browser.js","../../node_modules/inherits/inherits_browser.js","../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/buffer/index.js","../../node_modules/safe-buffer/index.js","../../node_modules/util/support/isBufferBrowser.js","../../node_modules/util/util.js","../../node_modules/string_decoder/lib/string_decoder.js","../../node_modules/cipher-base/index.js","../../node_modules/create-hmac/legacy.js","../../node_modules/hash-base/node_modules/safe-buffer/index.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","../../node_modules/hash-base/node_modules/readable-stream/errors-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","../../node_modules/hash-base/node_modules/inherits/inherits_browser.js","../../node_modules/util-deprecate/browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../node_modules/hash-base/node_modules/readable-stream/readable-browser.js","../../node_modules/hash-base/index.js","../../node_modules/md5.js/index.js","../../node_modules/create-hash/md5.js","../../node_modules/ripemd160/index.js","../../node_modules/sha.js/hash.js","../../node_modules/sha.js/sha.js","../../node_modules/sha.js/sha1.js","../../node_modules/sha.js/sha256.js","../../node_modules/sha.js/sha224.js","../../node_modules/sha.js/sha512.js","../../node_modules/sha.js/sha384.js","../../node_modules/sha.js/index.js","../../node_modules/create-hmac/browser.js","../../node_modules/ed25519-hd-key/node_modules/tweetnacl/nacl-fast.js","../../node_modules/ed25519-hd-key/dist/utils.js","../../node_modules/ed25519-hd-key/dist/index.js","../../src/js/wallet.js","../../src/js/eventEmitter.js","../../node_modules/node-fetch/browser.js","../../node_modules/bignumber.js/bignumber.js","../../src/js/encoder.js","../../src/js/masternode-api.js","../../src/js/network.js","../../src/js/transactionBuilder.js","../../src/js/transactionBatcher.js","../../src/js/keystore.js","../../src/index.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('index', ['exports'], factory) :\n (global = global || self, factory(global.index = {}));\n}(this, (function (exports) { 'use strict';\n\n class ValidateTypes {\n constructor() {}\n\n getType(value) {\n return Object.prototype.toString.call(value);\n }\n\n getClassName(value) {\n try {\n return value.constructor.name;\n } catch (e) {}\n\n return this.getType(value);\n } //Validation functions\n\n\n isObject(value) {\n if (this.getType(value) === \"[object Object]\") return true;\n return false;\n }\n\n isFunction(value) {\n if (this.getType(value) === \"[object Function]\") return true;\n return false;\n }\n\n isString(value) {\n if (this.getType(value) === \"[object String]\") return true;\n return false;\n }\n\n isBoolean(value) {\n if (this.getType(value) === \"[object Boolean]\") return true;\n return false;\n }\n\n isArray(value) {\n if (this.getType(value) === \"[object Array]\") return true;\n return false;\n }\n\n isNumber(value) {\n if (this.getType(value) === \"[object Number]\") return true;\n return false;\n }\n\n isInteger(value) {\n if (this.getType(value) === \"[object Number]\" && Number.isInteger(value)) return true;\n return false;\n }\n\n isRegEx(value) {\n if (this.getType(value) === \"[object RegExp]\") return true;\n return false;\n }\n\n isStringHex(value) {\n if (!this.isStringWithValue(value)) return false;\n let hexRegEx = /([0-9]|[a-f])/gim;\n return (value.match(hexRegEx) || []).length === value.length;\n }\n\n hasKeys(value, keys) {\n if (keys.map(key => key in value).includes(false)) return false;\n return true;\n }\n\n isStringWithValue(value) {\n if (this.isString(value) && value !== '') return true;\n return false;\n }\n\n isObjectWithKeys(value) {\n if (this.isObject(value) && Object.keys(value).length > 0) return true;\n return false;\n }\n\n isArrayWithValues(value) {\n if (this.isArray(value) && value.length > 0) return true;\n return false;\n }\n\n isSpecificClass(value, className) {\n if (!this.isObject(value)) return false;\n if (this.getClassName(value) !== className) return false;\n return true;\n }\n\n }\n\n class AssertTypes {\n constructor() {\n this.validate = new ValidateTypes();\n } //Validation functions\n\n\n isObject(value) {\n if (!this.validate.isObject(value)) {\n throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isFunction(value) {\n if (!this.validate.isFunction(value)) {\n throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isString(value) {\n if (!this.validate.isString(value)) {\n throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isBoolean(value) {\n if (!this.validate.isBoolean(value)) {\n throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isArray(value) {\n if (!this.validate.isArray(value)) {\n throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isNumber(value) {\n if (!this.validate.isNumber(value)) {\n throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isInteger(value) {\n if (!this.validate.isInteger(value)) {\n throw new TypeError(`Expected \"${value}\" to be an integer but got non-integer value`);\n }\n\n return true;\n }\n\n isRegEx(value) {\n if (!this.validate.isRegEx(value)) {\n throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isStringHex(value) {\n if (!this.validate.isStringHex(value)) {\n throw new TypeError(`Expected \"${value}\" to be hex but got non-hex value`);\n }\n\n return true;\n }\n\n hasKeys(value, keys) {\n if (!this.validate.hasKeys(value, keys)) {\n throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`);\n }\n\n return true;\n }\n\n isStringWithValue(value) {\n if (!this.validate.isStringWithValue(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object String] and not empty`);\n }\n\n return true;\n }\n\n isObjectWithKeys(value) {\n if (!this.validate.isObjectWithKeys(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Object] and have keys`);\n }\n\n return true;\n }\n\n isArrayWithValues(value) {\n if (!this.validate.isArrayWithValues(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Array] and not empty`);\n }\n\n return true;\n }\n\n isSpecificClass(value, className) {\n if (!this.validate.isSpecificClass(value, className)) {\n throw new TypeError(`Expected Object Class to be \"${className}\" but got ${this.validate.getClassName(value)}`);\n }\n\n return true;\n }\n\n }\n\n const validateTypes = new ValidateTypes();\n const assertTypes = new AssertTypes();\n\n exports.assertTypes = assertTypes;\n exports.validateTypes = validateTypes;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * CryptoJS core components.\r\n */\r\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n /**\r\n * CryptoJS namespace.\r\n */\r\n var C = {};\r\n\r\n /**\r\n * Library namespace.\r\n */\r\n var C_lib = C.lib = {};\r\n\r\n /**\r\n * Base object for prototypal inheritance.\r\n */\r\n var Base = C_lib.Base = (function () {\r\n function F() {}\r\n\r\n return {\r\n /**\r\n * Creates a new object that inherits from this object.\r\n *\r\n * @param {Object} overrides Properties to copy into the new object.\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * field: 'value',\r\n *\r\n * method: function () {\r\n * }\r\n * });\r\n */\r\n extend: function (overrides) {\r\n // Spawn\r\n F.prototype = this;\r\n var subtype = new F();\r\n\r\n // Augment\r\n if (overrides) {\r\n subtype.mixIn(overrides);\r\n }\r\n\r\n // Create default initializer\r\n if (!subtype.hasOwnProperty('init')) {\r\n subtype.init = function () {\r\n subtype.$super.init.apply(this, arguments);\r\n };\r\n }\r\n\r\n // Initializer's prototype is the subtype object\r\n subtype.init.prototype = subtype;\r\n\r\n // Reference supertype\r\n subtype.$super = this;\r\n\r\n return subtype;\r\n },\r\n\r\n /**\r\n * Extends this object and runs the init method.\r\n * Arguments to create() will be passed to init().\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var instance = MyType.create();\r\n */\r\n create: function () {\r\n var instance = this.extend();\r\n instance.init.apply(instance, arguments);\r\n\r\n return instance;\r\n },\r\n\r\n /**\r\n * Initializes a newly created object.\r\n * Override this method to add some logic when your objects are created.\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * init: function () {\r\n * // ...\r\n * }\r\n * });\r\n */\r\n init: function () {\r\n },\r\n\r\n /**\r\n * Copies properties into this object.\r\n *\r\n * @param {Object} properties The properties to mix in.\r\n *\r\n * @example\r\n *\r\n * MyType.mixIn({\r\n * field: 'value'\r\n * });\r\n */\r\n mixIn: function (properties) {\r\n for (var propertyName in properties) {\r\n if (properties.hasOwnProperty(propertyName)) {\r\n this[propertyName] = properties[propertyName];\r\n }\r\n }\r\n\r\n // IE won't copy toString using the loop above\r\n if (properties.hasOwnProperty('toString')) {\r\n this.toString = properties.toString;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = instance.clone();\r\n */\r\n clone: function () {\r\n return this.init.prototype.extend(this);\r\n }\r\n };\r\n }());\r\n\r\n /**\r\n * An array of 32-bit words.\r\n *\r\n * @property {Array} words The array of 32-bit words.\r\n * @property {number} sigBytes The number of significant bytes in this word array.\r\n */\r\n var WordArray = C_lib.WordArray = Base.extend({\r\n /**\r\n * Initializes a newly created word array.\r\n *\r\n * @param {Array} words (Optional) An array of 32-bit words.\r\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.create();\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n */\r\n init: function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes != undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 4;\r\n }\r\n },\r\n\r\n /**\r\n * Converts this word array to a string.\r\n *\r\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n *\r\n * @return {string} The stringified word array.\r\n *\r\n * @example\r\n *\r\n * var string = wordArray + '';\r\n * var string = wordArray.toString();\r\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n */\r\n toString: function (encoder) {\r\n return (encoder || Hex).stringify(this);\r\n },\r\n\r\n /**\r\n * Concatenates a word array to this word array.\r\n *\r\n * @param {WordArray} wordArray The word array to append.\r\n *\r\n * @return {WordArray} This word array.\r\n *\r\n * @example\r\n *\r\n * wordArray1.concat(wordArray2);\r\n */\r\n concat: function (wordArray) {\r\n // Shortcuts\r\n var thisWords = this.words;\r\n var thatWords = wordArray.words;\r\n var thisSigBytes = this.sigBytes;\r\n var thatSigBytes = wordArray.sigBytes;\r\n\r\n // Clamp excess bits\r\n this.clamp();\r\n\r\n // Concat\r\n if (thisSigBytes % 4) {\r\n // Copy one byte at a time\r\n for (var i = 0; i < thatSigBytes; i++) {\r\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n }\r\n } else if (thatWords.length > 0xffff) {\r\n // Copy one word at a time\r\n for (var i = 0; i < thatSigBytes; i += 4) {\r\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n }\r\n } else {\r\n // Copy all words at once\r\n thisWords.push.apply(thisWords, thatWords);\r\n }\r\n this.sigBytes += thatSigBytes;\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Removes insignificant bits.\r\n *\r\n * @example\r\n *\r\n * wordArray.clamp();\r\n */\r\n clamp: function () {\r\n // Shortcuts\r\n var words = this.words;\r\n var sigBytes = this.sigBytes;\r\n\r\n // Clamp\r\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n words.length = Math.ceil(sigBytes / 4);\r\n },\r\n\r\n /**\r\n * Creates a copy of this word array.\r\n *\r\n * @return {WordArray} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = wordArray.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone.words = this.words.slice(0);\r\n\r\n return clone;\r\n },\r\n\r\n /**\r\n * Creates a word array filled with random bytes.\r\n *\r\n * @param {number} nBytes The number of random bytes to generate.\r\n *\r\n * @return {WordArray} The random word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n */\r\n random: function (nBytes) {\r\n var words = [];\r\n for (var i = 0; i < nBytes; i += 4) {\r\n words.push((Math.random() * 0x100000000) | 0);\r\n }\r\n\r\n return new WordArray.init(words, nBytes);\r\n }\r\n });\r\n\r\n /**\r\n * Encoder namespace.\r\n */\r\n var C_enc = C.enc = {};\r\n\r\n /**\r\n * Hex encoding strategy.\r\n */\r\n var Hex = C_enc.Hex = {\r\n /**\r\n * Converts a word array to a hex string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The hex string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var hexChars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n hexChars.push((bite >>> 4).toString(16));\r\n hexChars.push((bite & 0x0f).toString(16));\r\n }\r\n\r\n return hexChars.join('');\r\n },\r\n\r\n /**\r\n * Converts a hex string to a word array.\r\n *\r\n * @param {string} hexStr The hex string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n */\r\n parse: function (hexStr) {\r\n // Shortcut\r\n var hexStrLength = hexStr.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < hexStrLength; i += 2) {\r\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n }\r\n\r\n return new WordArray.init(words, hexStrLength / 2);\r\n }\r\n };\r\n\r\n /**\r\n * Latin1 encoding strategy.\r\n */\r\n var Latin1 = C_enc.Latin1 = {\r\n /**\r\n * Converts a word array to a Latin1 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The Latin1 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var latin1Chars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n },\r\n\r\n /**\r\n * Converts a Latin1 string to a word array.\r\n *\r\n * @param {string} latin1Str The Latin1 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n */\r\n parse: function (latin1Str) {\r\n // Shortcut\r\n var latin1StrLength = latin1Str.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < latin1StrLength; i++) {\r\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n }\r\n\r\n return new WordArray.init(words, latin1StrLength);\r\n }\r\n };\r\n\r\n /**\r\n * UTF-8 encoding strategy.\r\n */\r\n var Utf8 = C_enc.Utf8 = {\r\n /**\r\n * Converts a word array to a UTF-8 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The UTF-8 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n try {\r\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n },\r\n\r\n /**\r\n * Converts a UTF-8 string to a word array.\r\n *\r\n * @param {string} utf8Str The UTF-8 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n */\r\n parse: function (utf8Str) {\r\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n }\r\n };\r\n\r\n /**\r\n * Abstract buffered block algorithm template.\r\n *\r\n * The property blockSize must be implemented in a concrete subtype.\r\n *\r\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n */\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n /**\r\n * Resets this block algorithm's data buffer to its initial state.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm.reset();\r\n */\r\n reset: function () {\r\n // Initial values\r\n this._data = new WordArray.init();\r\n this._nDataBytes = 0;\r\n },\r\n\r\n /**\r\n * Adds new data to this block algorithm's buffer.\r\n *\r\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm._append('data');\r\n * bufferedBlockAlgorithm._append(wordArray);\r\n */\r\n _append: function (data) {\r\n // Convert string to WordArray, else assume WordArray already\r\n if (typeof data == 'string') {\r\n data = Utf8.parse(data);\r\n }\r\n\r\n // Append\r\n this._data.concat(data);\r\n this._nDataBytes += data.sigBytes;\r\n },\r\n\r\n /**\r\n * Processes available data blocks.\r\n *\r\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n *\r\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n *\r\n * @return {WordArray} The processed data.\r\n *\r\n * @example\r\n *\r\n * var processedData = bufferedBlockAlgorithm._process();\r\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n */\r\n _process: function (doFlush) {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n var dataSigBytes = data.sigBytes;\r\n var blockSize = this.blockSize;\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count blocks ready\r\n var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n if (doFlush) {\r\n // Round up to include partial blocks\r\n nBlocksReady = Math.ceil(nBlocksReady);\r\n } else {\r\n // Round down to include only full blocks,\r\n // less the number of blocks that must remain in the buffer\r\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n }\r\n\r\n // Count words ready\r\n var nWordsReady = nBlocksReady * blockSize;\r\n\r\n // Count bytes ready\r\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n // Process blocks\r\n if (nWordsReady) {\r\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n // Perform concrete-algorithm logic\r\n this._doProcessBlock(dataWords, offset);\r\n }\r\n\r\n // Remove processed words\r\n var processedWords = dataWords.splice(0, nWordsReady);\r\n data.sigBytes -= nBytesReady;\r\n }\r\n\r\n // Return processed words\r\n return new WordArray.init(processedWords, nBytesReady);\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = bufferedBlockAlgorithm.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone._data = this._data.clone();\r\n\r\n return clone;\r\n },\r\n\r\n _minBufferSize: 0\r\n });\r\n\r\n /**\r\n * Abstract hasher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n */\r\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Initializes a newly created hasher.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n *\r\n * @example\r\n *\r\n * var hasher = CryptoJS.algo.SHA256.create();\r\n */\r\n init: function (cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this hasher to its initial state.\r\n *\r\n * @example\r\n *\r\n * hasher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-hasher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Updates this hasher with a message.\r\n *\r\n * @param {WordArray|string} messageUpdate The message to append.\r\n *\r\n * @return {Hasher} This hasher.\r\n *\r\n * @example\r\n *\r\n * hasher.update('message');\r\n * hasher.update(wordArray);\r\n */\r\n update: function (messageUpdate) {\r\n // Append\r\n this._append(messageUpdate);\r\n\r\n // Update the hash\r\n this._process();\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Finalizes the hash computation.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @example\r\n *\r\n * var hash = hasher.finalize();\r\n * var hash = hasher.finalize('message');\r\n * var hash = hasher.finalize(wordArray);\r\n */\r\n finalize: function (messageUpdate) {\r\n // Final message update\r\n if (messageUpdate) {\r\n this._append(messageUpdate);\r\n }\r\n\r\n // Perform concrete-hasher logic\r\n var hash = this._doFinalize();\r\n\r\n return hash;\r\n },\r\n\r\n blockSize: 512/32,\r\n\r\n /**\r\n * Creates a shortcut function to a hasher's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to create a helper for.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHelper: function (hasher) {\r\n return function (message, cfg) {\r\n return new hasher.init(cfg).finalize(message);\r\n };\r\n },\r\n\r\n /**\r\n * Creates a shortcut function to the HMAC's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHmacHelper: function (hasher) {\r\n return function (message, key) {\r\n return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n };\r\n }\r\n });\r\n\r\n /**\r\n * Algorithm namespace.\r\n */\r\n var C_algo = C.algo = {};\r\n\r\n return C;\r\n}(Math));\r\n\r\nexports.CryptoJS = CryptoJS;\r\n","var CryptoJS = require('./core').CryptoJS;\n\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n}());\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (Math) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var WordArray = C_lib.WordArray;\r\n var Hasher = C_lib.Hasher;\r\n var C_algo = C.algo;\r\n\r\n // Constants table\r\n var T = [];\r\n\r\n // Compute constants\r\n (function () {\r\n for (var i = 0; i < 64; i++) {\r\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n }\r\n }());\r\n\r\n /**\r\n * MD5 hash algorithm.\r\n */\r\n var MD5 = C_algo.MD5 = Hasher.extend({\r\n _doReset: function () {\r\n this._hash = new WordArray.init([\r\n 0x67452301, 0xefcdab89,\r\n 0x98badcfe, 0x10325476\r\n ]);\r\n },\r\n\r\n _doProcessBlock: function (M, offset) {\r\n // Swap endian\r\n for (var i = 0; i < 16; i++) {\r\n // Shortcuts\r\n var offset_i = offset + i;\r\n var M_offset_i = M[offset_i];\r\n\r\n M[offset_i] = (\r\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n );\r\n }\r\n\r\n // Shortcuts\r\n var H = this._hash.words;\r\n\r\n var M_offset_0 = M[offset + 0];\r\n var M_offset_1 = M[offset + 1];\r\n var M_offset_2 = M[offset + 2];\r\n var M_offset_3 = M[offset + 3];\r\n var M_offset_4 = M[offset + 4];\r\n var M_offset_5 = M[offset + 5];\r\n var M_offset_6 = M[offset + 6];\r\n var M_offset_7 = M[offset + 7];\r\n var M_offset_8 = M[offset + 8];\r\n var M_offset_9 = M[offset + 9];\r\n var M_offset_10 = M[offset + 10];\r\n var M_offset_11 = M[offset + 11];\r\n var M_offset_12 = M[offset + 12];\r\n var M_offset_13 = M[offset + 13];\r\n var M_offset_14 = M[offset + 14];\r\n var M_offset_15 = M[offset + 15];\r\n\r\n // Working varialbes\r\n var a = H[0];\r\n var b = H[1];\r\n var c = H[2];\r\n var d = H[3];\r\n\r\n // Computation\r\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n // Intermediate hash value\r\n H[0] = (H[0] + a) | 0;\r\n H[1] = (H[1] + b) | 0;\r\n H[2] = (H[2] + c) | 0;\r\n H[3] = (H[3] + d) | 0;\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n\r\n var nBitsTotal = this._nDataBytes * 8;\r\n var nBitsLeft = data.sigBytes * 8;\r\n\r\n // Add padding\r\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n var nBitsTotalL = nBitsTotal;\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n );\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n );\r\n\r\n data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n // Hash final blocks\r\n this._process();\r\n\r\n // Shortcuts\r\n var hash = this._hash;\r\n var H = hash.words;\r\n\r\n // Swap endian\r\n for (var i = 0; i < 4; i++) {\r\n // Shortcut\r\n var H_i = H[i];\r\n\r\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n }\r\n\r\n // Return final computed hash\r\n return hash;\r\n },\r\n\r\n clone: function () {\r\n var clone = Hasher.clone.call(this);\r\n clone._hash = this._hash.clone();\r\n\r\n return clone;\r\n }\r\n });\r\n\r\n function FF(a, b, c, d, x, s, t) {\r\n var n = a + ((b & c) | (~b & d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function GG(a, b, c, d, x, s, t) {\r\n var n = a + ((b & d) | (c & ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function HH(a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function II(a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n /**\r\n * Shortcut function to the hasher's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hash = CryptoJS.MD5('message');\r\n * var hash = CryptoJS.MD5(wordArray);\r\n */\r\n C.MD5 = Hasher._createHelper(MD5);\r\n\r\n /**\r\n * Shortcut function to the HMAC's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n * @param {WordArray|string} key The secret key.\r\n *\r\n * @return {WordArray} The HMAC.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hmac = CryptoJS.HmacMD5(message, key);\r\n */\r\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n}(Math));\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var C_algo = C.algo;\r\n var MD5 = C_algo.MD5;\r\n\r\n /**\r\n * This key derivation function is meant to conform with EVP_BytesToKey.\r\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n */\r\n var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n * @property {number} iterations The number of iterations to perform. Default: 1\r\n */\r\n cfg: Base.extend({\r\n keySize: 128/32,\r\n hasher: MD5,\r\n iterations: 1\r\n }),\r\n\r\n /**\r\n * Initializes a newly created key derivation function.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n *\r\n * @example\r\n *\r\n * var kdf = CryptoJS.algo.EvpKDF.create();\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n */\r\n init: function (cfg) {\r\n this.cfg = this.cfg.extend(cfg);\r\n },\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @example\r\n *\r\n * var key = kdf.compute(password, salt);\r\n */\r\n compute: function (password, salt) {\r\n // Shortcut\r\n var cfg = this.cfg;\r\n\r\n // Init hasher\r\n var hasher = cfg.hasher.create();\r\n\r\n // Initial values\r\n var derivedKey = WordArray.create();\r\n\r\n // Shortcuts\r\n var derivedKeyWords = derivedKey.words;\r\n var keySize = cfg.keySize;\r\n var iterations = cfg.iterations;\r\n\r\n // Generate key\r\n while (derivedKeyWords.length < keySize) {\r\n if (block) {\r\n hasher.update(block);\r\n }\r\n var block = hasher.update(password).finalize(salt);\r\n hasher.reset();\r\n\r\n // Iterations\r\n for (var i = 1; i < iterations; i++) {\r\n block = hasher.finalize(block);\r\n hasher.reset();\r\n }\r\n\r\n derivedKey.concat(block);\r\n }\r\n derivedKey.sigBytes = keySize * 4;\r\n\r\n return derivedKey;\r\n }\r\n });\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var key = CryptoJS.EvpKDF(password, salt);\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n */\r\n C.EvpKDF = function (password, salt, cfg) {\r\n return EvpKDF.create(cfg).compute(password, salt);\r\n };\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * Cipher core components.\r\n */\r\nCryptoJS.lib.Cipher || (function (undefined) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n var C_enc = C.enc;\r\n var Utf8 = C_enc.Utf8;\r\n var Base64 = C_enc.Base64;\r\n var C_algo = C.algo;\r\n var EvpKDF = C_algo.EvpKDF;\r\n\r\n /**\r\n * Abstract base cipher template.\r\n *\r\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n */\r\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {WordArray} iv The IV to use for this operation.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Creates this cipher in encryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createEncryptor: function (key, cfg) {\r\n return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Creates this cipher in decryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createDecryptor: function (key, cfg) {\r\n return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Initializes a newly created cipher.\r\n *\r\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n */\r\n init: function (xformMode, key, cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Store transform mode and key\r\n this._xformMode = xformMode;\r\n this._key = key;\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this cipher to its initial state.\r\n *\r\n * @example\r\n *\r\n * cipher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-cipher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Adds data to be encrypted or decrypted.\r\n *\r\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.process('data');\r\n * var encrypted = cipher.process(wordArray);\r\n */\r\n process: function (dataUpdate) {\r\n // Append\r\n this._append(dataUpdate);\r\n\r\n // Process available blocks\r\n return this._process();\r\n },\r\n\r\n /**\r\n * Finalizes the encryption or decryption process.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after final processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.finalize();\r\n * var encrypted = cipher.finalize('data');\r\n * var encrypted = cipher.finalize(wordArray);\r\n */\r\n finalize: function (dataUpdate) {\r\n // Final data update\r\n if (dataUpdate) {\r\n this._append(dataUpdate);\r\n }\r\n\r\n // Perform concrete-cipher logic\r\n var finalProcessedData = this._doFinalize();\r\n\r\n return finalProcessedData;\r\n },\r\n\r\n keySize: 128/32,\r\n\r\n ivSize: 128/32,\r\n\r\n _ENC_XFORM_MODE: 1,\r\n\r\n _DEC_XFORM_MODE: 2,\r\n\r\n /**\r\n * Creates shortcut functions to a cipher's object interface.\r\n *\r\n * @param {Cipher} cipher The cipher to create a helper for.\r\n *\r\n * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n */\r\n _createHelper: (function () {\r\n function selectCipherStrategy(key) {\r\n if (typeof key == 'string') {\r\n return PasswordBasedCipher;\r\n } else {\r\n return SerializableCipher;\r\n }\r\n }\r\n\r\n return function (cipher) {\r\n return {\r\n encrypt: function (message, key, cfg) {\r\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n },\r\n\r\n decrypt: function (ciphertext, key, cfg) {\r\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n }\r\n };\r\n };\r\n }())\r\n });\r\n\r\n /**\r\n * Abstract base stream cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n */\r\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n _doFinalize: function () {\r\n // Process partial blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 1\r\n });\r\n\r\n /**\r\n * Mode namespace.\r\n */\r\n var C_mode = C.mode = {};\r\n\r\n /**\r\n * Abstract base block cipher mode template.\r\n */\r\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n /**\r\n * Creates this mode for encryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n */\r\n createEncryptor: function (cipher, iv) {\r\n return this.Encryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Creates this mode for decryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n */\r\n createDecryptor: function (cipher, iv) {\r\n return this.Decryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Initializes a newly created mode.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n */\r\n init: function (cipher, iv) {\r\n this._cipher = cipher;\r\n this._iv = iv;\r\n }\r\n });\r\n\r\n /**\r\n * Cipher Block Chaining mode.\r\n */\r\n var CBC = C_mode.CBC = (function () {\r\n /**\r\n * Abstract base CBC mode.\r\n */\r\n var CBC = BlockCipherMode.extend();\r\n\r\n /**\r\n * CBC encryptor.\r\n */\r\n CBC.Encryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // XOR and encrypt\r\n xorBlock.call(this, words, offset, blockSize);\r\n cipher.encryptBlock(words, offset);\r\n\r\n // Remember this block to use with next block\r\n this._prevBlock = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n /**\r\n * CBC decryptor.\r\n */\r\n CBC.Decryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // Remember this block to use with next block\r\n var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n // Decrypt and XOR\r\n cipher.decryptBlock(words, offset);\r\n xorBlock.call(this, words, offset, blockSize);\r\n\r\n // This block becomes the previous block\r\n this._prevBlock = thisBlock;\r\n }\r\n });\r\n\r\n function xorBlock(words, offset, blockSize) {\r\n // Shortcut\r\n var iv = this._iv;\r\n\r\n // Choose mixing block\r\n if (iv) {\r\n var block = iv;\r\n\r\n // Remove IV for subsequent blocks\r\n this._iv = undefined;\r\n } else {\r\n var block = this._prevBlock;\r\n }\r\n\r\n // XOR blocks\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return CBC;\r\n }());\r\n\r\n /**\r\n * Padding namespace.\r\n */\r\n var C_pad = C.pad = {};\r\n\r\n /**\r\n * PKCS #5/7 padding strategy.\r\n */\r\n var Pkcs7 = C_pad.Pkcs7 = {\r\n /**\r\n * Pads data using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to pad.\r\n * @param {number} blockSize The multiple that the data should be padded to.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n */\r\n pad: function (data, blockSize) {\r\n // Shortcut\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count padding bytes\r\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n // Create padding word\r\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n // Create padding\r\n var paddingWords = [];\r\n for (var i = 0; i < nPaddingBytes; i += 4) {\r\n paddingWords.push(paddingWord);\r\n }\r\n var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n // Add padding\r\n data.concat(padding);\r\n },\r\n\r\n /**\r\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to unpad.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n */\r\n unpad: function (data) {\r\n // Get number of padding bytes from last byte\r\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n // Remove padding\r\n data.sigBytes -= nPaddingBytes;\r\n }\r\n };\r\n\r\n /**\r\n * Abstract base block cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n */\r\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Mode} mode The block mode to use. Default: CBC\r\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n */\r\n cfg: Cipher.cfg.extend({\r\n mode: CBC,\r\n padding: Pkcs7\r\n }),\r\n\r\n reset: function () {\r\n // Reset cipher\r\n Cipher.reset.call(this);\r\n\r\n // Shortcuts\r\n var cfg = this.cfg;\r\n var iv = cfg.iv;\r\n var mode = cfg.mode;\r\n\r\n // Reset block mode\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n var modeCreator = mode.createEncryptor;\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n var modeCreator = mode.createDecryptor;\r\n\r\n // Keep at least one block in the buffer for unpadding\r\n this._minBufferSize = 1;\r\n }\r\n this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n },\r\n\r\n _doProcessBlock: function (words, offset) {\r\n this._mode.processBlock(words, offset);\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcut\r\n var padding = this.cfg.padding;\r\n\r\n // Finalize\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n // Pad data\r\n padding.pad(this._data, this.blockSize);\r\n\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n // Unpad data\r\n padding.unpad(finalProcessedBlocks);\r\n }\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 128/32\r\n });\r\n\r\n /**\r\n * A collection of cipher parameters.\r\n *\r\n * @property {WordArray} ciphertext The raw ciphertext.\r\n * @property {WordArray} key The key to this ciphertext.\r\n * @property {WordArray} iv The IV used in the ciphering operation.\r\n * @property {WordArray} salt The salt used with a key derivation function.\r\n * @property {Cipher} algorithm The cipher algorithm.\r\n * @property {Mode} mode The block mode used in the ciphering operation.\r\n * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n * @property {number} blockSize The block size of the cipher.\r\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n */\r\n var CipherParams = C_lib.CipherParams = Base.extend({\r\n /**\r\n * Initializes a newly created cipher params object.\r\n *\r\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n * ciphertext: ciphertextWordArray,\r\n * key: keyWordArray,\r\n * iv: ivWordArray,\r\n * salt: saltWordArray,\r\n * algorithm: CryptoJS.algo.AES,\r\n * mode: CryptoJS.mode.CBC,\r\n * padding: CryptoJS.pad.PKCS7,\r\n * blockSize: 4,\r\n * formatter: CryptoJS.format.OpenSSL\r\n * });\r\n */\r\n init: function (cipherParams) {\r\n this.mixIn(cipherParams);\r\n },\r\n\r\n /**\r\n * Converts this cipher params object to a string.\r\n *\r\n * @param {Format} formatter (Optional) The formatting strategy to use.\r\n *\r\n * @return {string} The stringified cipher params.\r\n *\r\n * @throws Error If neither the formatter nor the default formatter is set.\r\n *\r\n * @example\r\n *\r\n * var string = cipherParams + '';\r\n * var string = cipherParams.toString();\r\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n */\r\n toString: function (formatter) {\r\n return (formatter || this.formatter).stringify(this);\r\n }\r\n });\r\n\r\n /**\r\n * Format namespace.\r\n */\r\n var C_format = C.format = {};\r\n\r\n /**\r\n * OpenSSL formatting strategy.\r\n */\r\n var OpenSSLFormatter = C_format.OpenSSL = {\r\n /**\r\n * Converts a cipher params object to an OpenSSL-compatible string.\r\n *\r\n * @param {CipherParams} cipherParams The cipher params object.\r\n *\r\n * @return {string} The OpenSSL-compatible string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n */\r\n stringify: function (cipherParams) {\r\n // Shortcuts\r\n var ciphertext = cipherParams.ciphertext;\r\n var salt = cipherParams.salt;\r\n\r\n // Format\r\n if (salt) {\r\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n } else {\r\n var wordArray = ciphertext;\r\n }\r\n\r\n return wordArray.toString(Base64);\r\n },\r\n\r\n /**\r\n * Converts an OpenSSL-compatible string to a cipher params object.\r\n *\r\n * @param {string} openSSLStr The OpenSSL-compatible string.\r\n *\r\n * @return {CipherParams} The cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n */\r\n parse: function (openSSLStr) {\r\n // Parse base64\r\n var ciphertext = Base64.parse(openSSLStr);\r\n\r\n // Shortcut\r\n var ciphertextWords = ciphertext.words;\r\n\r\n // Test for salt\r\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n // Extract salt\r\n var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n // Remove salt from ciphertext\r\n ciphertextWords.splice(0, 4);\r\n ciphertext.sigBytes -= 16;\r\n }\r\n\r\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n */\r\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n */\r\n cfg: Base.extend({\r\n format: OpenSSLFormatter\r\n }),\r\n\r\n /**\r\n * Encrypts a message.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Encrypt\r\n var encryptor = cipher.createEncryptor(key, cfg);\r\n var ciphertext = encryptor.finalize(message);\r\n\r\n // Shortcut\r\n var cipherCfg = encryptor.cfg;\r\n\r\n // Create and return serializable cipher params\r\n return CipherParams.create({\r\n ciphertext: ciphertext,\r\n key: key,\r\n iv: cipherCfg.iv,\r\n algorithm: cipher,\r\n mode: cipherCfg.mode,\r\n padding: cipherCfg.padding,\r\n blockSize: cipher.blockSize,\r\n formatter: cfg.format\r\n });\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Decrypt\r\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n return plaintext;\r\n },\r\n\r\n /**\r\n * Converts serialized ciphertext to CipherParams,\r\n * else assumed CipherParams already and returns ciphertext unchanged.\r\n *\r\n * @param {CipherParams|string} ciphertext The ciphertext.\r\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n *\r\n * @return {CipherParams} The unserialized ciphertext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n */\r\n _parse: function (ciphertext, format) {\r\n if (typeof ciphertext == 'string') {\r\n return format.parse(ciphertext, this);\r\n } else {\r\n return ciphertext;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Key derivation function namespace.\r\n */\r\n var C_kdf = C.kdf = {};\r\n\r\n /**\r\n * OpenSSL key derivation function.\r\n */\r\n var OpenSSLKdf = C_kdf.OpenSSL = {\r\n /**\r\n * Derives a key and IV from a password.\r\n *\r\n * @param {string} password The password to derive from.\r\n * @param {number} keySize The size in words of the key to generate.\r\n * @param {number} ivSize The size in words of the IV to generate.\r\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n *\r\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n */\r\n execute: function (password, keySize, ivSize, salt) {\r\n // Generate random salt\r\n if (!salt) {\r\n salt = WordArray.random(64/8);\r\n }\r\n\r\n // Derive key and IV\r\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n // Separate key and IV\r\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n key.sigBytes = keySize * 4;\r\n\r\n // Return params\r\n return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A serializable cipher wrapper that derives the key from a password,\r\n * and returns ciphertext as a serializable cipher params object.\r\n */\r\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n */\r\n cfg: SerializableCipher.cfg.extend({\r\n kdf: OpenSSLKdf\r\n }),\r\n\r\n /**\r\n * Encrypts a message using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Encrypt\r\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n // Mix in derived params\r\n ciphertext.mixIn(derivedParams);\r\n\r\n return ciphertext;\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Decrypt\r\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n return plaintext;\r\n }\r\n });\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var BlockCipher = C_lib.BlockCipher;\r\n var C_algo = C.algo;\r\n\r\n // Lookup tables\r\n var SBOX = [];\r\n var INV_SBOX = [];\r\n var SUB_MIX_0 = [];\r\n var SUB_MIX_1 = [];\r\n var SUB_MIX_2 = [];\r\n var SUB_MIX_3 = [];\r\n var INV_SUB_MIX_0 = [];\r\n var INV_SUB_MIX_1 = [];\r\n var INV_SUB_MIX_2 = [];\r\n var INV_SUB_MIX_3 = [];\r\n\r\n // Compute lookup tables\r\n (function () {\r\n // Compute double table\r\n var d = [];\r\n for (var i = 0; i < 256; i++) {\r\n if (i < 128) {\r\n d[i] = i << 1;\r\n } else {\r\n d[i] = (i << 1) ^ 0x11b;\r\n }\r\n }\r\n\r\n // Walk GF(2^8)\r\n var x = 0;\r\n var xi = 0;\r\n for (var i = 0; i < 256; i++) {\r\n // Compute sbox\r\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n SBOX[x] = sx;\r\n INV_SBOX[sx] = x;\r\n\r\n // Compute multiplication\r\n var x2 = d[x];\r\n var x4 = d[x2];\r\n var x8 = d[x4];\r\n\r\n // Compute sub bytes, mix columns tables\r\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n SUB_MIX_3[x] = t;\r\n\r\n // Compute inv sub bytes, inv mix columns tables\r\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n INV_SUB_MIX_3[sx] = t;\r\n\r\n // Compute next counter\r\n if (!x) {\r\n x = xi = 1;\r\n } else {\r\n x = x2 ^ d[d[d[x8 ^ x2]]];\r\n xi ^= d[d[xi]];\r\n }\r\n }\r\n }());\r\n\r\n // Precomputed Rcon lookup\r\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n /**\r\n * AES block cipher algorithm.\r\n */\r\n var AES = C_algo.AES = BlockCipher.extend({\r\n _doReset: function () {\r\n // Shortcuts\r\n var key = this._key;\r\n var keyWords = key.words;\r\n var keySize = key.sigBytes / 4;\r\n\r\n // Compute number of rounds\r\n var nRounds = this._nRounds = keySize + 6\r\n\r\n // Compute number of key schedule rows\r\n var ksRows = (nRounds + 1) * 4;\r\n\r\n // Compute key schedule\r\n var keySchedule = this._keySchedule = [];\r\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n if (ksRow < keySize) {\r\n keySchedule[ksRow] = keyWords[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 1];\r\n\r\n if (!(ksRow % keySize)) {\r\n // Rot word\r\n t = (t << 8) | (t >>> 24);\r\n\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n // Mix Rcon\r\n t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n } else if (keySize > 6 && ksRow % keySize == 4) {\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n }\r\n\r\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n }\r\n }\r\n\r\n // Compute inv key schedule\r\n var invKeySchedule = this._invKeySchedule = [];\r\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n var ksRow = ksRows - invKsRow;\r\n\r\n if (invKsRow % 4) {\r\n var t = keySchedule[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 4];\r\n }\r\n\r\n if (invKsRow < 4 || ksRow <= 4) {\r\n invKeySchedule[invKsRow] = t;\r\n } else {\r\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n }\r\n }\r\n },\r\n\r\n encryptBlock: function (M, offset) {\r\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n },\r\n\r\n decryptBlock: function (M, offset) {\r\n // Swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n\r\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n // Inv swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n },\r\n\r\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n // Shortcut\r\n var nRounds = this._nRounds;\r\n\r\n // Get input, add round key\r\n var s0 = M[offset] ^ keySchedule[0];\r\n var s1 = M[offset + 1] ^ keySchedule[1];\r\n var s2 = M[offset + 2] ^ keySchedule[2];\r\n var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n // Key schedule row counter\r\n var ksRow = 4;\r\n\r\n // Rounds\r\n for (var round = 1; round < nRounds; round++) {\r\n // Shift rows, sub bytes, mix columns, add round key\r\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n // Update state\r\n s0 = t0;\r\n s1 = t1;\r\n s2 = t2;\r\n s3 = t3;\r\n }\r\n\r\n // Shift rows, sub bytes, add round key\r\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n // Set output\r\n M[offset] = t0;\r\n M[offset + 1] = t1;\r\n M[offset + 2] = t2;\r\n M[offset + 3] = t3;\r\n },\r\n\r\n keySize: 256/32\r\n });\r\n\r\n /**\r\n * Shortcut functions to the cipher's object interface.\r\n *\r\n * @example\r\n *\r\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n */\r\n C.AES = BlockCipher._createHelper(AES);\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\n\n// create custom json serialization format\nvar JsonFormatter = {\n\tstringify: function (cipherParams) {\n\t\t// create json object with ciphertext\n\t\tvar jsonObj = {\n\t\t\tct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)\n\t\t};\n\t\t\n\t\t// optionally add iv and salt\n\t\tif (cipherParams.iv) {\n\t\t\tjsonObj.iv = cipherParams.iv.toString();\n\t\t}\n\t\t\n\t\tif (cipherParams.salt) {\n\t\t\tjsonObj.s = cipherParams.salt.toString();\n\t\t}\n\n\t\t// stringify json object\n\t\treturn JSON.stringify(jsonObj)\n\t},\n\n\tparse: function (jsonStr) {\n\t\t// parse json string\n\t\tvar jsonObj = JSON.parse(jsonStr);\n\t\t\n\t\t// extract ciphertext from json object, and create cipher params object\n\t\tvar cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t\tciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)\n\t\t});\n\t\t\n\t\t// optionally extract iv and salt\n\t\tif (jsonObj.iv) {\n\t\t\tcipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);\n\t\t}\n \n\t\tif (jsonObj.s) {\n\t\t\tcipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);\n\t\t}\n\t\t\n\t\treturn cipherParams;\n\t}\n};\n\nexports.JsonFormatter = JsonFormatter;","var CryptoJS = require('./lib/core').CryptoJS;\nrequire('./lib/enc-base64');\nrequire('./lib/md5');\nrequire('./lib/evpkdf');\nrequire('./lib/cipher-core');\nrequire('./lib/aes');\nvar JsonFormatter = require('./lib/jsonformatter').JsonFormatter;\n\nexports.CryptoJS = CryptoJS;\nexports.JsonFormatter = JsonFormatter;","import nodeCryptoJs from \"node-cryptojs-aes\";\nconst { CryptoJS, JsonFormatter } = nodeCryptoJs;\nimport validators from \"types-validate-assert\";\nconst { validateTypes, assertTypes } = validators;\n\n/**\n * Encrypt a Javascript object with a string password\n * The object passed must pass JSON.stringify or the method will fail.\n *\n * @param {string} password A password to encrypt the object with\n * @param {Object} obj A javascript object (must be JSON compatible)\n * @return {string} Encrypted string\n */\nexport function encryptObject(password, obj) {\n assertTypes.isStringWithValue(password);\n assertTypes.isObject(obj);\n\n const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, {\n format: JsonFormatter,\n }).toString();\n return encrypted;\n}\n\n/**\n * Decrypt an Object using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} objString A javascript object as JSON string\n * @return {string} Encrypted string\n */\nexport function decryptObject(password, objString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(objString);\n\n try {\n const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter });\n return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Encrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} string A string to be password encrypted\n * @return {string} Encrypted string\n */\nexport function encryptStrHash(password, string) {\n assertTypes.isStringWithValue(password);\n assertTypes.isString(string);\n\n const encrypt = CryptoJS.AES.encrypt(string, password).toString();\n return encrypt;\n}\n\n/**\n * Decrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} encryptedString A string to decrypt\n * @return {string} Decrypted string\n */\nexport function decryptStrHash(password, encryptedString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(encryptedString);\n\n try {\n const decrypted = CryptoJS.AES.decrypt(encryptedString, password);\n return CryptoJS.enc.Utf8.stringify(decrypted) === \"\"\n ? false\n : CryptoJS.enc.Utf8.stringify(decrypted);\n } catch (e) {\n return false;\n }\n}\n\nexport function buf2hex(buffer) {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (x) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\nexport function hex2buf(hexString) {\n var bytes = new Uint8Array(Math.ceil(hexString.length / 2));\n for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16);\n return bytes;\n}\nexport function str2buf(string) {\n var buf = new Buffer.from(string);\n return new Uint8Array(buf);\n}\nexport function concatUint8Arrays(array1, array2) {\n var arr = new Uint8Array(array1.length + array2.length);\n arr.set(array1);\n arr.set(array2, array1.length);\n return arr;\n}\nexport function ab2str(buf) {\n return String.fromCharCode.apply(null, new Uint8Array(buf));\n}\nexport function str2ab(str) {\n var buf = new ArrayBuffer(str.length);\n var bufView = new Uint8Array(buf);\n for (var i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\nexport function str2hex(str) {\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n hex += \"\" + str.charCodeAt(i).toString(16);\n }\n return hex;\n}\nexport function hex2str(hexx) {\n var hex = hexx.toString(); //force conversion\n var str = \"\";\n for (var i = 0; i < hex.length && hex.substr(i, 2) !== \"00\"; i += 2)\n str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\nexport function randomString(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (var i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n}\nexport function isStringHex(string = \"\") {\n let hexRegEx = /([0-9]|[a-f])/gim;\n return typeof string === \"string\" && (string.match(hexRegEx) || []).length === string.length;\n}\n\nexport function isLamdenKey(string) {\n if (validateTypes.isStringHex(string) && string.length === 64) return true;\n return false;\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.bip39 = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],2:[function(require,module,exports){\n\n},{}],3:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction 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\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n 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\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction 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)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n},{\"base64-js\":1,\"buffer\":3,\"ieee754\":5}],4:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n},{}],5:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],6:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],7:[function(require,module,exports){\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n},{}],8:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],9:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":3}],10:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n},{\"events\":4,\"inherits\":6,\"readable-stream/lib/_stream_duplex.js\":12,\"readable-stream/lib/_stream_passthrough.js\":13,\"readable-stream/lib/_stream_readable.js\":14,\"readable-stream/lib/_stream_transform.js\":15,\"readable-stream/lib/_stream_writable.js\":16,\"readable-stream/lib/internal/streams/end-of-stream.js\":20,\"readable-stream/lib/internal/streams/pipeline.js\":22}],11:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],12:[function(require,module,exports){\n(function (process){(function (){\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});\n}).call(this)}).call(this,require('_process'))\n},{\"./_stream_readable\":14,\"./_stream_writable\":16,\"_process\":8,\"inherits\":6}],13:[function(require,module,exports){\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};\n},{\"./_stream_transform\":15,\"inherits\":6}],14:[function(require,module,exports){\n(function (process,global){(function (){\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}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../errors\":11,\"./_stream_duplex\":12,\"./internal/streams/async_iterator\":17,\"./internal/streams/buffer_list\":18,\"./internal/streams/destroy\":19,\"./internal/streams/from\":21,\"./internal/streams/state\":23,\"./internal/streams/stream\":24,\"_process\":8,\"buffer\":3,\"events\":4,\"inherits\":6,\"string_decoder/\":25,\"util\":2}],15:[function(require,module,exports){\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}\n},{\"../errors\":11,\"./_stream_duplex\":12,\"inherits\":6}],16:[function(require,module,exports){\n(function (process,global){(function (){\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};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../errors\":11,\"./_stream_duplex\":12,\"./internal/streams/destroy\":19,\"./internal/streams/state\":23,\"./internal/streams/stream\":24,\"_process\":8,\"buffer\":3,\"inherits\":6,\"util-deprecate\":26}],17:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n},{\"./end-of-stream\":20,\"_process\":8}],18:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n},{\"buffer\":3,\"util\":2}],19:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n},{\"_process\":8}],20:[function(require,module,exports){\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;\n},{\"../../../errors\":11}],21:[function(require,module,exports){\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],22:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":11,\"./end-of-stream\":20}],23:[function(require,module,exports){\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};\n},{\"../../../errors\":11}],24:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":4}],25:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":9}],26:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],27:[function(require,module,exports){\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n\n},{\"inherits\":31,\"safe-buffer\":40,\"stream\":10,\"string_decoder\":25}],28:[function(require,module,exports){\n'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n\n},{\"cipher-base\":27,\"inherits\":31,\"md5.js\":32,\"ripemd160\":39,\"sha.js\":42}],29:[function(require,module,exports){\nvar MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n\n},{\"md5.js\":32}],30:[function(require,module,exports){\n'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n\n},{\"inherits\":31,\"safe-buffer\":40,\"stream\":10}],31:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],32:[function(require,module,exports){\n'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n\n},{\"hash-base\":30,\"inherits\":31,\"safe-buffer\":40}],33:[function(require,module,exports){\nexports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n\n},{\"./lib/async\":34,\"./lib/sync\":37}],34:[function(require,module,exports){\n(function (process,global){(function (){\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./default-encoding\":35,\"./precondition\":36,\"./sync\":37,\"_process\":8,\"safe-buffer\":40}],35:[function(require,module,exports){\n(function (process){(function (){\nvar defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n\n}).call(this)}).call(this,require('_process'))\n},{\"_process\":8}],36:[function(require,module,exports){\n(function (Buffer){(function (){\nvar MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n\n}).call(this)}).call(this,{\"isBuffer\":require(\"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js\")})\n},{\"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js\":7}],37:[function(require,module,exports){\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n\n},{\"./default-encoding\":35,\"./precondition\":36,\"create-hash/md5\":29,\"ripemd160\":39,\"safe-buffer\":40,\"sha.js\":42}],38:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":8,\"safe-buffer\":40}],39:[function(require,module,exports){\n'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n\n},{\"buffer\":3,\"hash-base\":30,\"inherits\":31}],40:[function(require,module,exports){\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":3}],41:[function(require,module,exports){\nvar Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n\n},{\"safe-buffer\":40}],42:[function(require,module,exports){\nvar exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n\n},{\"./sha\":43,\"./sha1\":44,\"./sha224\":45,\"./sha256\":46,\"./sha384\":47,\"./sha512\":48}],43:[function(require,module,exports){\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],44:[function(require,module,exports){\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],45:[function(require,module,exports){\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n\n},{\"./hash\":41,\"./sha256\":46,\"inherits\":31,\"safe-buffer\":40}],46:[function(require,module,exports){\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],47:[function(require,module,exports){\nvar inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n\n},{\"./hash\":41,\"./sha512\":48,\"inherits\":31,\"safe-buffer\":40}],48:[function(require,module,exports){\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],49:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/czech.json');\n wordlists.czech = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/portuguese.json');\n wordlists.portuguese = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n\n},{\"./wordlists/chinese_simplified.json\":51,\"./wordlists/chinese_traditional.json\":undefined,\"./wordlists/czech.json\":undefined,\"./wordlists/english.json\":52,\"./wordlists/french.json\":undefined,\"./wordlists/italian.json\":undefined,\"./wordlists/japanese.json\":53,\"./wordlists/korean.json\":undefined,\"./wordlists/portuguese.json\":54,\"./wordlists/spanish.json\":undefined}],50:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please pass a 2048 word array explicitly.';\nfunction pbkdf2Promise(password, saltMixin, iterations, keylen, digest) {\n return Promise.resolve().then(() => new Promise((resolve, reject) => {\n const callback = (err, derivedKey) => {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(derivedKey);\n }\n };\n pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback);\n }));\n}\nfunction normalize(str) {\n return (str || '').normalize('NFKD');\n}\nfunction lpad(str, padString, length) {\n while (str.length < length) {\n str = padString + str;\n }\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map((x) => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary(Array.from(hash)).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return Promise.resolve().then(() => {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = normalize(mnemonic).split(' ');\n if (words.length % 3 !== 0) {\n throw new Error(INVALID_MNEMONIC);\n }\n // convert word indices to 11 bit binary strings\n const bits = words\n .map((word) => {\n const index = wordlist.indexOf(word);\n if (index === -1) {\n throw new Error(INVALID_MNEMONIC);\n }\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length > 32) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length % 4 !== 0) {\n throw new Error(INVALID_ENTROPY);\n }\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits) {\n throw new Error(INVALID_CHECKSUM);\n }\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy)) {\n entropy = Buffer.from(entropy, 'hex');\n }\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length > 32) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length % 4 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n const entropyBits = bytesToBinary(Array.from(entropy));\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map((binary) => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result) {\n DEFAULT_WORDLIST = result;\n }\n else {\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n }\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST) {\n throw new Error('No Default Wordlist set');\n }\n return Object.keys(_wordlists_1.wordlists).filter((lang) => {\n if (lang === 'JA' || lang === 'EN') {\n return false;\n }\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n},{\"./_wordlists\":49,\"buffer\":3,\"create-hash\":28,\"pbkdf2\":33,\"randombytes\":38}],51:[function(require,module,exports){\nmodule.exports=[\n \"的\",\n \"一\",\n \"是\",\n \"在\",\n \"不\",\n \"了\",\n \"有\",\n \"和\",\n \"人\",\n \"这\",\n \"中\",\n \"大\",\n \"为\",\n \"上\",\n \"个\",\n \"国\",\n \"我\",\n \"以\",\n \"要\",\n \"他\",\n \"时\",\n \"来\",\n \"用\",\n \"们\",\n \"生\",\n \"到\",\n \"作\",\n \"地\",\n \"于\",\n \"出\",\n \"就\",\n \"分\",\n \"对\",\n \"成\",\n \"会\",\n \"可\",\n \"主\",\n \"发\",\n \"年\",\n \"动\",\n \"同\",\n \"工\",\n \"也\",\n \"能\",\n \"下\",\n \"过\",\n \"子\",\n \"说\",\n \"产\",\n \"种\",\n \"面\",\n \"而\",\n \"方\",\n \"后\",\n \"多\",\n \"定\",\n \"行\",\n \"学\",\n \"法\",\n \"所\",\n \"民\",\n \"得\",\n \"经\",\n \"十\",\n \"三\",\n \"之\",\n \"进\",\n \"着\",\n \"等\",\n \"部\",\n \"度\",\n \"家\",\n \"电\",\n \"力\",\n \"里\",\n \"如\",\n \"水\",\n \"化\",\n \"高\",\n \"自\",\n \"二\",\n \"理\",\n \"起\",\n \"小\",\n \"物\",\n \"现\",\n \"实\",\n \"加\",\n \"量\",\n \"都\",\n \"两\",\n \"体\",\n \"制\",\n \"机\",\n \"当\",\n \"使\",\n \"点\",\n \"从\",\n \"业\",\n \"本\",\n \"去\",\n \"把\",\n \"性\",\n \"好\",\n \"应\",\n \"开\",\n \"它\",\n \"合\",\n \"还\",\n \"因\",\n \"由\",\n \"其\",\n \"些\",\n \"然\",\n \"前\",\n \"外\",\n \"天\",\n \"政\",\n \"四\",\n \"日\",\n \"那\",\n \"社\",\n \"义\",\n \"事\",\n \"平\",\n \"形\",\n \"相\",\n \"全\",\n \"表\",\n \"间\",\n \"样\",\n \"与\",\n \"关\",\n \"各\",\n \"重\",\n \"新\",\n \"线\",\n \"内\",\n \"数\",\n \"正\",\n \"心\",\n \"反\",\n \"你\",\n \"明\",\n \"看\",\n \"原\",\n \"又\",\n \"么\",\n \"利\",\n \"比\",\n \"或\",\n \"但\",\n \"质\",\n \"气\",\n \"第\",\n \"向\",\n \"道\",\n \"命\",\n \"此\",\n \"变\",\n \"条\",\n \"只\",\n \"没\",\n \"结\",\n \"解\",\n \"问\",\n \"意\",\n \"建\",\n \"月\",\n \"公\",\n \"无\",\n \"系\",\n \"军\",\n \"很\",\n \"情\",\n \"者\",\n \"最\",\n \"立\",\n \"代\",\n \"想\",\n \"已\",\n \"通\",\n \"并\",\n \"提\",\n \"直\",\n \"题\",\n \"党\",\n \"程\",\n \"展\",\n \"五\",\n \"果\",\n \"料\",\n \"象\",\n \"员\",\n \"革\",\n \"位\",\n \"入\",\n \"常\",\n \"文\",\n \"总\",\n \"次\",\n \"品\",\n \"式\",\n \"活\",\n \"设\",\n \"及\",\n \"管\",\n \"特\",\n \"件\",\n \"长\",\n \"求\",\n \"老\",\n \"头\",\n \"基\",\n \"资\",\n \"边\",\n \"流\",\n \"路\",\n \"级\",\n \"少\",\n \"图\",\n \"山\",\n \"统\",\n \"接\",\n \"知\",\n \"较\",\n \"将\",\n \"组\",\n \"见\",\n \"计\",\n \"别\",\n \"她\",\n \"手\",\n \"角\",\n \"期\",\n \"根\",\n \"论\",\n \"运\",\n \"农\",\n \"指\",\n \"几\",\n \"九\",\n \"区\",\n \"强\",\n \"放\",\n \"决\",\n \"西\",\n \"被\",\n \"干\",\n \"做\",\n \"必\",\n \"战\",\n \"先\",\n \"回\",\n \"则\",\n \"任\",\n \"取\",\n \"据\",\n \"处\",\n \"队\",\n \"南\",\n \"给\",\n \"色\",\n \"光\",\n \"门\",\n \"即\",\n \"保\",\n \"治\",\n \"北\",\n \"造\",\n \"百\",\n \"规\",\n \"热\",\n \"领\",\n \"七\",\n \"海\",\n \"口\",\n \"东\",\n \"导\",\n \"器\",\n \"压\",\n \"志\",\n \"世\",\n \"金\",\n \"增\",\n \"争\",\n \"济\",\n \"阶\",\n \"油\",\n \"思\",\n \"术\",\n \"极\",\n \"交\",\n \"受\",\n \"联\",\n \"什\",\n \"认\",\n \"六\",\n \"共\",\n \"权\",\n \"收\",\n \"证\",\n \"改\",\n \"清\",\n \"美\",\n \"再\",\n \"采\",\n \"转\",\n \"更\",\n \"单\",\n \"风\",\n \"切\",\n \"打\",\n \"白\",\n \"教\",\n \"速\",\n \"花\",\n \"带\",\n \"安\",\n \"场\",\n \"身\",\n \"车\",\n \"例\",\n \"真\",\n \"务\",\n \"具\",\n \"万\",\n \"每\",\n \"目\",\n \"至\",\n \"达\",\n \"走\",\n \"积\",\n \"示\",\n \"议\",\n \"声\",\n \"报\",\n \"斗\",\n \"完\",\n \"类\",\n \"八\",\n \"离\",\n \"华\",\n \"名\",\n \"确\",\n \"才\",\n \"科\",\n \"张\",\n \"信\",\n \"马\",\n \"节\",\n \"话\",\n \"米\",\n \"整\",\n \"空\",\n \"元\",\n \"况\",\n \"今\",\n \"集\",\n \"温\",\n \"传\",\n \"土\",\n \"许\",\n \"步\",\n \"群\",\n \"广\",\n \"石\",\n \"记\",\n \"需\",\n \"段\",\n \"研\",\n \"界\",\n \"拉\",\n \"林\",\n \"律\",\n \"叫\",\n \"且\",\n \"究\",\n \"观\",\n \"越\",\n \"织\",\n \"装\",\n \"影\",\n \"算\",\n \"低\",\n \"持\",\n \"音\",\n \"众\",\n \"书\",\n \"布\",\n \"复\",\n \"容\",\n \"儿\",\n \"须\",\n \"际\",\n \"商\",\n \"非\",\n \"验\",\n \"连\",\n \"断\",\n \"深\",\n \"难\",\n \"近\",\n \"矿\",\n \"千\",\n \"周\",\n \"委\",\n \"素\",\n \"技\",\n \"备\",\n \"半\",\n \"办\",\n \"青\",\n \"省\",\n \"列\",\n \"习\",\n \"响\",\n \"约\",\n \"支\",\n \"般\",\n \"史\",\n \"感\",\n \"劳\",\n \"便\",\n \"团\",\n \"往\",\n \"酸\",\n \"历\",\n \"市\",\n \"克\",\n \"何\",\n \"除\",\n \"消\",\n \"构\",\n \"府\",\n \"称\",\n \"太\",\n \"准\",\n \"精\",\n \"值\",\n \"号\",\n \"率\",\n \"族\",\n \"维\",\n \"划\",\n \"选\",\n \"标\",\n \"写\",\n \"存\",\n \"候\",\n \"毛\",\n \"亲\",\n \"快\",\n \"效\",\n \"斯\",\n \"院\",\n \"查\",\n \"江\",\n \"型\",\n \"眼\",\n \"王\",\n \"按\",\n \"格\",\n \"养\",\n \"易\",\n \"置\",\n \"派\",\n \"层\",\n \"片\",\n \"始\",\n \"却\",\n \"专\",\n \"状\",\n \"育\",\n \"厂\",\n \"京\",\n \"识\",\n \"适\",\n \"属\",\n \"圆\",\n \"包\",\n \"火\",\n \"住\",\n \"调\",\n \"满\",\n \"县\",\n \"局\",\n \"照\",\n \"参\",\n \"红\",\n \"细\",\n \"引\",\n \"听\",\n \"该\",\n \"铁\",\n \"价\",\n \"严\",\n \"首\",\n \"底\",\n \"液\",\n \"官\",\n \"德\",\n \"随\",\n \"病\",\n \"苏\",\n \"失\",\n \"尔\",\n \"死\",\n \"讲\",\n \"配\",\n \"女\",\n \"黄\",\n \"推\",\n \"显\",\n \"谈\",\n \"罪\",\n \"神\",\n \"艺\",\n \"呢\",\n \"席\",\n \"含\",\n \"企\",\n \"望\",\n \"密\",\n \"批\",\n \"营\",\n \"项\",\n \"防\",\n \"举\",\n \"球\",\n \"英\",\n \"氧\",\n \"势\",\n \"告\",\n \"李\",\n \"台\",\n \"落\",\n \"木\",\n \"帮\",\n \"轮\",\n \"破\",\n \"亚\",\n \"师\",\n \"围\",\n \"注\",\n \"远\",\n \"字\",\n \"材\",\n \"排\",\n \"供\",\n \"河\",\n \"态\",\n \"封\",\n \"另\",\n \"施\",\n \"减\",\n \"树\",\n \"溶\",\n \"怎\",\n \"止\",\n \"案\",\n \"言\",\n \"士\",\n \"均\",\n \"武\",\n \"固\",\n \"叶\",\n \"鱼\",\n \"波\",\n \"视\",\n \"仅\",\n \"费\",\n \"紧\",\n \"爱\",\n \"左\",\n \"章\",\n \"早\",\n \"朝\",\n \"害\",\n \"续\",\n \"轻\",\n \"服\",\n \"试\",\n \"食\",\n \"充\",\n \"兵\",\n \"源\",\n \"判\",\n \"护\",\n \"司\",\n \"足\",\n \"某\",\n \"练\",\n \"差\",\n \"致\",\n \"板\",\n \"田\",\n \"降\",\n \"黑\",\n \"犯\",\n \"负\",\n \"击\",\n \"范\",\n \"继\",\n \"兴\",\n \"似\",\n \"余\",\n \"坚\",\n \"曲\",\n \"输\",\n \"修\",\n \"故\",\n \"城\",\n \"夫\",\n \"够\",\n \"送\",\n \"笔\",\n \"船\",\n \"占\",\n \"右\",\n \"财\",\n \"吃\",\n \"富\",\n \"春\",\n \"职\",\n \"觉\",\n \"汉\",\n \"画\",\n \"功\",\n \"巴\",\n \"跟\",\n \"虽\",\n \"杂\",\n \"飞\",\n \"检\",\n \"吸\",\n \"助\",\n \"升\",\n \"阳\",\n \"互\",\n \"初\",\n \"创\",\n \"抗\",\n \"考\",\n \"投\",\n \"坏\",\n \"策\",\n \"古\",\n \"径\",\n \"换\",\n \"未\",\n \"跑\",\n \"留\",\n \"钢\",\n \"曾\",\n \"端\",\n \"责\",\n \"站\",\n \"简\",\n \"述\",\n \"钱\",\n \"副\",\n \"尽\",\n \"帝\",\n \"射\",\n \"草\",\n \"冲\",\n \"承\",\n \"独\",\n \"令\",\n \"限\",\n \"阿\",\n \"宣\",\n \"环\",\n \"双\",\n \"请\",\n \"超\",\n \"微\",\n \"让\",\n \"控\",\n \"州\",\n \"良\",\n \"轴\",\n \"找\",\n \"否\",\n \"纪\",\n \"益\",\n \"依\",\n \"优\",\n \"顶\",\n \"础\",\n \"载\",\n \"倒\",\n \"房\",\n \"突\",\n \"坐\",\n \"粉\",\n \"敌\",\n \"略\",\n \"客\",\n \"袁\",\n \"冷\",\n \"胜\",\n \"绝\",\n \"析\",\n \"块\",\n \"剂\",\n \"测\",\n \"丝\",\n \"协\",\n \"诉\",\n \"念\",\n \"陈\",\n \"仍\",\n \"罗\",\n \"盐\",\n \"友\",\n \"洋\",\n \"错\",\n \"苦\",\n \"夜\",\n \"刑\",\n \"移\",\n \"频\",\n \"逐\",\n \"靠\",\n \"混\",\n \"母\",\n \"短\",\n \"皮\",\n \"终\",\n \"聚\",\n \"汽\",\n \"村\",\n \"云\",\n \"哪\",\n \"既\",\n \"距\",\n \"卫\",\n \"停\",\n \"烈\",\n \"央\",\n \"察\",\n \"烧\",\n \"迅\",\n \"境\",\n \"若\",\n \"印\",\n \"洲\",\n \"刻\",\n \"括\",\n \"激\",\n \"孔\",\n \"搞\",\n \"甚\",\n \"室\",\n \"待\",\n \"核\",\n \"校\",\n \"散\",\n \"侵\",\n \"吧\",\n \"甲\",\n \"游\",\n \"久\",\n \"菜\",\n \"味\",\n \"旧\",\n \"模\",\n \"湖\",\n \"货\",\n \"损\",\n \"预\",\n \"阻\",\n \"毫\",\n \"普\",\n \"稳\",\n \"乙\",\n \"妈\",\n \"植\",\n \"息\",\n \"扩\",\n \"银\",\n \"语\",\n \"挥\",\n \"酒\",\n \"守\",\n \"拿\",\n \"序\",\n \"纸\",\n \"医\",\n \"缺\",\n \"雨\",\n \"吗\",\n \"针\",\n \"刘\",\n \"啊\",\n \"急\",\n \"唱\",\n \"误\",\n \"训\",\n \"愿\",\n \"审\",\n \"附\",\n \"获\",\n \"茶\",\n \"鲜\",\n \"粮\",\n \"斤\",\n \"孩\",\n \"脱\",\n \"硫\",\n \"肥\",\n \"善\",\n \"龙\",\n \"演\",\n \"父\",\n \"渐\",\n \"血\",\n \"欢\",\n \"械\",\n \"掌\",\n \"歌\",\n \"沙\",\n \"刚\",\n \"攻\",\n \"谓\",\n \"盾\",\n \"讨\",\n \"晚\",\n \"粒\",\n \"乱\",\n \"燃\",\n \"矛\",\n \"乎\",\n \"杀\",\n \"药\",\n \"宁\",\n \"鲁\",\n \"贵\",\n \"钟\",\n \"煤\",\n \"读\",\n \"班\",\n \"伯\",\n \"香\",\n \"介\",\n \"迫\",\n \"句\",\n \"丰\",\n \"培\",\n \"握\",\n \"兰\",\n \"担\",\n \"弦\",\n \"蛋\",\n \"沉\",\n \"假\",\n \"穿\",\n \"执\",\n \"答\",\n \"乐\",\n \"谁\",\n \"顺\",\n \"烟\",\n \"缩\",\n \"征\",\n \"脸\",\n \"喜\",\n \"松\",\n \"脚\",\n \"困\",\n \"异\",\n \"免\",\n \"背\",\n \"星\",\n \"福\",\n \"买\",\n \"染\",\n \"井\",\n \"概\",\n \"慢\",\n \"怕\",\n \"磁\",\n \"倍\",\n \"祖\",\n \"皇\",\n \"促\",\n \"静\",\n \"补\",\n \"评\",\n \"翻\",\n \"肉\",\n \"践\",\n \"尼\",\n \"衣\",\n \"宽\",\n \"扬\",\n \"棉\",\n \"希\",\n \"伤\",\n \"操\",\n \"垂\",\n \"秋\",\n \"宜\",\n \"氢\",\n \"套\",\n \"督\",\n \"振\",\n \"架\",\n \"亮\",\n \"末\",\n \"宪\",\n \"庆\",\n \"编\",\n \"牛\",\n \"触\",\n \"映\",\n \"雷\",\n \"销\",\n \"诗\",\n \"座\",\n \"居\",\n \"抓\",\n \"裂\",\n \"胞\",\n \"呼\",\n \"娘\",\n \"景\",\n \"威\",\n \"绿\",\n \"晶\",\n \"厚\",\n \"盟\",\n \"衡\",\n \"鸡\",\n \"孙\",\n \"延\",\n \"危\",\n \"胶\",\n \"屋\",\n \"乡\",\n \"临\",\n \"陆\",\n \"顾\",\n \"掉\",\n \"呀\",\n \"灯\",\n \"岁\",\n \"措\",\n \"束\",\n \"耐\",\n \"剧\",\n \"玉\",\n \"赵\",\n \"跳\",\n \"哥\",\n \"季\",\n \"课\",\n \"凯\",\n \"胡\",\n \"额\",\n \"款\",\n \"绍\",\n \"卷\",\n \"齐\",\n \"伟\",\n \"蒸\",\n \"殖\",\n \"永\",\n \"宗\",\n \"苗\",\n \"川\",\n \"炉\",\n \"岩\",\n \"弱\",\n \"零\",\n \"杨\",\n \"奏\",\n \"沿\",\n \"露\",\n \"杆\",\n \"探\",\n \"滑\",\n \"镇\",\n \"饭\",\n \"浓\",\n \"航\",\n \"怀\",\n \"赶\",\n \"库\",\n \"夺\",\n \"伊\",\n \"灵\",\n \"税\",\n \"途\",\n \"灭\",\n \"赛\",\n \"归\",\n \"召\",\n \"鼓\",\n \"播\",\n \"盘\",\n \"裁\",\n \"险\",\n \"康\",\n \"唯\",\n \"录\",\n \"菌\",\n \"纯\",\n \"借\",\n \"糖\",\n \"盖\",\n \"横\",\n \"符\",\n \"私\",\n \"努\",\n \"堂\",\n \"域\",\n \"枪\",\n \"润\",\n \"幅\",\n \"哈\",\n \"竟\",\n \"熟\",\n \"虫\",\n \"泽\",\n \"脑\",\n \"壤\",\n \"碳\",\n \"欧\",\n \"遍\",\n \"侧\",\n \"寨\",\n \"敢\",\n \"彻\",\n \"虑\",\n \"斜\",\n \"薄\",\n \"庭\",\n \"纳\",\n \"弹\",\n \"饲\",\n \"伸\",\n \"折\",\n \"麦\",\n \"湿\",\n \"暗\",\n \"荷\",\n \"瓦\",\n \"塞\",\n \"床\",\n \"筑\",\n \"恶\",\n \"户\",\n \"访\",\n \"塔\",\n \"奇\",\n \"透\",\n \"梁\",\n \"刀\",\n \"旋\",\n \"迹\",\n \"卡\",\n \"氯\",\n \"遇\",\n \"份\",\n \"毒\",\n \"泥\",\n \"退\",\n \"洗\",\n \"摆\",\n \"灰\",\n \"彩\",\n \"卖\",\n \"耗\",\n \"夏\",\n \"择\",\n \"忙\",\n \"铜\",\n \"献\",\n \"硬\",\n \"予\",\n \"繁\",\n \"圈\",\n \"雪\",\n \"函\",\n \"亦\",\n \"抽\",\n \"篇\",\n \"阵\",\n \"阴\",\n \"丁\",\n \"尺\",\n \"追\",\n \"堆\",\n \"雄\",\n \"迎\",\n \"泛\",\n \"爸\",\n \"楼\",\n \"避\",\n \"谋\",\n \"吨\",\n \"野\",\n \"猪\",\n \"旗\",\n \"累\",\n \"偏\",\n \"典\",\n \"馆\",\n \"索\",\n \"秦\",\n \"脂\",\n \"潮\",\n \"爷\",\n \"豆\",\n \"忽\",\n \"托\",\n \"惊\",\n \"塑\",\n \"遗\",\n \"愈\",\n \"朱\",\n \"替\",\n \"纤\",\n \"粗\",\n \"倾\",\n \"尚\",\n \"痛\",\n \"楚\",\n \"谢\",\n \"奋\",\n \"购\",\n \"磨\",\n \"君\",\n \"池\",\n \"旁\",\n \"碎\",\n \"骨\",\n \"监\",\n \"捕\",\n \"弟\",\n \"暴\",\n \"割\",\n \"贯\",\n \"殊\",\n \"释\",\n \"词\",\n \"亡\",\n \"壁\",\n \"顿\",\n \"宝\",\n \"午\",\n \"尘\",\n \"闻\",\n \"揭\",\n \"炮\",\n \"残\",\n \"冬\",\n \"桥\",\n \"妇\",\n \"警\",\n \"综\",\n \"招\",\n \"吴\",\n \"付\",\n \"浮\",\n \"遭\",\n \"徐\",\n \"您\",\n \"摇\",\n \"谷\",\n \"赞\",\n \"箱\",\n \"隔\",\n \"订\",\n \"男\",\n \"吹\",\n \"园\",\n \"纷\",\n \"唐\",\n \"败\",\n \"宋\",\n \"玻\",\n \"巨\",\n \"耕\",\n \"坦\",\n \"荣\",\n \"闭\",\n \"湾\",\n \"键\",\n \"凡\",\n \"驻\",\n \"锅\",\n \"救\",\n \"恩\",\n \"剥\",\n \"凝\",\n \"碱\",\n \"齿\",\n \"截\",\n \"炼\",\n \"麻\",\n \"纺\",\n \"禁\",\n \"废\",\n \"盛\",\n \"版\",\n \"缓\",\n \"净\",\n \"睛\",\n \"昌\",\n \"婚\",\n \"涉\",\n \"筒\",\n \"嘴\",\n \"插\",\n \"岸\",\n \"朗\",\n \"庄\",\n \"街\",\n \"藏\",\n \"姑\",\n \"贸\",\n \"腐\",\n \"奴\",\n \"啦\",\n \"惯\",\n \"乘\",\n \"伙\",\n \"恢\",\n \"匀\",\n \"纱\",\n \"扎\",\n \"辩\",\n \"耳\",\n \"彪\",\n \"臣\",\n \"亿\",\n \"璃\",\n \"抵\",\n \"脉\",\n \"秀\",\n \"萨\",\n \"俄\",\n \"网\",\n \"舞\",\n \"店\",\n \"喷\",\n \"纵\",\n \"寸\",\n \"汗\",\n \"挂\",\n \"洪\",\n \"贺\",\n \"闪\",\n \"柬\",\n \"爆\",\n \"烯\",\n \"津\",\n \"稻\",\n \"墙\",\n \"软\",\n \"勇\",\n \"像\",\n \"滚\",\n \"厘\",\n \"蒙\",\n \"芳\",\n \"肯\",\n \"坡\",\n \"柱\",\n \"荡\",\n \"腿\",\n \"仪\",\n \"旅\",\n \"尾\",\n \"轧\",\n \"冰\",\n \"贡\",\n \"登\",\n \"黎\",\n \"削\",\n \"钻\",\n \"勒\",\n \"逃\",\n \"障\",\n \"氨\",\n \"郭\",\n \"峰\",\n \"币\",\n \"港\",\n \"伏\",\n \"轨\",\n \"亩\",\n \"毕\",\n \"擦\",\n \"莫\",\n \"刺\",\n \"浪\",\n \"秘\",\n \"援\",\n \"株\",\n \"健\",\n \"售\",\n \"股\",\n \"岛\",\n \"甘\",\n \"泡\",\n \"睡\",\n \"童\",\n \"铸\",\n \"汤\",\n \"阀\",\n \"休\",\n \"汇\",\n \"舍\",\n \"牧\",\n \"绕\",\n \"炸\",\n \"哲\",\n \"磷\",\n \"绩\",\n \"朋\",\n \"淡\",\n \"尖\",\n \"启\",\n \"陷\",\n \"柴\",\n \"呈\",\n \"徒\",\n \"颜\",\n \"泪\",\n \"稍\",\n \"忘\",\n \"泵\",\n \"蓝\",\n \"拖\",\n \"洞\",\n \"授\",\n \"镜\",\n \"辛\",\n \"壮\",\n \"锋\",\n \"贫\",\n \"虚\",\n \"弯\",\n \"摩\",\n \"泰\",\n \"幼\",\n \"廷\",\n \"尊\",\n \"窗\",\n \"纲\",\n \"弄\",\n \"隶\",\n \"疑\",\n \"氏\",\n \"宫\",\n \"姐\",\n \"震\",\n \"瑞\",\n \"怪\",\n \"尤\",\n \"琴\",\n \"循\",\n \"描\",\n \"膜\",\n \"违\",\n \"夹\",\n \"腰\",\n \"缘\",\n \"珠\",\n \"穷\",\n \"森\",\n \"枝\",\n \"竹\",\n \"沟\",\n \"催\",\n \"绳\",\n \"忆\",\n \"邦\",\n \"剩\",\n \"幸\",\n \"浆\",\n \"栏\",\n \"拥\",\n \"牙\",\n \"贮\",\n \"礼\",\n \"滤\",\n \"钠\",\n \"纹\",\n \"罢\",\n \"拍\",\n \"咱\",\n \"喊\",\n \"袖\",\n \"埃\",\n \"勤\",\n \"罚\",\n \"焦\",\n \"潜\",\n \"伍\",\n \"墨\",\n \"欲\",\n \"缝\",\n \"姓\",\n \"刊\",\n \"饱\",\n \"仿\",\n \"奖\",\n \"铝\",\n \"鬼\",\n \"丽\",\n \"跨\",\n \"默\",\n \"挖\",\n \"链\",\n \"扫\",\n \"喝\",\n \"袋\",\n \"炭\",\n \"污\",\n \"幕\",\n \"诸\",\n \"弧\",\n \"励\",\n \"梅\",\n \"奶\",\n \"洁\",\n \"灾\",\n \"舟\",\n \"鉴\",\n \"苯\",\n \"讼\",\n \"抱\",\n \"毁\",\n \"懂\",\n \"寒\",\n \"智\",\n \"埔\",\n \"寄\",\n \"届\",\n \"跃\",\n \"渡\",\n \"挑\",\n \"丹\",\n \"艰\",\n \"贝\",\n \"碰\",\n \"拔\",\n \"爹\",\n \"戴\",\n \"码\",\n \"梦\",\n \"芽\",\n \"熔\",\n \"赤\",\n \"渔\",\n \"哭\",\n \"敬\",\n \"颗\",\n \"奔\",\n \"铅\",\n \"仲\",\n \"虎\",\n \"稀\",\n \"妹\",\n \"乏\",\n \"珍\",\n \"申\",\n \"桌\",\n \"遵\",\n \"允\",\n \"隆\",\n \"螺\",\n \"仓\",\n \"魏\",\n \"锐\",\n \"晓\",\n \"氮\",\n \"兼\",\n \"隐\",\n \"碍\",\n \"赫\",\n \"拨\",\n \"忠\",\n \"肃\",\n \"缸\",\n \"牵\",\n \"抢\",\n \"博\",\n \"巧\",\n \"壳\",\n \"兄\",\n \"杜\",\n \"讯\",\n \"诚\",\n \"碧\",\n \"祥\",\n \"柯\",\n \"页\",\n \"巡\",\n \"矩\",\n \"悲\",\n \"灌\",\n \"龄\",\n \"伦\",\n \"票\",\n \"寻\",\n \"桂\",\n \"铺\",\n \"圣\",\n \"恐\",\n \"恰\",\n \"郑\",\n \"趣\",\n \"抬\",\n \"荒\",\n \"腾\",\n \"贴\",\n \"柔\",\n \"滴\",\n \"猛\",\n \"阔\",\n \"辆\",\n \"妻\",\n \"填\",\n \"撤\",\n \"储\",\n \"签\",\n \"闹\",\n \"扰\",\n \"紫\",\n \"砂\",\n \"递\",\n \"戏\",\n \"吊\",\n \"陶\",\n \"伐\",\n \"喂\",\n \"疗\",\n \"瓶\",\n \"婆\",\n \"抚\",\n \"臂\",\n \"摸\",\n \"忍\",\n \"虾\",\n \"蜡\",\n \"邻\",\n \"胸\",\n \"巩\",\n \"挤\",\n \"偶\",\n \"弃\",\n \"槽\",\n \"劲\",\n \"乳\",\n \"邓\",\n \"吉\",\n \"仁\",\n \"烂\",\n \"砖\",\n \"租\",\n \"乌\",\n \"舰\",\n \"伴\",\n \"瓜\",\n \"浅\",\n \"丙\",\n \"暂\",\n \"燥\",\n \"橡\",\n \"柳\",\n \"迷\",\n \"暖\",\n \"牌\",\n \"秧\",\n \"胆\",\n \"详\",\n \"簧\",\n \"踏\",\n \"瓷\",\n \"谱\",\n \"呆\",\n \"宾\",\n \"糊\",\n \"洛\",\n \"辉\",\n \"愤\",\n \"竞\",\n \"隙\",\n \"怒\",\n \"粘\",\n \"乃\",\n \"绪\",\n \"肩\",\n \"籍\",\n \"敏\",\n \"涂\",\n \"熙\",\n \"皆\",\n \"侦\",\n \"悬\",\n \"掘\",\n \"享\",\n \"纠\",\n \"醒\",\n \"狂\",\n \"锁\",\n \"淀\",\n \"恨\",\n \"牲\",\n \"霸\",\n \"爬\",\n \"赏\",\n \"逆\",\n \"玩\",\n \"陵\",\n \"祝\",\n \"秒\",\n \"浙\",\n \"貌\",\n \"役\",\n \"彼\",\n \"悉\",\n \"鸭\",\n \"趋\",\n \"凤\",\n \"晨\",\n \"畜\",\n \"辈\",\n \"秩\",\n \"卵\",\n \"署\",\n \"梯\",\n \"炎\",\n \"滩\",\n \"棋\",\n \"驱\",\n \"筛\",\n \"峡\",\n \"冒\",\n \"啥\",\n \"寿\",\n \"译\",\n \"浸\",\n \"泉\",\n \"帽\",\n \"迟\",\n \"硅\",\n \"疆\",\n \"贷\",\n \"漏\",\n \"稿\",\n \"冠\",\n \"嫩\",\n \"胁\",\n \"芯\",\n \"牢\",\n \"叛\",\n \"蚀\",\n \"奥\",\n \"鸣\",\n \"岭\",\n \"羊\",\n \"凭\",\n \"串\",\n \"塘\",\n \"绘\",\n \"酵\",\n \"融\",\n \"盆\",\n \"锡\",\n \"庙\",\n \"筹\",\n \"冻\",\n \"辅\",\n \"摄\",\n \"袭\",\n \"筋\",\n \"拒\",\n \"僚\",\n \"旱\",\n \"钾\",\n \"鸟\",\n \"漆\",\n \"沈\",\n \"眉\",\n \"疏\",\n \"添\",\n \"棒\",\n \"穗\",\n \"硝\",\n \"韩\",\n \"逼\",\n \"扭\",\n \"侨\",\n \"凉\",\n \"挺\",\n \"碗\",\n \"栽\",\n \"炒\",\n \"杯\",\n \"患\",\n \"馏\",\n \"劝\",\n \"豪\",\n \"辽\",\n \"勃\",\n \"鸿\",\n \"旦\",\n \"吏\",\n \"拜\",\n \"狗\",\n \"埋\",\n \"辊\",\n \"掩\",\n \"饮\",\n \"搬\",\n \"骂\",\n \"辞\",\n \"勾\",\n \"扣\",\n \"估\",\n \"蒋\",\n \"绒\",\n \"雾\",\n \"丈\",\n \"朵\",\n \"姆\",\n \"拟\",\n \"宇\",\n \"辑\",\n \"陕\",\n \"雕\",\n \"偿\",\n \"蓄\",\n \"崇\",\n \"剪\",\n \"倡\",\n \"厅\",\n \"咬\",\n \"驶\",\n \"薯\",\n \"刷\",\n \"斥\",\n \"番\",\n \"赋\",\n \"奉\",\n \"佛\",\n \"浇\",\n \"漫\",\n \"曼\",\n \"扇\",\n \"钙\",\n \"桃\",\n \"扶\",\n \"仔\",\n \"返\",\n \"俗\",\n \"亏\",\n \"腔\",\n \"鞋\",\n \"棱\",\n \"覆\",\n \"框\",\n \"悄\",\n \"叔\",\n \"撞\",\n \"骗\",\n \"勘\",\n \"旺\",\n \"沸\",\n \"孤\",\n \"吐\",\n \"孟\",\n \"渠\",\n \"屈\",\n \"疾\",\n \"妙\",\n \"惜\",\n \"仰\",\n \"狠\",\n \"胀\",\n \"谐\",\n \"抛\",\n \"霉\",\n \"桑\",\n \"岗\",\n \"嘛\",\n \"衰\",\n \"盗\",\n \"渗\",\n \"脏\",\n \"赖\",\n \"涌\",\n \"甜\",\n \"曹\",\n \"阅\",\n \"肌\",\n \"哩\",\n \"厉\",\n \"烃\",\n \"纬\",\n \"毅\",\n \"昨\",\n \"伪\",\n \"症\",\n \"煮\",\n \"叹\",\n \"钉\",\n \"搭\",\n \"茎\",\n \"笼\",\n \"酷\",\n \"偷\",\n \"弓\",\n \"锥\",\n \"恒\",\n \"杰\",\n \"坑\",\n \"鼻\",\n \"翼\",\n \"纶\",\n \"叙\",\n \"狱\",\n \"逮\",\n \"罐\",\n \"络\",\n \"棚\",\n \"抑\",\n \"膨\",\n \"蔬\",\n \"寺\",\n \"骤\",\n \"穆\",\n \"冶\",\n \"枯\",\n \"册\",\n \"尸\",\n \"凸\",\n \"绅\",\n \"坯\",\n \"牺\",\n \"焰\",\n \"轰\",\n \"欣\",\n \"晋\",\n \"瘦\",\n \"御\",\n \"锭\",\n \"锦\",\n \"丧\",\n \"旬\",\n \"锻\",\n \"垄\",\n \"搜\",\n \"扑\",\n \"邀\",\n \"亭\",\n \"酯\",\n \"迈\",\n \"舒\",\n \"脆\",\n \"酶\",\n \"闲\",\n \"忧\",\n \"酚\",\n \"顽\",\n \"羽\",\n \"涨\",\n \"卸\",\n \"仗\",\n \"陪\",\n \"辟\",\n \"惩\",\n \"杭\",\n \"姚\",\n \"肚\",\n \"捉\",\n \"飘\",\n \"漂\",\n \"昆\",\n \"欺\",\n \"吾\",\n \"郎\",\n \"烷\",\n \"汁\",\n \"呵\",\n \"饰\",\n \"萧\",\n \"雅\",\n \"邮\",\n \"迁\",\n \"燕\",\n \"撒\",\n \"姻\",\n \"赴\",\n \"宴\",\n \"烦\",\n \"债\",\n \"帐\",\n \"斑\",\n \"铃\",\n \"旨\",\n \"醇\",\n \"董\",\n \"饼\",\n \"雏\",\n \"姿\",\n \"拌\",\n \"傅\",\n \"腹\",\n \"妥\",\n \"揉\",\n \"贤\",\n \"拆\",\n \"歪\",\n \"葡\",\n \"胺\",\n \"丢\",\n \"浩\",\n \"徽\",\n \"昂\",\n \"垫\",\n \"挡\",\n \"览\",\n \"贪\",\n \"慰\",\n \"缴\",\n \"汪\",\n \"慌\",\n \"冯\",\n \"诺\",\n \"姜\",\n \"谊\",\n \"凶\",\n \"劣\",\n \"诬\",\n \"耀\",\n \"昏\",\n \"躺\",\n \"盈\",\n \"骑\",\n \"乔\",\n \"溪\",\n \"丛\",\n \"卢\",\n \"抹\",\n \"闷\",\n \"咨\",\n \"刮\",\n \"驾\",\n \"缆\",\n \"悟\",\n \"摘\",\n \"铒\",\n \"掷\",\n \"颇\",\n \"幻\",\n \"柄\",\n \"惠\",\n \"惨\",\n \"佳\",\n \"仇\",\n \"腊\",\n \"窝\",\n \"涤\",\n \"剑\",\n \"瞧\",\n \"堡\",\n \"泼\",\n \"葱\",\n \"罩\",\n \"霍\",\n \"捞\",\n \"胎\",\n \"苍\",\n \"滨\",\n \"俩\",\n \"捅\",\n \"湘\",\n \"砍\",\n \"霞\",\n \"邵\",\n \"萄\",\n \"疯\",\n \"淮\",\n \"遂\",\n \"熊\",\n \"粪\",\n \"烘\",\n \"宿\",\n \"档\",\n \"戈\",\n \"驳\",\n \"嫂\",\n \"裕\",\n \"徙\",\n \"箭\",\n \"捐\",\n \"肠\",\n \"撑\",\n \"晒\",\n \"辨\",\n \"殿\",\n \"莲\",\n \"摊\",\n \"搅\",\n \"酱\",\n \"屏\",\n \"疫\",\n \"哀\",\n \"蔡\",\n \"堵\",\n \"沫\",\n \"皱\",\n \"畅\",\n \"叠\",\n \"阁\",\n \"莱\",\n \"敲\",\n \"辖\",\n \"钩\",\n \"痕\",\n \"坝\",\n \"巷\",\n \"饿\",\n \"祸\",\n \"丘\",\n \"玄\",\n \"溜\",\n \"曰\",\n \"逻\",\n \"彭\",\n \"尝\",\n \"卿\",\n \"妨\",\n \"艇\",\n \"吞\",\n \"韦\",\n \"怨\",\n \"矮\",\n \"歇\"\n]\n\n},{}],52:[function(require,module,exports){\nmodule.exports=[\n \"abandon\",\n \"ability\",\n \"able\",\n \"about\",\n \"above\",\n \"absent\",\n \"absorb\",\n \"abstract\",\n \"absurd\",\n \"abuse\",\n \"access\",\n \"accident\",\n \"account\",\n \"accuse\",\n \"achieve\",\n \"acid\",\n \"acoustic\",\n \"acquire\",\n \"across\",\n \"act\",\n \"action\",\n \"actor\",\n \"actress\",\n \"actual\",\n \"adapt\",\n \"add\",\n \"addict\",\n \"address\",\n \"adjust\",\n \"admit\",\n \"adult\",\n \"advance\",\n \"advice\",\n \"aerobic\",\n \"affair\",\n \"afford\",\n \"afraid\",\n \"again\",\n \"age\",\n \"agent\",\n \"agree\",\n \"ahead\",\n \"aim\",\n \"air\",\n \"airport\",\n \"aisle\",\n \"alarm\",\n \"album\",\n \"alcohol\",\n \"alert\",\n \"alien\",\n \"all\",\n \"alley\",\n \"allow\",\n \"almost\",\n \"alone\",\n \"alpha\",\n \"already\",\n \"also\",\n \"alter\",\n \"always\",\n \"amateur\",\n \"amazing\",\n \"among\",\n \"amount\",\n \"amused\",\n \"analyst\",\n \"anchor\",\n \"ancient\",\n \"anger\",\n \"angle\",\n \"angry\",\n \"animal\",\n \"ankle\",\n \"announce\",\n \"annual\",\n \"another\",\n \"answer\",\n \"antenna\",\n \"antique\",\n \"anxiety\",\n \"any\",\n \"apart\",\n \"apology\",\n \"appear\",\n \"apple\",\n \"approve\",\n \"april\",\n \"arch\",\n \"arctic\",\n \"area\",\n \"arena\",\n \"argue\",\n \"arm\",\n \"armed\",\n \"armor\",\n \"army\",\n \"around\",\n \"arrange\",\n \"arrest\",\n \"arrive\",\n \"arrow\",\n \"art\",\n \"artefact\",\n \"artist\",\n \"artwork\",\n \"ask\",\n \"aspect\",\n \"assault\",\n \"asset\",\n \"assist\",\n \"assume\",\n \"asthma\",\n \"athlete\",\n \"atom\",\n \"attack\",\n \"attend\",\n \"attitude\",\n \"attract\",\n \"auction\",\n \"audit\",\n \"august\",\n \"aunt\",\n \"author\",\n \"auto\",\n \"autumn\",\n \"average\",\n \"avocado\",\n \"avoid\",\n \"awake\",\n \"aware\",\n \"away\",\n \"awesome\",\n \"awful\",\n \"awkward\",\n \"axis\",\n \"baby\",\n \"bachelor\",\n \"bacon\",\n \"badge\",\n \"bag\",\n \"balance\",\n \"balcony\",\n \"ball\",\n \"bamboo\",\n \"banana\",\n \"banner\",\n \"bar\",\n \"barely\",\n \"bargain\",\n \"barrel\",\n \"base\",\n \"basic\",\n \"basket\",\n \"battle\",\n \"beach\",\n \"bean\",\n \"beauty\",\n \"because\",\n \"become\",\n \"beef\",\n \"before\",\n \"begin\",\n \"behave\",\n \"behind\",\n \"believe\",\n \"below\",\n \"belt\",\n \"bench\",\n \"benefit\",\n \"best\",\n \"betray\",\n \"better\",\n \"between\",\n \"beyond\",\n \"bicycle\",\n \"bid\",\n \"bike\",\n \"bind\",\n \"biology\",\n \"bird\",\n \"birth\",\n \"bitter\",\n \"black\",\n \"blade\",\n \"blame\",\n \"blanket\",\n \"blast\",\n \"bleak\",\n \"bless\",\n \"blind\",\n \"blood\",\n \"blossom\",\n \"blouse\",\n \"blue\",\n \"blur\",\n \"blush\",\n \"board\",\n \"boat\",\n \"body\",\n \"boil\",\n \"bomb\",\n \"bone\",\n \"bonus\",\n \"book\",\n \"boost\",\n \"border\",\n \"boring\",\n \"borrow\",\n \"boss\",\n \"bottom\",\n \"bounce\",\n \"box\",\n \"boy\",\n \"bracket\",\n \"brain\",\n \"brand\",\n \"brass\",\n \"brave\",\n \"bread\",\n \"breeze\",\n \"brick\",\n \"bridge\",\n \"brief\",\n \"bright\",\n \"bring\",\n \"brisk\",\n \"broccoli\",\n \"broken\",\n \"bronze\",\n \"broom\",\n \"brother\",\n \"brown\",\n \"brush\",\n \"bubble\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"build\",\n \"bulb\",\n \"bulk\",\n \"bullet\",\n \"bundle\",\n \"bunker\",\n \"burden\",\n \"burger\",\n \"burst\",\n \"bus\",\n \"business\",\n \"busy\",\n \"butter\",\n \"buyer\",\n \"buzz\",\n \"cabbage\",\n \"cabin\",\n \"cable\",\n \"cactus\",\n \"cage\",\n \"cake\",\n \"call\",\n \"calm\",\n \"camera\",\n \"camp\",\n \"can\",\n \"canal\",\n \"cancel\",\n \"candy\",\n \"cannon\",\n \"canoe\",\n \"canvas\",\n \"canyon\",\n \"capable\",\n \"capital\",\n \"captain\",\n \"car\",\n \"carbon\",\n \"card\",\n \"cargo\",\n \"carpet\",\n \"carry\",\n \"cart\",\n \"case\",\n \"cash\",\n \"casino\",\n \"castle\",\n \"casual\",\n \"cat\",\n \"catalog\",\n \"catch\",\n \"category\",\n \"cattle\",\n \"caught\",\n \"cause\",\n \"caution\",\n \"cave\",\n \"ceiling\",\n \"celery\",\n \"cement\",\n \"census\",\n \"century\",\n \"cereal\",\n \"certain\",\n \"chair\",\n \"chalk\",\n \"champion\",\n \"change\",\n \"chaos\",\n \"chapter\",\n \"charge\",\n \"chase\",\n \"chat\",\n \"cheap\",\n \"check\",\n \"cheese\",\n \"chef\",\n \"cherry\",\n \"chest\",\n \"chicken\",\n \"chief\",\n \"child\",\n \"chimney\",\n \"choice\",\n \"choose\",\n \"chronic\",\n \"chuckle\",\n \"chunk\",\n \"churn\",\n \"cigar\",\n \"cinnamon\",\n \"circle\",\n \"citizen\",\n \"city\",\n \"civil\",\n \"claim\",\n \"clap\",\n \"clarify\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clerk\",\n \"clever\",\n \"click\",\n \"client\",\n \"cliff\",\n \"climb\",\n \"clinic\",\n \"clip\",\n \"clock\",\n \"clog\",\n \"close\",\n \"cloth\",\n \"cloud\",\n \"clown\",\n \"club\",\n \"clump\",\n \"cluster\",\n \"clutch\",\n \"coach\",\n \"coast\",\n \"coconut\",\n \"code\",\n \"coffee\",\n \"coil\",\n \"coin\",\n \"collect\",\n \"color\",\n \"column\",\n \"combine\",\n \"come\",\n \"comfort\",\n \"comic\",\n \"common\",\n \"company\",\n \"concert\",\n \"conduct\",\n \"confirm\",\n \"congress\",\n \"connect\",\n \"consider\",\n \"control\",\n \"convince\",\n \"cook\",\n \"cool\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"core\",\n \"corn\",\n \"correct\",\n \"cost\",\n \"cotton\",\n \"couch\",\n \"country\",\n \"couple\",\n \"course\",\n \"cousin\",\n \"cover\",\n \"coyote\",\n \"crack\",\n \"cradle\",\n \"craft\",\n \"cram\",\n \"crane\",\n \"crash\",\n \"crater\",\n \"crawl\",\n \"crazy\",\n \"cream\",\n \"credit\",\n \"creek\",\n \"crew\",\n \"cricket\",\n \"crime\",\n \"crisp\",\n \"critic\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crowd\",\n \"crucial\",\n \"cruel\",\n \"cruise\",\n \"crumble\",\n \"crunch\",\n \"crush\",\n \"cry\",\n \"crystal\",\n \"cube\",\n \"culture\",\n \"cup\",\n \"cupboard\",\n \"curious\",\n \"current\",\n \"curtain\",\n \"curve\",\n \"cushion\",\n \"custom\",\n \"cute\",\n \"cycle\",\n \"dad\",\n \"damage\",\n \"damp\",\n \"dance\",\n \"danger\",\n \"daring\",\n \"dash\",\n \"daughter\",\n \"dawn\",\n \"day\",\n \"deal\",\n \"debate\",\n \"debris\",\n \"decade\",\n \"december\",\n \"decide\",\n \"decline\",\n \"decorate\",\n \"decrease\",\n \"deer\",\n \"defense\",\n \"define\",\n \"defy\",\n \"degree\",\n \"delay\",\n \"deliver\",\n \"demand\",\n \"demise\",\n \"denial\",\n \"dentist\",\n \"deny\",\n \"depart\",\n \"depend\",\n \"deposit\",\n \"depth\",\n \"deputy\",\n \"derive\",\n \"describe\",\n \"desert\",\n \"design\",\n \"desk\",\n \"despair\",\n \"destroy\",\n \"detail\",\n \"detect\",\n \"develop\",\n \"device\",\n \"devote\",\n \"diagram\",\n \"dial\",\n \"diamond\",\n \"diary\",\n \"dice\",\n \"diesel\",\n \"diet\",\n \"differ\",\n \"digital\",\n \"dignity\",\n \"dilemma\",\n \"dinner\",\n \"dinosaur\",\n \"direct\",\n \"dirt\",\n \"disagree\",\n \"discover\",\n \"disease\",\n \"dish\",\n \"dismiss\",\n \"disorder\",\n \"display\",\n \"distance\",\n \"divert\",\n \"divide\",\n \"divorce\",\n \"dizzy\",\n \"doctor\",\n \"document\",\n \"dog\",\n \"doll\",\n \"dolphin\",\n \"domain\",\n \"donate\",\n \"donkey\",\n \"donor\",\n \"door\",\n \"dose\",\n \"double\",\n \"dove\",\n \"draft\",\n \"dragon\",\n \"drama\",\n \"drastic\",\n \"draw\",\n \"dream\",\n \"dress\",\n \"drift\",\n \"drill\",\n \"drink\",\n \"drip\",\n \"drive\",\n \"drop\",\n \"drum\",\n \"dry\",\n \"duck\",\n \"dumb\",\n \"dune\",\n \"during\",\n \"dust\",\n \"dutch\",\n \"duty\",\n \"dwarf\",\n \"dynamic\",\n \"eager\",\n \"eagle\",\n \"early\",\n \"earn\",\n \"earth\",\n \"easily\",\n \"east\",\n \"easy\",\n \"echo\",\n \"ecology\",\n \"economy\",\n \"edge\",\n \"edit\",\n \"educate\",\n \"effort\",\n \"egg\",\n \"eight\",\n \"either\",\n \"elbow\",\n \"elder\",\n \"electric\",\n \"elegant\",\n \"element\",\n \"elephant\",\n \"elevator\",\n \"elite\",\n \"else\",\n \"embark\",\n \"embody\",\n \"embrace\",\n \"emerge\",\n \"emotion\",\n \"employ\",\n \"empower\",\n \"empty\",\n \"enable\",\n \"enact\",\n \"end\",\n \"endless\",\n \"endorse\",\n \"enemy\",\n \"energy\",\n \"enforce\",\n \"engage\",\n \"engine\",\n \"enhance\",\n \"enjoy\",\n \"enlist\",\n \"enough\",\n \"enrich\",\n \"enroll\",\n \"ensure\",\n \"enter\",\n \"entire\",\n \"entry\",\n \"envelope\",\n \"episode\",\n \"equal\",\n \"equip\",\n \"era\",\n \"erase\",\n \"erode\",\n \"erosion\",\n \"error\",\n \"erupt\",\n \"escape\",\n \"essay\",\n \"essence\",\n \"estate\",\n \"eternal\",\n \"ethics\",\n \"evidence\",\n \"evil\",\n \"evoke\",\n \"evolve\",\n \"exact\",\n \"example\",\n \"excess\",\n \"exchange\",\n \"excite\",\n \"exclude\",\n \"excuse\",\n \"execute\",\n \"exercise\",\n \"exhaust\",\n \"exhibit\",\n \"exile\",\n \"exist\",\n \"exit\",\n \"exotic\",\n \"expand\",\n \"expect\",\n \"expire\",\n \"explain\",\n \"expose\",\n \"express\",\n \"extend\",\n \"extra\",\n \"eye\",\n \"eyebrow\",\n \"fabric\",\n \"face\",\n \"faculty\",\n \"fade\",\n \"faint\",\n \"faith\",\n \"fall\",\n \"false\",\n \"fame\",\n \"family\",\n \"famous\",\n \"fan\",\n \"fancy\",\n \"fantasy\",\n \"farm\",\n \"fashion\",\n \"fat\",\n \"fatal\",\n \"father\",\n \"fatigue\",\n \"fault\",\n \"favorite\",\n \"feature\",\n \"february\",\n \"federal\",\n \"fee\",\n \"feed\",\n \"feel\",\n \"female\",\n \"fence\",\n \"festival\",\n \"fetch\",\n \"fever\",\n \"few\",\n \"fiber\",\n \"fiction\",\n \"field\",\n \"figure\",\n \"file\",\n \"film\",\n \"filter\",\n \"final\",\n \"find\",\n \"fine\",\n \"finger\",\n \"finish\",\n \"fire\",\n \"firm\",\n \"first\",\n \"fiscal\",\n \"fish\",\n \"fit\",\n \"fitness\",\n \"fix\",\n \"flag\",\n \"flame\",\n \"flash\",\n \"flat\",\n \"flavor\",\n \"flee\",\n \"flight\",\n \"flip\",\n \"float\",\n \"flock\",\n \"floor\",\n \"flower\",\n \"fluid\",\n \"flush\",\n \"fly\",\n \"foam\",\n \"focus\",\n \"fog\",\n \"foil\",\n \"fold\",\n \"follow\",\n \"food\",\n \"foot\",\n \"force\",\n \"forest\",\n \"forget\",\n \"fork\",\n \"fortune\",\n \"forum\",\n \"forward\",\n \"fossil\",\n \"foster\",\n \"found\",\n \"fox\",\n \"fragile\",\n \"frame\",\n \"frequent\",\n \"fresh\",\n \"friend\",\n \"fringe\",\n \"frog\",\n \"front\",\n \"frost\",\n \"frown\",\n \"frozen\",\n \"fruit\",\n \"fuel\",\n \"fun\",\n \"funny\",\n \"furnace\",\n \"fury\",\n \"future\",\n \"gadget\",\n \"gain\",\n \"galaxy\",\n \"gallery\",\n \"game\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"garlic\",\n \"garment\",\n \"gas\",\n \"gasp\",\n \"gate\",\n \"gather\",\n \"gauge\",\n \"gaze\",\n \"general\",\n \"genius\",\n \"genre\",\n \"gentle\",\n \"genuine\",\n \"gesture\",\n \"ghost\",\n \"giant\",\n \"gift\",\n \"giggle\",\n \"ginger\",\n \"giraffe\",\n \"girl\",\n \"give\",\n \"glad\",\n \"glance\",\n \"glare\",\n \"glass\",\n \"glide\",\n \"glimpse\",\n \"globe\",\n \"gloom\",\n \"glory\",\n \"glove\",\n \"glow\",\n \"glue\",\n \"goat\",\n \"goddess\",\n \"gold\",\n \"good\",\n \"goose\",\n \"gorilla\",\n \"gospel\",\n \"gossip\",\n \"govern\",\n \"gown\",\n \"grab\",\n \"grace\",\n \"grain\",\n \"grant\",\n \"grape\",\n \"grass\",\n \"gravity\",\n \"great\",\n \"green\",\n \"grid\",\n \"grief\",\n \"grit\",\n \"grocery\",\n \"group\",\n \"grow\",\n \"grunt\",\n \"guard\",\n \"guess\",\n \"guide\",\n \"guilt\",\n \"guitar\",\n \"gun\",\n \"gym\",\n \"habit\",\n \"hair\",\n \"half\",\n \"hammer\",\n \"hamster\",\n \"hand\",\n \"happy\",\n \"harbor\",\n \"hard\",\n \"harsh\",\n \"harvest\",\n \"hat\",\n \"have\",\n \"hawk\",\n \"hazard\",\n \"head\",\n \"health\",\n \"heart\",\n \"heavy\",\n \"hedgehog\",\n \"height\",\n \"hello\",\n \"helmet\",\n \"help\",\n \"hen\",\n \"hero\",\n \"hidden\",\n \"high\",\n \"hill\",\n \"hint\",\n \"hip\",\n \"hire\",\n \"history\",\n \"hobby\",\n \"hockey\",\n \"hold\",\n \"hole\",\n \"holiday\",\n \"hollow\",\n \"home\",\n \"honey\",\n \"hood\",\n \"hope\",\n \"horn\",\n \"horror\",\n \"horse\",\n \"hospital\",\n \"host\",\n \"hotel\",\n \"hour\",\n \"hover\",\n \"hub\",\n \"huge\",\n \"human\",\n \"humble\",\n \"humor\",\n \"hundred\",\n \"hungry\",\n \"hunt\",\n \"hurdle\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hybrid\",\n \"ice\",\n \"icon\",\n \"idea\",\n \"identify\",\n \"idle\",\n \"ignore\",\n \"ill\",\n \"illegal\",\n \"illness\",\n \"image\",\n \"imitate\",\n \"immense\",\n \"immune\",\n \"impact\",\n \"impose\",\n \"improve\",\n \"impulse\",\n \"inch\",\n \"include\",\n \"income\",\n \"increase\",\n \"index\",\n \"indicate\",\n \"indoor\",\n \"industry\",\n \"infant\",\n \"inflict\",\n \"inform\",\n \"inhale\",\n \"inherit\",\n \"initial\",\n \"inject\",\n \"injury\",\n \"inmate\",\n \"inner\",\n \"innocent\",\n \"input\",\n \"inquiry\",\n \"insane\",\n \"insect\",\n \"inside\",\n \"inspire\",\n \"install\",\n \"intact\",\n \"interest\",\n \"into\",\n \"invest\",\n \"invite\",\n \"involve\",\n \"iron\",\n \"island\",\n \"isolate\",\n \"issue\",\n \"item\",\n \"ivory\",\n \"jacket\",\n \"jaguar\",\n \"jar\",\n \"jazz\",\n \"jealous\",\n \"jeans\",\n \"jelly\",\n \"jewel\",\n \"job\",\n \"join\",\n \"joke\",\n \"journey\",\n \"joy\",\n \"judge\",\n \"juice\",\n \"jump\",\n \"jungle\",\n \"junior\",\n \"junk\",\n \"just\",\n \"kangaroo\",\n \"keen\",\n \"keep\",\n \"ketchup\",\n \"key\",\n \"kick\",\n \"kid\",\n \"kidney\",\n \"kind\",\n \"kingdom\",\n \"kiss\",\n \"kit\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kiwi\",\n \"knee\",\n \"knife\",\n \"knock\",\n \"know\",\n \"lab\",\n \"label\",\n \"labor\",\n \"ladder\",\n \"lady\",\n \"lake\",\n \"lamp\",\n \"language\",\n \"laptop\",\n \"large\",\n \"later\",\n \"latin\",\n \"laugh\",\n \"laundry\",\n \"lava\",\n \"law\",\n \"lawn\",\n \"lawsuit\",\n \"layer\",\n \"lazy\",\n \"leader\",\n \"leaf\",\n \"learn\",\n \"leave\",\n \"lecture\",\n \"left\",\n \"leg\",\n \"legal\",\n \"legend\",\n \"leisure\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"leopard\",\n \"lesson\",\n \"letter\",\n \"level\",\n \"liar\",\n \"liberty\",\n \"library\",\n \"license\",\n \"life\",\n \"lift\",\n \"light\",\n \"like\",\n \"limb\",\n \"limit\",\n \"link\",\n \"lion\",\n \"liquid\",\n \"list\",\n \"little\",\n \"live\",\n \"lizard\",\n \"load\",\n \"loan\",\n \"lobster\",\n \"local\",\n \"lock\",\n \"logic\",\n \"lonely\",\n \"long\",\n \"loop\",\n \"lottery\",\n \"loud\",\n \"lounge\",\n \"love\",\n \"loyal\",\n \"lucky\",\n \"luggage\",\n \"lumber\",\n \"lunar\",\n \"lunch\",\n \"luxury\",\n \"lyrics\",\n \"machine\",\n \"mad\",\n \"magic\",\n \"magnet\",\n \"maid\",\n \"mail\",\n \"main\",\n \"major\",\n \"make\",\n \"mammal\",\n \"man\",\n \"manage\",\n \"mandate\",\n \"mango\",\n \"mansion\",\n \"manual\",\n \"maple\",\n \"marble\",\n \"march\",\n \"margin\",\n \"marine\",\n \"market\",\n \"marriage\",\n \"mask\",\n \"mass\",\n \"master\",\n \"match\",\n \"material\",\n \"math\",\n \"matrix\",\n \"matter\",\n \"maximum\",\n \"maze\",\n \"meadow\",\n \"mean\",\n \"measure\",\n \"meat\",\n \"mechanic\",\n \"medal\",\n \"media\",\n \"melody\",\n \"melt\",\n \"member\",\n \"memory\",\n \"mention\",\n \"menu\",\n \"mercy\",\n \"merge\",\n \"merit\",\n \"merry\",\n \"mesh\",\n \"message\",\n \"metal\",\n \"method\",\n \"middle\",\n \"midnight\",\n \"milk\",\n \"million\",\n \"mimic\",\n \"mind\",\n \"minimum\",\n \"minor\",\n \"minute\",\n \"miracle\",\n \"mirror\",\n \"misery\",\n \"miss\",\n \"mistake\",\n \"mix\",\n \"mixed\",\n \"mixture\",\n \"mobile\",\n \"model\",\n \"modify\",\n \"mom\",\n \"moment\",\n \"monitor\",\n \"monkey\",\n \"monster\",\n \"month\",\n \"moon\",\n \"moral\",\n \"more\",\n \"morning\",\n \"mosquito\",\n \"mother\",\n \"motion\",\n \"motor\",\n \"mountain\",\n \"mouse\",\n \"move\",\n \"movie\",\n \"much\",\n \"muffin\",\n \"mule\",\n \"multiply\",\n \"muscle\",\n \"museum\",\n \"mushroom\",\n \"music\",\n \"must\",\n \"mutual\",\n \"myself\",\n \"mystery\",\n \"myth\",\n \"naive\",\n \"name\",\n \"napkin\",\n \"narrow\",\n \"nasty\",\n \"nation\",\n \"nature\",\n \"near\",\n \"neck\",\n \"need\",\n \"negative\",\n \"neglect\",\n \"neither\",\n \"nephew\",\n \"nerve\",\n \"nest\",\n \"net\",\n \"network\",\n \"neutral\",\n \"never\",\n \"news\",\n \"next\",\n \"nice\",\n \"night\",\n \"noble\",\n \"noise\",\n \"nominee\",\n \"noodle\",\n \"normal\",\n \"north\",\n \"nose\",\n \"notable\",\n \"note\",\n \"nothing\",\n \"notice\",\n \"novel\",\n \"now\",\n \"nuclear\",\n \"number\",\n \"nurse\",\n \"nut\",\n \"oak\",\n \"obey\",\n \"object\",\n \"oblige\",\n \"obscure\",\n \"observe\",\n \"obtain\",\n \"obvious\",\n \"occur\",\n \"ocean\",\n \"october\",\n \"odor\",\n \"off\",\n \"offer\",\n \"office\",\n \"often\",\n \"oil\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympic\",\n \"omit\",\n \"once\",\n \"one\",\n \"onion\",\n \"online\",\n \"only\",\n \"open\",\n \"opera\",\n \"opinion\",\n \"oppose\",\n \"option\",\n \"orange\",\n \"orbit\",\n \"orchard\",\n \"order\",\n \"ordinary\",\n \"organ\",\n \"orient\",\n \"original\",\n \"orphan\",\n \"ostrich\",\n \"other\",\n \"outdoor\",\n \"outer\",\n \"output\",\n \"outside\",\n \"oval\",\n \"oven\",\n \"over\",\n \"own\",\n \"owner\",\n \"oxygen\",\n \"oyster\",\n \"ozone\",\n \"pact\",\n \"paddle\",\n \"page\",\n \"pair\",\n \"palace\",\n \"palm\",\n \"panda\",\n \"panel\",\n \"panic\",\n \"panther\",\n \"paper\",\n \"parade\",\n \"parent\",\n \"park\",\n \"parrot\",\n \"party\",\n \"pass\",\n \"patch\",\n \"path\",\n \"patient\",\n \"patrol\",\n \"pattern\",\n \"pause\",\n \"pave\",\n \"payment\",\n \"peace\",\n \"peanut\",\n \"pear\",\n \"peasant\",\n \"pelican\",\n \"pen\",\n \"penalty\",\n \"pencil\",\n \"people\",\n \"pepper\",\n \"perfect\",\n \"permit\",\n \"person\",\n \"pet\",\n \"phone\",\n \"photo\",\n \"phrase\",\n \"physical\",\n \"piano\",\n \"picnic\",\n \"picture\",\n \"piece\",\n \"pig\",\n \"pigeon\",\n \"pill\",\n \"pilot\",\n \"pink\",\n \"pioneer\",\n \"pipe\",\n \"pistol\",\n \"pitch\",\n \"pizza\",\n \"place\",\n \"planet\",\n \"plastic\",\n \"plate\",\n \"play\",\n \"please\",\n \"pledge\",\n \"pluck\",\n \"plug\",\n \"plunge\",\n \"poem\",\n \"poet\",\n \"point\",\n \"polar\",\n \"pole\",\n \"police\",\n \"pond\",\n \"pony\",\n \"pool\",\n \"popular\",\n \"portion\",\n \"position\",\n \"possible\",\n \"post\",\n \"potato\",\n \"pottery\",\n \"poverty\",\n \"powder\",\n \"power\",\n \"practice\",\n \"praise\",\n \"predict\",\n \"prefer\",\n \"prepare\",\n \"present\",\n \"pretty\",\n \"prevent\",\n \"price\",\n \"pride\",\n \"primary\",\n \"print\",\n \"priority\",\n \"prison\",\n \"private\",\n \"prize\",\n \"problem\",\n \"process\",\n \"produce\",\n \"profit\",\n \"program\",\n \"project\",\n \"promote\",\n \"proof\",\n \"property\",\n \"prosper\",\n \"protect\",\n \"proud\",\n \"provide\",\n \"public\",\n \"pudding\",\n \"pull\",\n \"pulp\",\n \"pulse\",\n \"pumpkin\",\n \"punch\",\n \"pupil\",\n \"puppy\",\n \"purchase\",\n \"purity\",\n \"purpose\",\n \"purse\",\n \"push\",\n \"put\",\n \"puzzle\",\n \"pyramid\",\n \"quality\",\n \"quantum\",\n \"quarter\",\n \"question\",\n \"quick\",\n \"quit\",\n \"quiz\",\n \"quote\",\n \"rabbit\",\n \"raccoon\",\n \"race\",\n \"rack\",\n \"radar\",\n \"radio\",\n \"rail\",\n \"rain\",\n \"raise\",\n \"rally\",\n \"ramp\",\n \"ranch\",\n \"random\",\n \"range\",\n \"rapid\",\n \"rare\",\n \"rate\",\n \"rather\",\n \"raven\",\n \"raw\",\n \"razor\",\n \"ready\",\n \"real\",\n \"reason\",\n \"rebel\",\n \"rebuild\",\n \"recall\",\n \"receive\",\n \"recipe\",\n \"record\",\n \"recycle\",\n \"reduce\",\n \"reflect\",\n \"reform\",\n \"refuse\",\n \"region\",\n \"regret\",\n \"regular\",\n \"reject\",\n \"relax\",\n \"release\",\n \"relief\",\n \"rely\",\n \"remain\",\n \"remember\",\n \"remind\",\n \"remove\",\n \"render\",\n \"renew\",\n \"rent\",\n \"reopen\",\n \"repair\",\n \"repeat\",\n \"replace\",\n \"report\",\n \"require\",\n \"rescue\",\n \"resemble\",\n \"resist\",\n \"resource\",\n \"response\",\n \"result\",\n \"retire\",\n \"retreat\",\n \"return\",\n \"reunion\",\n \"reveal\",\n \"review\",\n \"reward\",\n \"rhythm\",\n \"rib\",\n \"ribbon\",\n \"rice\",\n \"rich\",\n \"ride\",\n \"ridge\",\n \"rifle\",\n \"right\",\n \"rigid\",\n \"ring\",\n \"riot\",\n \"ripple\",\n \"risk\",\n \"ritual\",\n \"rival\",\n \"river\",\n \"road\",\n \"roast\",\n \"robot\",\n \"robust\",\n \"rocket\",\n \"romance\",\n \"roof\",\n \"rookie\",\n \"room\",\n \"rose\",\n \"rotate\",\n \"rough\",\n \"round\",\n \"route\",\n \"royal\",\n \"rubber\",\n \"rude\",\n \"rug\",\n \"rule\",\n \"run\",\n \"runway\",\n \"rural\",\n \"sad\",\n \"saddle\",\n \"sadness\",\n \"safe\",\n \"sail\",\n \"salad\",\n \"salmon\",\n \"salon\",\n \"salt\",\n \"salute\",\n \"same\",\n \"sample\",\n \"sand\",\n \"satisfy\",\n \"satoshi\",\n \"sauce\",\n \"sausage\",\n \"save\",\n \"say\",\n \"scale\",\n \"scan\",\n \"scare\",\n \"scatter\",\n \"scene\",\n \"scheme\",\n \"school\",\n \"science\",\n \"scissors\",\n \"scorpion\",\n \"scout\",\n \"scrap\",\n \"screen\",\n \"script\",\n \"scrub\",\n \"sea\",\n \"search\",\n \"season\",\n \"seat\",\n \"second\",\n \"secret\",\n \"section\",\n \"security\",\n \"seed\",\n \"seek\",\n \"segment\",\n \"select\",\n \"sell\",\n \"seminar\",\n \"senior\",\n \"sense\",\n \"sentence\",\n \"series\",\n \"service\",\n \"session\",\n \"settle\",\n \"setup\",\n \"seven\",\n \"shadow\",\n \"shaft\",\n \"shallow\",\n \"share\",\n \"shed\",\n \"shell\",\n \"sheriff\",\n \"shield\",\n \"shift\",\n \"shine\",\n \"ship\",\n \"shiver\",\n \"shock\",\n \"shoe\",\n \"shoot\",\n \"shop\",\n \"short\",\n \"shoulder\",\n \"shove\",\n \"shrimp\",\n \"shrug\",\n \"shuffle\",\n \"shy\",\n \"sibling\",\n \"sick\",\n \"side\",\n \"siege\",\n \"sight\",\n \"sign\",\n \"silent\",\n \"silk\",\n \"silly\",\n \"silver\",\n \"similar\",\n \"simple\",\n \"since\",\n \"sing\",\n \"siren\",\n \"sister\",\n \"situate\",\n \"six\",\n \"size\",\n \"skate\",\n \"sketch\",\n \"ski\",\n \"skill\",\n \"skin\",\n \"skirt\",\n \"skull\",\n \"slab\",\n \"slam\",\n \"sleep\",\n \"slender\",\n \"slice\",\n \"slide\",\n \"slight\",\n \"slim\",\n \"slogan\",\n \"slot\",\n \"slow\",\n \"slush\",\n \"small\",\n \"smart\",\n \"smile\",\n \"smoke\",\n \"smooth\",\n \"snack\",\n \"snake\",\n \"snap\",\n \"sniff\",\n \"snow\",\n \"soap\",\n \"soccer\",\n \"social\",\n \"sock\",\n \"soda\",\n \"soft\",\n \"solar\",\n \"soldier\",\n \"solid\",\n \"solution\",\n \"solve\",\n \"someone\",\n \"song\",\n \"soon\",\n \"sorry\",\n \"sort\",\n \"soul\",\n \"sound\",\n \"soup\",\n \"source\",\n \"south\",\n \"space\",\n \"spare\",\n \"spatial\",\n \"spawn\",\n \"speak\",\n \"special\",\n \"speed\",\n \"spell\",\n \"spend\",\n \"sphere\",\n \"spice\",\n \"spider\",\n \"spike\",\n \"spin\",\n \"spirit\",\n \"split\",\n \"spoil\",\n \"sponsor\",\n \"spoon\",\n \"sport\",\n \"spot\",\n \"spray\",\n \"spread\",\n \"spring\",\n \"spy\",\n \"square\",\n \"squeeze\",\n \"squirrel\",\n \"stable\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"stairs\",\n \"stamp\",\n \"stand\",\n \"start\",\n \"state\",\n \"stay\",\n \"steak\",\n \"steel\",\n \"stem\",\n \"step\",\n \"stereo\",\n \"stick\",\n \"still\",\n \"sting\",\n \"stock\",\n \"stomach\",\n \"stone\",\n \"stool\",\n \"story\",\n \"stove\",\n \"strategy\",\n \"street\",\n \"strike\",\n \"strong\",\n \"struggle\",\n \"student\",\n \"stuff\",\n \"stumble\",\n \"style\",\n \"subject\",\n \"submit\",\n \"subway\",\n \"success\",\n \"such\",\n \"sudden\",\n \"suffer\",\n \"sugar\",\n \"suggest\",\n \"suit\",\n \"summer\",\n \"sun\",\n \"sunny\",\n \"sunset\",\n \"super\",\n \"supply\",\n \"supreme\",\n \"sure\",\n \"surface\",\n \"surge\",\n \"surprise\",\n \"surround\",\n \"survey\",\n \"suspect\",\n \"sustain\",\n \"swallow\",\n \"swamp\",\n \"swap\",\n \"swarm\",\n \"swear\",\n \"sweet\",\n \"swift\",\n \"swim\",\n \"swing\",\n \"switch\",\n \"sword\",\n \"symbol\",\n \"symptom\",\n \"syrup\",\n \"system\",\n \"table\",\n \"tackle\",\n \"tag\",\n \"tail\",\n \"talent\",\n \"talk\",\n \"tank\",\n \"tape\",\n \"target\",\n \"task\",\n \"taste\",\n \"tattoo\",\n \"taxi\",\n \"teach\",\n \"team\",\n \"tell\",\n \"ten\",\n \"tenant\",\n \"tennis\",\n \"tent\",\n \"term\",\n \"test\",\n \"text\",\n \"thank\",\n \"that\",\n \"theme\",\n \"then\",\n \"theory\",\n \"there\",\n \"they\",\n \"thing\",\n \"this\",\n \"thought\",\n \"three\",\n \"thrive\",\n \"throw\",\n \"thumb\",\n \"thunder\",\n \"ticket\",\n \"tide\",\n \"tiger\",\n \"tilt\",\n \"timber\",\n \"time\",\n \"tiny\",\n \"tip\",\n \"tired\",\n \"tissue\",\n \"title\",\n \"toast\",\n \"tobacco\",\n \"today\",\n \"toddler\",\n \"toe\",\n \"together\",\n \"toilet\",\n \"token\",\n \"tomato\",\n \"tomorrow\",\n \"tone\",\n \"tongue\",\n \"tonight\",\n \"tool\",\n \"tooth\",\n \"top\",\n \"topic\",\n \"topple\",\n \"torch\",\n \"tornado\",\n \"tortoise\",\n \"toss\",\n \"total\",\n \"tourist\",\n \"toward\",\n \"tower\",\n \"town\",\n \"toy\",\n \"track\",\n \"trade\",\n \"traffic\",\n \"tragic\",\n \"train\",\n \"transfer\",\n \"trap\",\n \"trash\",\n \"travel\",\n \"tray\",\n \"treat\",\n \"tree\",\n \"trend\",\n \"trial\",\n \"tribe\",\n \"trick\",\n \"trigger\",\n \"trim\",\n \"trip\",\n \"trophy\",\n \"trouble\",\n \"truck\",\n \"true\",\n \"truly\",\n \"trumpet\",\n \"trust\",\n \"truth\",\n \"try\",\n \"tube\",\n \"tuition\",\n \"tumble\",\n \"tuna\",\n \"tunnel\",\n \"turkey\",\n \"turn\",\n \"turtle\",\n \"twelve\",\n \"twenty\",\n \"twice\",\n \"twin\",\n \"twist\",\n \"two\",\n \"type\",\n \"typical\",\n \"ugly\",\n \"umbrella\",\n \"unable\",\n \"unaware\",\n \"uncle\",\n \"uncover\",\n \"under\",\n \"undo\",\n \"unfair\",\n \"unfold\",\n \"unhappy\",\n \"uniform\",\n \"unique\",\n \"unit\",\n \"universe\",\n \"unknown\",\n \"unlock\",\n \"until\",\n \"unusual\",\n \"unveil\",\n \"update\",\n \"upgrade\",\n \"uphold\",\n \"upon\",\n \"upper\",\n \"upset\",\n \"urban\",\n \"urge\",\n \"usage\",\n \"use\",\n \"used\",\n \"useful\",\n \"useless\",\n \"usual\",\n \"utility\",\n \"vacant\",\n \"vacuum\",\n \"vague\",\n \"valid\",\n \"valley\",\n \"valve\",\n \"van\",\n \"vanish\",\n \"vapor\",\n \"various\",\n \"vast\",\n \"vault\",\n \"vehicle\",\n \"velvet\",\n \"vendor\",\n \"venture\",\n \"venue\",\n \"verb\",\n \"verify\",\n \"version\",\n \"very\",\n \"vessel\",\n \"veteran\",\n \"viable\",\n \"vibrant\",\n \"vicious\",\n \"victory\",\n \"video\",\n \"view\",\n \"village\",\n \"vintage\",\n \"violin\",\n \"virtual\",\n \"virus\",\n \"visa\",\n \"visit\",\n \"visual\",\n \"vital\",\n \"vivid\",\n \"vocal\",\n \"voice\",\n \"void\",\n \"volcano\",\n \"volume\",\n \"vote\",\n \"voyage\",\n \"wage\",\n \"wagon\",\n \"wait\",\n \"walk\",\n \"wall\",\n \"walnut\",\n \"want\",\n \"warfare\",\n \"warm\",\n \"warrior\",\n \"wash\",\n \"wasp\",\n \"waste\",\n \"water\",\n \"wave\",\n \"way\",\n \"wealth\",\n \"weapon\",\n \"wear\",\n \"weasel\",\n \"weather\",\n \"web\",\n \"wedding\",\n \"weekend\",\n \"weird\",\n \"welcome\",\n \"west\",\n \"wet\",\n \"whale\",\n \"what\",\n \"wheat\",\n \"wheel\",\n \"when\",\n \"where\",\n \"whip\",\n \"whisper\",\n \"wide\",\n \"width\",\n \"wife\",\n \"wild\",\n \"will\",\n \"win\",\n \"window\",\n \"wine\",\n \"wing\",\n \"wink\",\n \"winner\",\n \"winter\",\n \"wire\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"witness\",\n \"wolf\",\n \"woman\",\n \"wonder\",\n \"wood\",\n \"wool\",\n \"word\",\n \"work\",\n \"world\",\n \"worry\",\n \"worth\",\n \"wrap\",\n \"wreck\",\n \"wrestle\",\n \"wrist\",\n \"write\",\n \"wrong\",\n \"yard\",\n \"year\",\n \"yellow\",\n \"you\",\n \"young\",\n \"youth\",\n \"zebra\",\n \"zero\",\n \"zone\",\n \"zoo\"\n]\n\n},{}],53:[function(require,module,exports){\nmodule.exports=[\n \"あいこくしん\",\n \"あいさつ\",\n \"あいだ\",\n \"あおぞら\",\n \"あかちゃん\",\n \"あきる\",\n \"あけがた\",\n \"あける\",\n \"あこがれる\",\n \"あさい\",\n \"あさひ\",\n \"あしあと\",\n \"あじわう\",\n \"あずかる\",\n \"あずき\",\n \"あそぶ\",\n \"あたえる\",\n \"あたためる\",\n \"あたりまえ\",\n \"あたる\",\n \"あつい\",\n \"あつかう\",\n \"あっしゅく\",\n \"あつまり\",\n \"あつめる\",\n \"あてな\",\n \"あてはまる\",\n \"あひる\",\n \"あぶら\",\n \"あぶる\",\n \"あふれる\",\n \"あまい\",\n \"あまど\",\n \"あまやかす\",\n \"あまり\",\n \"あみもの\",\n \"あめりか\",\n \"あやまる\",\n \"あゆむ\",\n \"あらいぐま\",\n \"あらし\",\n \"あらすじ\",\n \"あらためる\",\n \"あらゆる\",\n \"あらわす\",\n \"ありがとう\",\n \"あわせる\",\n \"あわてる\",\n \"あんい\",\n \"あんがい\",\n \"あんこ\",\n \"あんぜん\",\n \"あんてい\",\n \"あんない\",\n \"あんまり\",\n \"いいだす\",\n \"いおん\",\n \"いがい\",\n \"いがく\",\n \"いきおい\",\n \"いきなり\",\n \"いきもの\",\n \"いきる\",\n \"いくじ\",\n \"いくぶん\",\n \"いけばな\",\n \"いけん\",\n \"いこう\",\n \"いこく\",\n \"いこつ\",\n \"いさましい\",\n \"いさん\",\n \"いしき\",\n \"いじゅう\",\n \"いじょう\",\n \"いじわる\",\n \"いずみ\",\n \"いずれ\",\n \"いせい\",\n \"いせえび\",\n \"いせかい\",\n \"いせき\",\n \"いぜん\",\n \"いそうろう\",\n \"いそがしい\",\n \"いだい\",\n \"いだく\",\n \"いたずら\",\n \"いたみ\",\n \"いたりあ\",\n \"いちおう\",\n \"いちじ\",\n \"いちど\",\n \"いちば\",\n \"いちぶ\",\n \"いちりゅう\",\n \"いつか\",\n \"いっしゅん\",\n \"いっせい\",\n \"いっそう\",\n \"いったん\",\n \"いっち\",\n \"いってい\",\n \"いっぽう\",\n \"いてざ\",\n \"いてん\",\n \"いどう\",\n \"いとこ\",\n \"いない\",\n \"いなか\",\n \"いねむり\",\n \"いのち\",\n \"いのる\",\n \"いはつ\",\n \"いばる\",\n \"いはん\",\n \"いびき\",\n \"いひん\",\n \"いふく\",\n \"いへん\",\n \"いほう\",\n \"いみん\",\n \"いもうと\",\n \"いもたれ\",\n \"いもり\",\n \"いやがる\",\n \"いやす\",\n \"いよかん\",\n \"いよく\",\n \"いらい\",\n \"いらすと\",\n \"いりぐち\",\n \"いりょう\",\n \"いれい\",\n \"いれもの\",\n \"いれる\",\n \"いろえんぴつ\",\n \"いわい\",\n \"いわう\",\n \"いわかん\",\n \"いわば\",\n \"いわゆる\",\n \"いんげんまめ\",\n \"いんさつ\",\n \"いんしょう\",\n \"いんよう\",\n \"うえき\",\n \"うえる\",\n \"うおざ\",\n \"うがい\",\n \"うかぶ\",\n \"うかべる\",\n \"うきわ\",\n \"うくらいな\",\n \"うくれれ\",\n \"うけたまわる\",\n \"うけつけ\",\n \"うけとる\",\n \"うけもつ\",\n \"うける\",\n \"うごかす\",\n \"うごく\",\n \"うこん\",\n \"うさぎ\",\n \"うしなう\",\n \"うしろがみ\",\n \"うすい\",\n \"うすぎ\",\n \"うすぐらい\",\n \"うすめる\",\n \"うせつ\",\n \"うちあわせ\",\n \"うちがわ\",\n \"うちき\",\n \"うちゅう\",\n \"うっかり\",\n \"うつくしい\",\n \"うったえる\",\n \"うつる\",\n \"うどん\",\n \"うなぎ\",\n \"うなじ\",\n \"うなずく\",\n \"うなる\",\n \"うねる\",\n \"うのう\",\n \"うぶげ\",\n \"うぶごえ\",\n \"うまれる\",\n \"うめる\",\n \"うもう\",\n \"うやまう\",\n \"うよく\",\n \"うらがえす\",\n \"うらぐち\",\n \"うらない\",\n \"うりあげ\",\n \"うりきれ\",\n \"うるさい\",\n \"うれしい\",\n \"うれゆき\",\n \"うれる\",\n \"うろこ\",\n \"うわき\",\n \"うわさ\",\n \"うんこう\",\n \"うんちん\",\n \"うんてん\",\n \"うんどう\",\n \"えいえん\",\n \"えいが\",\n \"えいきょう\",\n \"えいご\",\n \"えいせい\",\n \"えいぶん\",\n \"えいよう\",\n \"えいわ\",\n \"えおり\",\n \"えがお\",\n \"えがく\",\n \"えきたい\",\n \"えくせる\",\n \"えしゃく\",\n \"えすて\",\n \"えつらん\",\n \"えのぐ\",\n \"えほうまき\",\n \"えほん\",\n \"えまき\",\n \"えもじ\",\n \"えもの\",\n \"えらい\",\n \"えらぶ\",\n \"えりあ\",\n \"えんえん\",\n \"えんかい\",\n \"えんぎ\",\n \"えんげき\",\n \"えんしゅう\",\n \"えんぜつ\",\n \"えんそく\",\n \"えんちょう\",\n \"えんとつ\",\n \"おいかける\",\n \"おいこす\",\n \"おいしい\",\n \"おいつく\",\n \"おうえん\",\n \"おうさま\",\n \"おうじ\",\n \"おうせつ\",\n \"おうたい\",\n \"おうふく\",\n \"おうべい\",\n \"おうよう\",\n \"おえる\",\n \"おおい\",\n \"おおう\",\n \"おおどおり\",\n \"おおや\",\n \"おおよそ\",\n \"おかえり\",\n \"おかず\",\n \"おがむ\",\n \"おかわり\",\n \"おぎなう\",\n \"おきる\",\n \"おくさま\",\n \"おくじょう\",\n \"おくりがな\",\n \"おくる\",\n \"おくれる\",\n \"おこす\",\n \"おこなう\",\n \"おこる\",\n \"おさえる\",\n \"おさない\",\n \"おさめる\",\n \"おしいれ\",\n \"おしえる\",\n \"おじぎ\",\n \"おじさん\",\n \"おしゃれ\",\n \"おそらく\",\n \"おそわる\",\n \"おたがい\",\n \"おたく\",\n \"おだやか\",\n \"おちつく\",\n \"おっと\",\n \"おつり\",\n \"おでかけ\",\n \"おとしもの\",\n \"おとなしい\",\n \"おどり\",\n \"おどろかす\",\n \"おばさん\",\n \"おまいり\",\n \"おめでとう\",\n \"おもいで\",\n \"おもう\",\n \"おもたい\",\n \"おもちゃ\",\n \"おやつ\",\n \"おやゆび\",\n \"およぼす\",\n \"おらんだ\",\n \"おろす\",\n \"おんがく\",\n \"おんけい\",\n \"おんしゃ\",\n \"おんせん\",\n \"おんだん\",\n \"おんちゅう\",\n \"おんどけい\",\n \"かあつ\",\n \"かいが\",\n \"がいき\",\n \"がいけん\",\n \"がいこう\",\n \"かいさつ\",\n \"かいしゃ\",\n \"かいすいよく\",\n \"かいぜん\",\n \"かいぞうど\",\n \"かいつう\",\n \"かいてん\",\n \"かいとう\",\n \"かいふく\",\n \"がいへき\",\n \"かいほう\",\n \"かいよう\",\n \"がいらい\",\n \"かいわ\",\n \"かえる\",\n \"かおり\",\n \"かかえる\",\n \"かがく\",\n \"かがし\",\n \"かがみ\",\n \"かくご\",\n \"かくとく\",\n \"かざる\",\n \"がぞう\",\n \"かたい\",\n \"かたち\",\n \"がちょう\",\n \"がっきゅう\",\n \"がっこう\",\n \"がっさん\",\n \"がっしょう\",\n \"かなざわし\",\n \"かのう\",\n \"がはく\",\n \"かぶか\",\n \"かほう\",\n \"かほご\",\n \"かまう\",\n \"かまぼこ\",\n \"かめれおん\",\n \"かゆい\",\n \"かようび\",\n \"からい\",\n \"かるい\",\n \"かろう\",\n \"かわく\",\n \"かわら\",\n \"がんか\",\n \"かんけい\",\n \"かんこう\",\n \"かんしゃ\",\n \"かんそう\",\n \"かんたん\",\n \"かんち\",\n \"がんばる\",\n \"きあい\",\n \"きあつ\",\n \"きいろ\",\n \"ぎいん\",\n \"きうい\",\n \"きうん\",\n \"きえる\",\n \"きおう\",\n \"きおく\",\n \"きおち\",\n \"きおん\",\n \"きかい\",\n \"きかく\",\n \"きかんしゃ\",\n \"ききて\",\n \"きくばり\",\n \"きくらげ\",\n \"きけんせい\",\n \"きこう\",\n \"きこえる\",\n \"きこく\",\n \"きさい\",\n \"きさく\",\n \"きさま\",\n \"きさらぎ\",\n \"ぎじかがく\",\n \"ぎしき\",\n \"ぎじたいけん\",\n \"ぎじにってい\",\n \"ぎじゅつしゃ\",\n \"きすう\",\n \"きせい\",\n \"きせき\",\n \"きせつ\",\n \"きそう\",\n \"きぞく\",\n \"きぞん\",\n \"きたえる\",\n \"きちょう\",\n \"きつえん\",\n \"ぎっちり\",\n \"きつつき\",\n \"きつね\",\n \"きてい\",\n \"きどう\",\n \"きどく\",\n \"きない\",\n \"きなが\",\n \"きなこ\",\n \"きぬごし\",\n \"きねん\",\n \"きのう\",\n \"きのした\",\n \"きはく\",\n \"きびしい\",\n \"きひん\",\n \"きふく\",\n \"きぶん\",\n \"きぼう\",\n \"きほん\",\n \"きまる\",\n \"きみつ\",\n \"きむずかしい\",\n \"きめる\",\n \"きもだめし\",\n \"きもち\",\n \"きもの\",\n \"きゃく\",\n \"きやく\",\n \"ぎゅうにく\",\n \"きよう\",\n \"きょうりゅう\",\n \"きらい\",\n \"きらく\",\n \"きりん\",\n \"きれい\",\n \"きれつ\",\n \"きろく\",\n \"ぎろん\",\n \"きわめる\",\n \"ぎんいろ\",\n \"きんかくじ\",\n \"きんじょ\",\n \"きんようび\",\n \"ぐあい\",\n \"くいず\",\n \"くうかん\",\n \"くうき\",\n \"くうぐん\",\n \"くうこう\",\n \"ぐうせい\",\n \"くうそう\",\n \"ぐうたら\",\n \"くうふく\",\n \"くうぼ\",\n \"くかん\",\n \"くきょう\",\n \"くげん\",\n \"ぐこう\",\n \"くさい\",\n \"くさき\",\n \"くさばな\",\n \"くさる\",\n \"くしゃみ\",\n \"くしょう\",\n \"くすのき\",\n \"くすりゆび\",\n \"くせげ\",\n \"くせん\",\n \"ぐたいてき\",\n \"くださる\",\n \"くたびれる\",\n \"くちこみ\",\n \"くちさき\",\n \"くつした\",\n \"ぐっすり\",\n \"くつろぐ\",\n \"くとうてん\",\n \"くどく\",\n \"くなん\",\n \"くねくね\",\n \"くのう\",\n \"くふう\",\n \"くみあわせ\",\n \"くみたてる\",\n \"くめる\",\n \"くやくしょ\",\n \"くらす\",\n \"くらべる\",\n \"くるま\",\n \"くれる\",\n \"くろう\",\n \"くわしい\",\n \"ぐんかん\",\n \"ぐんしょく\",\n \"ぐんたい\",\n \"ぐんて\",\n \"けあな\",\n \"けいかく\",\n \"けいけん\",\n \"けいこ\",\n \"けいさつ\",\n \"げいじゅつ\",\n \"けいたい\",\n \"げいのうじん\",\n \"けいれき\",\n \"けいろ\",\n \"けおとす\",\n \"けおりもの\",\n \"げきか\",\n \"げきげん\",\n \"げきだん\",\n \"げきちん\",\n \"げきとつ\",\n \"げきは\",\n \"げきやく\",\n \"げこう\",\n \"げこくじょう\",\n \"げざい\",\n \"けさき\",\n \"げざん\",\n \"けしき\",\n \"けしごむ\",\n \"けしょう\",\n \"げすと\",\n \"けたば\",\n \"けちゃっぷ\",\n \"けちらす\",\n \"けつあつ\",\n \"けつい\",\n \"けつえき\",\n \"けっこん\",\n \"けつじょ\",\n \"けっせき\",\n \"けってい\",\n \"けつまつ\",\n \"げつようび\",\n \"げつれい\",\n \"けつろん\",\n \"げどく\",\n \"けとばす\",\n \"けとる\",\n \"けなげ\",\n \"けなす\",\n \"けなみ\",\n \"けぬき\",\n \"げねつ\",\n \"けねん\",\n \"けはい\",\n \"げひん\",\n \"けぶかい\",\n \"げぼく\",\n \"けまり\",\n \"けみかる\",\n \"けむし\",\n \"けむり\",\n \"けもの\",\n \"けらい\",\n \"けろけろ\",\n \"けわしい\",\n \"けんい\",\n \"けんえつ\",\n \"けんお\",\n \"けんか\",\n \"げんき\",\n \"けんげん\",\n \"けんこう\",\n \"けんさく\",\n \"けんしゅう\",\n \"けんすう\",\n \"げんそう\",\n \"けんちく\",\n \"けんてい\",\n \"けんとう\",\n \"けんない\",\n \"けんにん\",\n \"げんぶつ\",\n \"けんま\",\n \"けんみん\",\n \"けんめい\",\n \"けんらん\",\n \"けんり\",\n \"こあくま\",\n \"こいぬ\",\n \"こいびと\",\n \"ごうい\",\n \"こうえん\",\n \"こうおん\",\n \"こうかん\",\n \"ごうきゅう\",\n \"ごうけい\",\n \"こうこう\",\n \"こうさい\",\n \"こうじ\",\n \"こうすい\",\n \"ごうせい\",\n \"こうそく\",\n \"こうたい\",\n \"こうちゃ\",\n \"こうつう\",\n \"こうてい\",\n \"こうどう\",\n \"こうない\",\n \"こうはい\",\n \"ごうほう\",\n \"ごうまん\",\n \"こうもく\",\n \"こうりつ\",\n \"こえる\",\n \"こおり\",\n \"ごかい\",\n \"ごがつ\",\n \"ごかん\",\n \"こくご\",\n \"こくさい\",\n \"こくとう\",\n \"こくない\",\n \"こくはく\",\n \"こぐま\",\n \"こけい\",\n \"こける\",\n \"ここのか\",\n \"こころ\",\n \"こさめ\",\n \"こしつ\",\n \"こすう\",\n \"こせい\",\n \"こせき\",\n \"こぜん\",\n \"こそだて\",\n \"こたい\",\n \"こたえる\",\n \"こたつ\",\n \"こちょう\",\n \"こっか\",\n \"こつこつ\",\n \"こつばん\",\n \"こつぶ\",\n \"こてい\",\n \"こてん\",\n \"ことがら\",\n \"ことし\",\n \"ことば\",\n \"ことり\",\n \"こなごな\",\n \"こねこね\",\n \"このまま\",\n \"このみ\",\n \"このよ\",\n \"ごはん\",\n \"こひつじ\",\n \"こふう\",\n \"こふん\",\n \"こぼれる\",\n \"ごまあぶら\",\n \"こまかい\",\n \"ごますり\",\n \"こまつな\",\n \"こまる\",\n \"こむぎこ\",\n \"こもじ\",\n \"こもち\",\n \"こもの\",\n \"こもん\",\n \"こやく\",\n \"こやま\",\n \"こゆう\",\n \"こゆび\",\n \"こよい\",\n \"こよう\",\n \"こりる\",\n \"これくしょん\",\n \"ころっけ\",\n \"こわもて\",\n \"こわれる\",\n \"こんいん\",\n \"こんかい\",\n \"こんき\",\n \"こんしゅう\",\n \"こんすい\",\n \"こんだて\",\n \"こんとん\",\n \"こんなん\",\n \"こんびに\",\n \"こんぽん\",\n \"こんまけ\",\n \"こんや\",\n \"こんれい\",\n \"こんわく\",\n \"ざいえき\",\n \"さいかい\",\n \"さいきん\",\n \"ざいげん\",\n \"ざいこ\",\n \"さいしょ\",\n \"さいせい\",\n \"ざいたく\",\n \"ざいちゅう\",\n \"さいてき\",\n \"ざいりょう\",\n \"さうな\",\n \"さかいし\",\n \"さがす\",\n \"さかな\",\n \"さかみち\",\n \"さがる\",\n \"さぎょう\",\n \"さくし\",\n \"さくひん\",\n \"さくら\",\n \"さこく\",\n \"さこつ\",\n \"さずかる\",\n \"ざせき\",\n \"さたん\",\n \"さつえい\",\n \"ざつおん\",\n \"ざっか\",\n \"ざつがく\",\n \"さっきょく\",\n \"ざっし\",\n \"さつじん\",\n \"ざっそう\",\n \"さつたば\",\n \"さつまいも\",\n \"さてい\",\n \"さといも\",\n \"さとう\",\n \"さとおや\",\n \"さとし\",\n \"さとる\",\n \"さのう\",\n \"さばく\",\n \"さびしい\",\n \"さべつ\",\n \"さほう\",\n \"さほど\",\n \"さます\",\n \"さみしい\",\n \"さみだれ\",\n \"さむけ\",\n \"さめる\",\n \"さやえんどう\",\n \"さゆう\",\n \"さよう\",\n \"さよく\",\n \"さらだ\",\n \"ざるそば\",\n \"さわやか\",\n \"さわる\",\n \"さんいん\",\n \"さんか\",\n \"さんきゃく\",\n \"さんこう\",\n \"さんさい\",\n \"ざんしょ\",\n \"さんすう\",\n \"さんせい\",\n \"さんそ\",\n \"さんち\",\n \"さんま\",\n \"さんみ\",\n \"さんらん\",\n \"しあい\",\n \"しあげ\",\n \"しあさって\",\n \"しあわせ\",\n \"しいく\",\n \"しいん\",\n \"しうち\",\n \"しえい\",\n \"しおけ\",\n \"しかい\",\n \"しかく\",\n \"じかん\",\n \"しごと\",\n \"しすう\",\n \"じだい\",\n \"したうけ\",\n \"したぎ\",\n \"したて\",\n \"したみ\",\n \"しちょう\",\n \"しちりん\",\n \"しっかり\",\n \"しつじ\",\n \"しつもん\",\n \"してい\",\n \"してき\",\n \"してつ\",\n \"じてん\",\n \"じどう\",\n \"しなぎれ\",\n \"しなもの\",\n \"しなん\",\n \"しねま\",\n \"しねん\",\n \"しのぐ\",\n \"しのぶ\",\n \"しはい\",\n \"しばかり\",\n \"しはつ\",\n \"しはらい\",\n \"しはん\",\n \"しひょう\",\n \"しふく\",\n \"じぶん\",\n \"しへい\",\n \"しほう\",\n \"しほん\",\n \"しまう\",\n \"しまる\",\n \"しみん\",\n \"しむける\",\n \"じむしょ\",\n \"しめい\",\n \"しめる\",\n \"しもん\",\n \"しゃいん\",\n \"しゃうん\",\n \"しゃおん\",\n \"じゃがいも\",\n \"しやくしょ\",\n \"しゃくほう\",\n \"しゃけん\",\n \"しゃこ\",\n \"しゃざい\",\n \"しゃしん\",\n \"しゃせん\",\n \"しゃそう\",\n \"しゃたい\",\n \"しゃちょう\",\n \"しゃっきん\",\n \"じゃま\",\n \"しゃりん\",\n \"しゃれい\",\n \"じゆう\",\n \"じゅうしょ\",\n \"しゅくはく\",\n \"じゅしん\",\n \"しゅっせき\",\n \"しゅみ\",\n \"しゅらば\",\n \"じゅんばん\",\n \"しょうかい\",\n \"しょくたく\",\n \"しょっけん\",\n \"しょどう\",\n \"しょもつ\",\n \"しらせる\",\n \"しらべる\",\n \"しんか\",\n \"しんこう\",\n \"じんじゃ\",\n \"しんせいじ\",\n \"しんちく\",\n \"しんりん\",\n \"すあげ\",\n \"すあし\",\n \"すあな\",\n \"ずあん\",\n \"すいえい\",\n \"すいか\",\n \"すいとう\",\n \"ずいぶん\",\n \"すいようび\",\n \"すうがく\",\n \"すうじつ\",\n \"すうせん\",\n \"すおどり\",\n \"すきま\",\n \"すくう\",\n \"すくない\",\n \"すける\",\n \"すごい\",\n \"すこし\",\n \"ずさん\",\n \"すずしい\",\n \"すすむ\",\n \"すすめる\",\n \"すっかり\",\n \"ずっしり\",\n \"ずっと\",\n \"すてき\",\n \"すてる\",\n \"すねる\",\n \"すのこ\",\n \"すはだ\",\n \"すばらしい\",\n \"ずひょう\",\n \"ずぶぬれ\",\n \"すぶり\",\n \"すふれ\",\n \"すべて\",\n \"すべる\",\n \"ずほう\",\n \"すぼん\",\n \"すまい\",\n \"すめし\",\n \"すもう\",\n \"すやき\",\n \"すらすら\",\n \"するめ\",\n \"すれちがう\",\n \"すろっと\",\n \"すわる\",\n \"すんぜん\",\n \"すんぽう\",\n \"せあぶら\",\n \"せいかつ\",\n \"せいげん\",\n \"せいじ\",\n \"せいよう\",\n \"せおう\",\n \"せかいかん\",\n \"せきにん\",\n \"せきむ\",\n \"せきゆ\",\n \"せきらんうん\",\n \"せけん\",\n \"せこう\",\n \"せすじ\",\n \"せたい\",\n \"せたけ\",\n \"せっかく\",\n \"せっきゃく\",\n \"ぜっく\",\n \"せっけん\",\n \"せっこつ\",\n \"せっさたくま\",\n \"せつぞく\",\n \"せつだん\",\n \"せつでん\",\n \"せっぱん\",\n \"せつび\",\n \"せつぶん\",\n \"せつめい\",\n \"せつりつ\",\n \"せなか\",\n \"せのび\",\n \"せはば\",\n \"せびろ\",\n \"せぼね\",\n \"せまい\",\n \"せまる\",\n \"せめる\",\n \"せもたれ\",\n \"せりふ\",\n \"ぜんあく\",\n \"せんい\",\n \"せんえい\",\n \"せんか\",\n \"せんきょ\",\n \"せんく\",\n \"せんげん\",\n \"ぜんご\",\n \"せんさい\",\n \"せんしゅ\",\n \"せんすい\",\n \"せんせい\",\n \"せんぞ\",\n \"せんたく\",\n \"せんちょう\",\n \"せんてい\",\n \"せんとう\",\n \"せんぬき\",\n \"せんねん\",\n \"せんぱい\",\n \"ぜんぶ\",\n \"ぜんぽう\",\n \"せんむ\",\n \"せんめんじょ\",\n \"せんもん\",\n \"せんやく\",\n \"せんゆう\",\n \"せんよう\",\n \"ぜんら\",\n \"ぜんりゃく\",\n \"せんれい\",\n \"せんろ\",\n \"そあく\",\n \"そいとげる\",\n \"そいね\",\n \"そうがんきょう\",\n \"そうき\",\n \"そうご\",\n \"そうしん\",\n \"そうだん\",\n \"そうなん\",\n \"そうび\",\n \"そうめん\",\n \"そうり\",\n \"そえもの\",\n \"そえん\",\n \"そがい\",\n \"そげき\",\n \"そこう\",\n \"そこそこ\",\n \"そざい\",\n \"そしな\",\n \"そせい\",\n \"そせん\",\n \"そそぐ\",\n \"そだてる\",\n \"そつう\",\n \"そつえん\",\n \"そっかん\",\n \"そつぎょう\",\n \"そっけつ\",\n \"そっこう\",\n \"そっせん\",\n \"そっと\",\n \"そとがわ\",\n \"そとづら\",\n \"そなえる\",\n \"そなた\",\n \"そふぼ\",\n \"そぼく\",\n \"そぼろ\",\n \"そまつ\",\n \"そまる\",\n \"そむく\",\n \"そむりえ\",\n \"そめる\",\n \"そもそも\",\n \"そよかぜ\",\n \"そらまめ\",\n \"そろう\",\n \"そんかい\",\n \"そんけい\",\n \"そんざい\",\n \"そんしつ\",\n \"そんぞく\",\n \"そんちょう\",\n \"ぞんび\",\n \"ぞんぶん\",\n \"そんみん\",\n \"たあい\",\n \"たいいん\",\n \"たいうん\",\n \"たいえき\",\n \"たいおう\",\n \"だいがく\",\n \"たいき\",\n \"たいぐう\",\n \"たいけん\",\n \"たいこ\",\n \"たいざい\",\n \"だいじょうぶ\",\n \"だいすき\",\n \"たいせつ\",\n \"たいそう\",\n \"だいたい\",\n \"たいちょう\",\n \"たいてい\",\n \"だいどころ\",\n \"たいない\",\n \"たいねつ\",\n \"たいのう\",\n \"たいはん\",\n \"だいひょう\",\n \"たいふう\",\n \"たいへん\",\n \"たいほ\",\n \"たいまつばな\",\n \"たいみんぐ\",\n \"たいむ\",\n \"たいめん\",\n \"たいやき\",\n \"たいよう\",\n \"たいら\",\n \"たいりょく\",\n \"たいる\",\n \"たいわん\",\n \"たうえ\",\n \"たえる\",\n \"たおす\",\n \"たおる\",\n \"たおれる\",\n \"たかい\",\n \"たかね\",\n \"たきび\",\n \"たくさん\",\n \"たこく\",\n \"たこやき\",\n \"たさい\",\n \"たしざん\",\n \"だじゃれ\",\n \"たすける\",\n \"たずさわる\",\n \"たそがれ\",\n \"たたかう\",\n \"たたく\",\n \"ただしい\",\n \"たたみ\",\n \"たちばな\",\n \"だっかい\",\n \"だっきゃく\",\n \"だっこ\",\n \"だっしゅつ\",\n \"だったい\",\n \"たてる\",\n \"たとえる\",\n \"たなばた\",\n \"たにん\",\n \"たぬき\",\n \"たのしみ\",\n \"たはつ\",\n \"たぶん\",\n \"たべる\",\n \"たぼう\",\n \"たまご\",\n \"たまる\",\n \"だむる\",\n \"ためいき\",\n \"ためす\",\n \"ためる\",\n \"たもつ\",\n \"たやすい\",\n \"たよる\",\n \"たらす\",\n \"たりきほんがん\",\n \"たりょう\",\n \"たりる\",\n \"たると\",\n \"たれる\",\n \"たれんと\",\n \"たろっと\",\n \"たわむれる\",\n \"だんあつ\",\n \"たんい\",\n \"たんおん\",\n \"たんか\",\n \"たんき\",\n \"たんけん\",\n \"たんご\",\n \"たんさん\",\n \"たんじょうび\",\n \"だんせい\",\n \"たんそく\",\n \"たんたい\",\n \"だんち\",\n \"たんてい\",\n \"たんとう\",\n \"だんな\",\n \"たんにん\",\n \"だんねつ\",\n \"たんのう\",\n \"たんぴん\",\n \"だんぼう\",\n \"たんまつ\",\n \"たんめい\",\n \"だんれつ\",\n \"だんろ\",\n \"だんわ\",\n \"ちあい\",\n \"ちあん\",\n \"ちいき\",\n \"ちいさい\",\n \"ちえん\",\n \"ちかい\",\n \"ちから\",\n \"ちきゅう\",\n \"ちきん\",\n \"ちけいず\",\n \"ちけん\",\n \"ちこく\",\n \"ちさい\",\n \"ちしき\",\n \"ちしりょう\",\n \"ちせい\",\n \"ちそう\",\n \"ちたい\",\n \"ちたん\",\n \"ちちおや\",\n \"ちつじょ\",\n \"ちてき\",\n \"ちてん\",\n \"ちぬき\",\n \"ちぬり\",\n \"ちのう\",\n \"ちひょう\",\n \"ちへいせん\",\n \"ちほう\",\n \"ちまた\",\n \"ちみつ\",\n \"ちみどろ\",\n \"ちめいど\",\n \"ちゃんこなべ\",\n \"ちゅうい\",\n \"ちゆりょく\",\n \"ちょうし\",\n \"ちょさくけん\",\n \"ちらし\",\n \"ちらみ\",\n \"ちりがみ\",\n \"ちりょう\",\n \"ちるど\",\n \"ちわわ\",\n \"ちんたい\",\n \"ちんもく\",\n \"ついか\",\n \"ついたち\",\n \"つうか\",\n \"つうじょう\",\n \"つうはん\",\n \"つうわ\",\n \"つかう\",\n \"つかれる\",\n \"つくね\",\n \"つくる\",\n \"つけね\",\n \"つける\",\n \"つごう\",\n \"つたえる\",\n \"つづく\",\n \"つつじ\",\n \"つつむ\",\n \"つとめる\",\n \"つながる\",\n \"つなみ\",\n \"つねづね\",\n \"つのる\",\n \"つぶす\",\n \"つまらない\",\n \"つまる\",\n \"つみき\",\n \"つめたい\",\n \"つもり\",\n \"つもる\",\n \"つよい\",\n \"つるぼ\",\n \"つるみく\",\n \"つわもの\",\n \"つわり\",\n \"てあし\",\n \"てあて\",\n \"てあみ\",\n \"ていおん\",\n \"ていか\",\n \"ていき\",\n \"ていけい\",\n \"ていこく\",\n \"ていさつ\",\n \"ていし\",\n \"ていせい\",\n \"ていたい\",\n \"ていど\",\n \"ていねい\",\n \"ていひょう\",\n \"ていへん\",\n \"ていぼう\",\n \"てうち\",\n \"ておくれ\",\n \"てきとう\",\n \"てくび\",\n \"でこぼこ\",\n \"てさぎょう\",\n \"てさげ\",\n \"てすり\",\n \"てそう\",\n \"てちがい\",\n \"てちょう\",\n \"てつがく\",\n \"てつづき\",\n \"でっぱ\",\n \"てつぼう\",\n \"てつや\",\n \"でぬかえ\",\n \"てぬき\",\n \"てぬぐい\",\n \"てのひら\",\n \"てはい\",\n \"てぶくろ\",\n \"てふだ\",\n \"てほどき\",\n \"てほん\",\n \"てまえ\",\n \"てまきずし\",\n \"てみじか\",\n \"てみやげ\",\n \"てらす\",\n \"てれび\",\n \"てわけ\",\n \"てわたし\",\n \"でんあつ\",\n \"てんいん\",\n \"てんかい\",\n \"てんき\",\n \"てんぐ\",\n \"てんけん\",\n \"てんごく\",\n \"てんさい\",\n \"てんし\",\n \"てんすう\",\n \"でんち\",\n \"てんてき\",\n \"てんとう\",\n \"てんない\",\n \"てんぷら\",\n \"てんぼうだい\",\n \"てんめつ\",\n \"てんらんかい\",\n \"でんりょく\",\n \"でんわ\",\n \"どあい\",\n \"といれ\",\n \"どうかん\",\n \"とうきゅう\",\n \"どうぐ\",\n \"とうし\",\n \"とうむぎ\",\n \"とおい\",\n \"とおか\",\n \"とおく\",\n \"とおす\",\n \"とおる\",\n \"とかい\",\n \"とかす\",\n \"ときおり\",\n \"ときどき\",\n \"とくい\",\n \"とくしゅう\",\n \"とくてん\",\n \"とくに\",\n \"とくべつ\",\n \"とけい\",\n \"とける\",\n \"とこや\",\n \"とさか\",\n \"としょかん\",\n \"とそう\",\n \"とたん\",\n \"とちゅう\",\n \"とっきゅう\",\n \"とっくん\",\n \"とつぜん\",\n \"とつにゅう\",\n \"とどける\",\n \"ととのえる\",\n \"とない\",\n \"となえる\",\n \"となり\",\n \"とのさま\",\n \"とばす\",\n \"どぶがわ\",\n \"とほう\",\n \"とまる\",\n \"とめる\",\n \"ともだち\",\n \"ともる\",\n \"どようび\",\n \"とらえる\",\n \"とんかつ\",\n \"どんぶり\",\n \"ないかく\",\n \"ないこう\",\n \"ないしょ\",\n \"ないす\",\n \"ないせん\",\n \"ないそう\",\n \"なおす\",\n \"ながい\",\n \"なくす\",\n \"なげる\",\n \"なこうど\",\n \"なさけ\",\n \"なたでここ\",\n \"なっとう\",\n \"なつやすみ\",\n \"ななおし\",\n \"なにごと\",\n \"なにもの\",\n \"なにわ\",\n \"なのか\",\n \"なふだ\",\n \"なまいき\",\n \"なまえ\",\n \"なまみ\",\n \"なみだ\",\n \"なめらか\",\n \"なめる\",\n \"なやむ\",\n \"ならう\",\n \"ならび\",\n \"ならぶ\",\n \"なれる\",\n \"なわとび\",\n \"なわばり\",\n \"にあう\",\n \"にいがた\",\n \"にうけ\",\n \"におい\",\n \"にかい\",\n \"にがて\",\n \"にきび\",\n \"にくしみ\",\n \"にくまん\",\n \"にげる\",\n \"にさんかたんそ\",\n \"にしき\",\n \"にせもの\",\n \"にちじょう\",\n \"にちようび\",\n \"にっか\",\n \"にっき\",\n \"にっけい\",\n \"にっこう\",\n \"にっさん\",\n \"にっしょく\",\n \"にっすう\",\n \"にっせき\",\n \"にってい\",\n \"になう\",\n \"にほん\",\n \"にまめ\",\n \"にもつ\",\n \"にやり\",\n \"にゅういん\",\n \"にりんしゃ\",\n \"にわとり\",\n \"にんい\",\n \"にんか\",\n \"にんき\",\n \"にんげん\",\n \"にんしき\",\n \"にんずう\",\n \"にんそう\",\n \"にんたい\",\n \"にんち\",\n \"にんてい\",\n \"にんにく\",\n \"にんぷ\",\n \"にんまり\",\n \"にんむ\",\n \"にんめい\",\n \"にんよう\",\n \"ぬいくぎ\",\n \"ぬかす\",\n \"ぬぐいとる\",\n \"ぬぐう\",\n \"ぬくもり\",\n \"ぬすむ\",\n \"ぬまえび\",\n \"ぬめり\",\n \"ぬらす\",\n \"ぬんちゃく\",\n \"ねあげ\",\n \"ねいき\",\n \"ねいる\",\n \"ねいろ\",\n \"ねぐせ\",\n \"ねくたい\",\n \"ねくら\",\n \"ねこぜ\",\n \"ねこむ\",\n \"ねさげ\",\n \"ねすごす\",\n \"ねそべる\",\n \"ねだん\",\n \"ねつい\",\n \"ねっしん\",\n \"ねつぞう\",\n \"ねったいぎょ\",\n \"ねぶそく\",\n \"ねふだ\",\n \"ねぼう\",\n \"ねほりはほり\",\n \"ねまき\",\n \"ねまわし\",\n \"ねみみ\",\n \"ねむい\",\n \"ねむたい\",\n \"ねもと\",\n \"ねらう\",\n \"ねわざ\",\n \"ねんいり\",\n \"ねんおし\",\n \"ねんかん\",\n \"ねんきん\",\n \"ねんぐ\",\n \"ねんざ\",\n \"ねんし\",\n \"ねんちゃく\",\n \"ねんど\",\n \"ねんぴ\",\n \"ねんぶつ\",\n \"ねんまつ\",\n \"ねんりょう\",\n \"ねんれい\",\n \"のいず\",\n \"のおづま\",\n \"のがす\",\n \"のきなみ\",\n \"のこぎり\",\n \"のこす\",\n \"のこる\",\n \"のせる\",\n \"のぞく\",\n \"のぞむ\",\n \"のたまう\",\n \"のちほど\",\n \"のっく\",\n \"のばす\",\n \"のはら\",\n \"のべる\",\n \"のぼる\",\n \"のみもの\",\n \"のやま\",\n \"のらいぬ\",\n \"のらねこ\",\n \"のりもの\",\n \"のりゆき\",\n \"のれん\",\n \"のんき\",\n \"ばあい\",\n \"はあく\",\n \"ばあさん\",\n \"ばいか\",\n \"ばいく\",\n \"はいけん\",\n \"はいご\",\n \"はいしん\",\n \"はいすい\",\n \"はいせん\",\n \"はいそう\",\n \"はいち\",\n \"ばいばい\",\n \"はいれつ\",\n \"はえる\",\n \"はおる\",\n \"はかい\",\n \"ばかり\",\n \"はかる\",\n \"はくしゅ\",\n \"はけん\",\n \"はこぶ\",\n \"はさみ\",\n \"はさん\",\n \"はしご\",\n \"ばしょ\",\n \"はしる\",\n \"はせる\",\n \"ぱそこん\",\n \"はそん\",\n \"はたん\",\n \"はちみつ\",\n \"はつおん\",\n \"はっかく\",\n \"はづき\",\n \"はっきり\",\n \"はっくつ\",\n \"はっけん\",\n \"はっこう\",\n \"はっさん\",\n \"はっしん\",\n \"はったつ\",\n \"はっちゅう\",\n \"はってん\",\n \"はっぴょう\",\n \"はっぽう\",\n \"はなす\",\n \"はなび\",\n \"はにかむ\",\n \"はぶらし\",\n \"はみがき\",\n \"はむかう\",\n \"はめつ\",\n \"はやい\",\n \"はやし\",\n \"はらう\",\n \"はろうぃん\",\n \"はわい\",\n \"はんい\",\n \"はんえい\",\n \"はんおん\",\n \"はんかく\",\n \"はんきょう\",\n \"ばんぐみ\",\n \"はんこ\",\n \"はんしゃ\",\n \"はんすう\",\n \"はんだん\",\n \"ぱんち\",\n \"ぱんつ\",\n \"はんてい\",\n \"はんとし\",\n \"はんのう\",\n \"はんぱ\",\n \"はんぶん\",\n \"はんぺん\",\n \"はんぼうき\",\n \"はんめい\",\n \"はんらん\",\n \"はんろん\",\n \"ひいき\",\n \"ひうん\",\n \"ひえる\",\n \"ひかく\",\n \"ひかり\",\n \"ひかる\",\n \"ひかん\",\n \"ひくい\",\n \"ひけつ\",\n \"ひこうき\",\n \"ひこく\",\n \"ひさい\",\n \"ひさしぶり\",\n \"ひさん\",\n \"びじゅつかん\",\n \"ひしょ\",\n \"ひそか\",\n \"ひそむ\",\n \"ひたむき\",\n \"ひだり\",\n \"ひたる\",\n \"ひつぎ\",\n \"ひっこし\",\n \"ひっし\",\n \"ひつじゅひん\",\n \"ひっす\",\n \"ひつぜん\",\n \"ぴったり\",\n \"ぴっちり\",\n \"ひつよう\",\n \"ひてい\",\n \"ひとごみ\",\n \"ひなまつり\",\n \"ひなん\",\n \"ひねる\",\n \"ひはん\",\n \"ひびく\",\n \"ひひょう\",\n \"ひほう\",\n \"ひまわり\",\n \"ひまん\",\n \"ひみつ\",\n \"ひめい\",\n \"ひめじし\",\n \"ひやけ\",\n \"ひやす\",\n \"ひよう\",\n \"びょうき\",\n \"ひらがな\",\n \"ひらく\",\n \"ひりつ\",\n \"ひりょう\",\n \"ひるま\",\n \"ひるやすみ\",\n \"ひれい\",\n \"ひろい\",\n \"ひろう\",\n \"ひろき\",\n \"ひろゆき\",\n \"ひんかく\",\n \"ひんけつ\",\n \"ひんこん\",\n \"ひんしゅ\",\n \"ひんそう\",\n \"ぴんち\",\n \"ひんぱん\",\n \"びんぼう\",\n \"ふあん\",\n \"ふいうち\",\n \"ふうけい\",\n \"ふうせん\",\n \"ぷうたろう\",\n \"ふうとう\",\n \"ふうふ\",\n \"ふえる\",\n \"ふおん\",\n \"ふかい\",\n \"ふきん\",\n \"ふくざつ\",\n \"ふくぶくろ\",\n \"ふこう\",\n \"ふさい\",\n \"ふしぎ\",\n \"ふじみ\",\n \"ふすま\",\n \"ふせい\",\n \"ふせぐ\",\n \"ふそく\",\n \"ぶたにく\",\n \"ふたん\",\n \"ふちょう\",\n \"ふつう\",\n \"ふつか\",\n \"ふっかつ\",\n \"ふっき\",\n \"ふっこく\",\n \"ぶどう\",\n \"ふとる\",\n \"ふとん\",\n \"ふのう\",\n \"ふはい\",\n \"ふひょう\",\n \"ふへん\",\n \"ふまん\",\n \"ふみん\",\n \"ふめつ\",\n \"ふめん\",\n \"ふよう\",\n \"ふりこ\",\n \"ふりる\",\n \"ふるい\",\n \"ふんいき\",\n \"ぶんがく\",\n \"ぶんぐ\",\n \"ふんしつ\",\n \"ぶんせき\",\n \"ふんそう\",\n \"ぶんぽう\",\n \"へいあん\",\n \"へいおん\",\n \"へいがい\",\n \"へいき\",\n \"へいげん\",\n \"へいこう\",\n \"へいさ\",\n \"へいしゃ\",\n \"へいせつ\",\n \"へいそ\",\n \"へいたく\",\n \"へいてん\",\n \"へいねつ\",\n \"へいわ\",\n \"へきが\",\n \"へこむ\",\n \"べにいろ\",\n \"べにしょうが\",\n \"へらす\",\n \"へんかん\",\n \"べんきょう\",\n \"べんごし\",\n \"へんさい\",\n \"へんたい\",\n \"べんり\",\n \"ほあん\",\n \"ほいく\",\n \"ぼうぎょ\",\n \"ほうこく\",\n \"ほうそう\",\n \"ほうほう\",\n \"ほうもん\",\n \"ほうりつ\",\n \"ほえる\",\n \"ほおん\",\n \"ほかん\",\n \"ほきょう\",\n \"ぼきん\",\n \"ほくろ\",\n \"ほけつ\",\n \"ほけん\",\n \"ほこう\",\n \"ほこる\",\n \"ほしい\",\n \"ほしつ\",\n \"ほしゅ\",\n \"ほしょう\",\n \"ほせい\",\n \"ほそい\",\n \"ほそく\",\n \"ほたて\",\n \"ほたる\",\n \"ぽちぶくろ\",\n \"ほっきょく\",\n \"ほっさ\",\n \"ほったん\",\n \"ほとんど\",\n \"ほめる\",\n \"ほんい\",\n \"ほんき\",\n \"ほんけ\",\n \"ほんしつ\",\n \"ほんやく\",\n \"まいにち\",\n \"まかい\",\n \"まかせる\",\n \"まがる\",\n \"まける\",\n \"まこと\",\n \"まさつ\",\n \"まじめ\",\n \"ますく\",\n \"まぜる\",\n \"まつり\",\n \"まとめ\",\n \"まなぶ\",\n \"まぬけ\",\n \"まねく\",\n \"まほう\",\n \"まもる\",\n \"まゆげ\",\n \"まよう\",\n \"まろやか\",\n \"まわす\",\n \"まわり\",\n \"まわる\",\n \"まんが\",\n \"まんきつ\",\n \"まんぞく\",\n \"まんなか\",\n \"みいら\",\n \"みうち\",\n \"みえる\",\n \"みがく\",\n \"みかた\",\n \"みかん\",\n \"みけん\",\n \"みこん\",\n \"みじかい\",\n \"みすい\",\n \"みすえる\",\n \"みせる\",\n \"みっか\",\n \"みつかる\",\n \"みつける\",\n \"みてい\",\n \"みとめる\",\n \"みなと\",\n \"みなみかさい\",\n \"みねらる\",\n \"みのう\",\n \"みのがす\",\n \"みほん\",\n \"みもと\",\n \"みやげ\",\n \"みらい\",\n \"みりょく\",\n \"みわく\",\n \"みんか\",\n \"みんぞく\",\n \"むいか\",\n \"むえき\",\n \"むえん\",\n \"むかい\",\n \"むかう\",\n \"むかえ\",\n \"むかし\",\n \"むぎちゃ\",\n \"むける\",\n \"むげん\",\n \"むさぼる\",\n \"むしあつい\",\n \"むしば\",\n \"むじゅん\",\n \"むしろ\",\n \"むすう\",\n \"むすこ\",\n \"むすぶ\",\n \"むすめ\",\n \"むせる\",\n \"むせん\",\n \"むちゅう\",\n \"むなしい\",\n \"むのう\",\n \"むやみ\",\n \"むよう\",\n \"むらさき\",\n \"むりょう\",\n \"むろん\",\n \"めいあん\",\n \"めいうん\",\n \"めいえん\",\n \"めいかく\",\n \"めいきょく\",\n \"めいさい\",\n \"めいし\",\n \"めいそう\",\n \"めいぶつ\",\n \"めいれい\",\n \"めいわく\",\n \"めぐまれる\",\n \"めざす\",\n \"めした\",\n \"めずらしい\",\n \"めだつ\",\n \"めまい\",\n \"めやす\",\n \"めんきょ\",\n \"めんせき\",\n \"めんどう\",\n \"もうしあげる\",\n \"もうどうけん\",\n \"もえる\",\n \"もくし\",\n \"もくてき\",\n \"もくようび\",\n \"もちろん\",\n \"もどる\",\n \"もらう\",\n \"もんく\",\n \"もんだい\",\n \"やおや\",\n \"やける\",\n \"やさい\",\n \"やさしい\",\n \"やすい\",\n \"やすたろう\",\n \"やすみ\",\n \"やせる\",\n \"やそう\",\n \"やたい\",\n \"やちん\",\n \"やっと\",\n \"やっぱり\",\n \"やぶる\",\n \"やめる\",\n \"ややこしい\",\n \"やよい\",\n \"やわらかい\",\n \"ゆうき\",\n \"ゆうびんきょく\",\n \"ゆうべ\",\n \"ゆうめい\",\n \"ゆけつ\",\n \"ゆしゅつ\",\n \"ゆせん\",\n \"ゆそう\",\n \"ゆたか\",\n \"ゆちゃく\",\n \"ゆでる\",\n \"ゆにゅう\",\n \"ゆびわ\",\n \"ゆらい\",\n \"ゆれる\",\n \"ようい\",\n \"ようか\",\n \"ようきゅう\",\n \"ようじ\",\n \"ようす\",\n \"ようちえん\",\n \"よかぜ\",\n \"よかん\",\n \"よきん\",\n \"よくせい\",\n \"よくぼう\",\n \"よけい\",\n \"よごれる\",\n \"よさん\",\n \"よしゅう\",\n \"よそう\",\n \"よそく\",\n \"よっか\",\n \"よてい\",\n \"よどがわく\",\n \"よねつ\",\n \"よやく\",\n \"よゆう\",\n \"よろこぶ\",\n \"よろしい\",\n \"らいう\",\n \"らくがき\",\n \"らくご\",\n \"らくさつ\",\n \"らくだ\",\n \"らしんばん\",\n \"らせん\",\n \"らぞく\",\n \"らたい\",\n \"らっか\",\n \"られつ\",\n \"りえき\",\n \"りかい\",\n \"りきさく\",\n \"りきせつ\",\n \"りくぐん\",\n \"りくつ\",\n \"りけん\",\n \"りこう\",\n \"りせい\",\n \"りそう\",\n \"りそく\",\n \"りてん\",\n \"りねん\",\n \"りゆう\",\n \"りゅうがく\",\n \"りよう\",\n \"りょうり\",\n \"りょかん\",\n \"りょくちゃ\",\n \"りょこう\",\n \"りりく\",\n \"りれき\",\n \"りろん\",\n \"りんご\",\n \"るいけい\",\n \"るいさい\",\n \"るいじ\",\n \"るいせき\",\n \"るすばん\",\n \"るりがわら\",\n \"れいかん\",\n \"れいぎ\",\n \"れいせい\",\n \"れいぞうこ\",\n \"れいとう\",\n \"れいぼう\",\n \"れきし\",\n \"れきだい\",\n \"れんあい\",\n \"れんけい\",\n \"れんこん\",\n \"れんさい\",\n \"れんしゅう\",\n \"れんぞく\",\n \"れんらく\",\n \"ろうか\",\n \"ろうご\",\n \"ろうじん\",\n \"ろうそく\",\n \"ろくが\",\n \"ろこつ\",\n \"ろじうら\",\n \"ろしゅつ\",\n \"ろせん\",\n \"ろてん\",\n \"ろめん\",\n \"ろれつ\",\n \"ろんぎ\",\n \"ろんぱ\",\n \"ろんぶん\",\n \"ろんり\",\n \"わかす\",\n \"わかめ\",\n \"わかやま\",\n \"わかれる\",\n \"わしつ\",\n \"わじまし\",\n \"わすれもの\",\n \"わらう\",\n \"われる\"\n]\n\n},{}],54:[function(require,module,exports){\nmodule.exports=[\n \"abacate\",\n \"abaixo\",\n \"abalar\",\n \"abater\",\n \"abduzir\",\n \"abelha\",\n \"aberto\",\n \"abismo\",\n \"abotoar\",\n \"abranger\",\n \"abreviar\",\n \"abrigar\",\n \"abrupto\",\n \"absinto\",\n \"absoluto\",\n \"absurdo\",\n \"abutre\",\n \"acabado\",\n \"acalmar\",\n \"acampar\",\n \"acanhar\",\n \"acaso\",\n \"aceitar\",\n \"acelerar\",\n \"acenar\",\n \"acervo\",\n \"acessar\",\n \"acetona\",\n \"achatar\",\n \"acidez\",\n \"acima\",\n \"acionado\",\n \"acirrar\",\n \"aclamar\",\n \"aclive\",\n \"acolhida\",\n \"acomodar\",\n \"acoplar\",\n \"acordar\",\n \"acumular\",\n \"acusador\",\n \"adaptar\",\n \"adega\",\n \"adentro\",\n \"adepto\",\n \"adequar\",\n \"aderente\",\n \"adesivo\",\n \"adeus\",\n \"adiante\",\n \"aditivo\",\n \"adjetivo\",\n \"adjunto\",\n \"admirar\",\n \"adorar\",\n \"adquirir\",\n \"adubo\",\n \"adverso\",\n \"advogado\",\n \"aeronave\",\n \"afastar\",\n \"aferir\",\n \"afetivo\",\n \"afinador\",\n \"afivelar\",\n \"aflito\",\n \"afluente\",\n \"afrontar\",\n \"agachar\",\n \"agarrar\",\n \"agasalho\",\n \"agenciar\",\n \"agilizar\",\n \"agiota\",\n \"agitado\",\n \"agora\",\n \"agradar\",\n \"agreste\",\n \"agrupar\",\n \"aguardar\",\n \"agulha\",\n \"ajoelhar\",\n \"ajudar\",\n \"ajustar\",\n \"alameda\",\n \"alarme\",\n \"alastrar\",\n \"alavanca\",\n \"albergue\",\n \"albino\",\n \"alcatra\",\n \"aldeia\",\n \"alecrim\",\n \"alegria\",\n \"alertar\",\n \"alface\",\n \"alfinete\",\n \"algum\",\n \"alheio\",\n \"aliar\",\n \"alicate\",\n \"alienar\",\n \"alinhar\",\n \"aliviar\",\n \"almofada\",\n \"alocar\",\n \"alpiste\",\n \"alterar\",\n \"altitude\",\n \"alucinar\",\n \"alugar\",\n \"aluno\",\n \"alusivo\",\n \"alvo\",\n \"amaciar\",\n \"amador\",\n \"amarelo\",\n \"amassar\",\n \"ambas\",\n \"ambiente\",\n \"ameixa\",\n \"amenizar\",\n \"amido\",\n \"amistoso\",\n \"amizade\",\n \"amolador\",\n \"amontoar\",\n \"amoroso\",\n \"amostra\",\n \"amparar\",\n \"ampliar\",\n \"ampola\",\n \"anagrama\",\n \"analisar\",\n \"anarquia\",\n \"anatomia\",\n \"andaime\",\n \"anel\",\n \"anexo\",\n \"angular\",\n \"animar\",\n \"anjo\",\n \"anomalia\",\n \"anotado\",\n \"ansioso\",\n \"anterior\",\n \"anuidade\",\n \"anunciar\",\n \"anzol\",\n \"apagador\",\n \"apalpar\",\n \"apanhado\",\n \"apego\",\n \"apelido\",\n \"apertada\",\n \"apesar\",\n \"apetite\",\n \"apito\",\n \"aplauso\",\n \"aplicada\",\n \"apoio\",\n \"apontar\",\n \"aposta\",\n \"aprendiz\",\n \"aprovar\",\n \"aquecer\",\n \"arame\",\n \"aranha\",\n \"arara\",\n \"arcada\",\n \"ardente\",\n \"areia\",\n \"arejar\",\n \"arenito\",\n \"aresta\",\n \"argiloso\",\n \"argola\",\n \"arma\",\n \"arquivo\",\n \"arraial\",\n \"arrebate\",\n \"arriscar\",\n \"arroba\",\n \"arrumar\",\n \"arsenal\",\n \"arterial\",\n \"artigo\",\n \"arvoredo\",\n \"asfaltar\",\n \"asilado\",\n \"aspirar\",\n \"assador\",\n \"assinar\",\n \"assoalho\",\n \"assunto\",\n \"astral\",\n \"atacado\",\n \"atadura\",\n \"atalho\",\n \"atarefar\",\n \"atear\",\n \"atender\",\n \"aterro\",\n \"ateu\",\n \"atingir\",\n \"atirador\",\n \"ativo\",\n \"atoleiro\",\n \"atracar\",\n \"atrevido\",\n \"atriz\",\n \"atual\",\n \"atum\",\n \"auditor\",\n \"aumentar\",\n \"aura\",\n \"aurora\",\n \"autismo\",\n \"autoria\",\n \"autuar\",\n \"avaliar\",\n \"avante\",\n \"avaria\",\n \"avental\",\n \"avesso\",\n \"aviador\",\n \"avisar\",\n \"avulso\",\n \"axila\",\n \"azarar\",\n \"azedo\",\n \"azeite\",\n \"azulejo\",\n \"babar\",\n \"babosa\",\n \"bacalhau\",\n \"bacharel\",\n \"bacia\",\n \"bagagem\",\n \"baiano\",\n \"bailar\",\n \"baioneta\",\n \"bairro\",\n \"baixista\",\n \"bajular\",\n \"baleia\",\n \"baliza\",\n \"balsa\",\n \"banal\",\n \"bandeira\",\n \"banho\",\n \"banir\",\n \"banquete\",\n \"barato\",\n \"barbado\",\n \"baronesa\",\n \"barraca\",\n \"barulho\",\n \"baseado\",\n \"bastante\",\n \"batata\",\n \"batedor\",\n \"batida\",\n \"batom\",\n \"batucar\",\n \"baunilha\",\n \"beber\",\n \"beijo\",\n \"beirada\",\n \"beisebol\",\n \"beldade\",\n \"beleza\",\n \"belga\",\n \"beliscar\",\n \"bendito\",\n \"bengala\",\n \"benzer\",\n \"berimbau\",\n \"berlinda\",\n \"berro\",\n \"besouro\",\n \"bexiga\",\n \"bezerro\",\n \"bico\",\n \"bicudo\",\n \"bienal\",\n \"bifocal\",\n \"bifurcar\",\n \"bigorna\",\n \"bilhete\",\n \"bimestre\",\n \"bimotor\",\n \"biologia\",\n \"biombo\",\n \"biosfera\",\n \"bipolar\",\n \"birrento\",\n \"biscoito\",\n \"bisneto\",\n \"bispo\",\n \"bissexto\",\n \"bitola\",\n \"bizarro\",\n \"blindado\",\n \"bloco\",\n \"bloquear\",\n \"boato\",\n \"bobagem\",\n \"bocado\",\n \"bocejo\",\n \"bochecha\",\n \"boicotar\",\n \"bolada\",\n \"boletim\",\n \"bolha\",\n \"bolo\",\n \"bombeiro\",\n \"bonde\",\n \"boneco\",\n \"bonita\",\n \"borbulha\",\n \"borda\",\n \"boreal\",\n \"borracha\",\n \"bovino\",\n \"boxeador\",\n \"branco\",\n \"brasa\",\n \"braveza\",\n \"breu\",\n \"briga\",\n \"brilho\",\n \"brincar\",\n \"broa\",\n \"brochura\",\n \"bronzear\",\n \"broto\",\n \"bruxo\",\n \"bucha\",\n \"budismo\",\n \"bufar\",\n \"bule\",\n \"buraco\",\n \"busca\",\n \"busto\",\n \"buzina\",\n \"cabana\",\n \"cabelo\",\n \"cabide\",\n \"cabo\",\n \"cabrito\",\n \"cacau\",\n \"cacetada\",\n \"cachorro\",\n \"cacique\",\n \"cadastro\",\n \"cadeado\",\n \"cafezal\",\n \"caiaque\",\n \"caipira\",\n \"caixote\",\n \"cajado\",\n \"caju\",\n \"calafrio\",\n \"calcular\",\n \"caldeira\",\n \"calibrar\",\n \"calmante\",\n \"calota\",\n \"camada\",\n \"cambista\",\n \"camisa\",\n \"camomila\",\n \"campanha\",\n \"camuflar\",\n \"canavial\",\n \"cancelar\",\n \"caneta\",\n \"canguru\",\n \"canhoto\",\n \"canivete\",\n \"canoa\",\n \"cansado\",\n \"cantar\",\n \"canudo\",\n \"capacho\",\n \"capela\",\n \"capinar\",\n \"capotar\",\n \"capricho\",\n \"captador\",\n \"capuz\",\n \"caracol\",\n \"carbono\",\n \"cardeal\",\n \"careca\",\n \"carimbar\",\n \"carneiro\",\n \"carpete\",\n \"carreira\",\n \"cartaz\",\n \"carvalho\",\n \"casaco\",\n \"casca\",\n \"casebre\",\n \"castelo\",\n \"casulo\",\n \"catarata\",\n \"cativar\",\n \"caule\",\n \"causador\",\n \"cautelar\",\n \"cavalo\",\n \"caverna\",\n \"cebola\",\n \"cedilha\",\n \"cegonha\",\n \"celebrar\",\n \"celular\",\n \"cenoura\",\n \"censo\",\n \"centeio\",\n \"cercar\",\n \"cerrado\",\n \"certeiro\",\n \"cerveja\",\n \"cetim\",\n \"cevada\",\n \"chacota\",\n \"chaleira\",\n \"chamado\",\n \"chapada\",\n \"charme\",\n \"chatice\",\n \"chave\",\n \"chefe\",\n \"chegada\",\n \"cheiro\",\n \"cheque\",\n \"chicote\",\n \"chifre\",\n \"chinelo\",\n \"chocalho\",\n \"chover\",\n \"chumbo\",\n \"chutar\",\n \"chuva\",\n \"cicatriz\",\n \"ciclone\",\n \"cidade\",\n \"cidreira\",\n \"ciente\",\n \"cigana\",\n \"cimento\",\n \"cinto\",\n \"cinza\",\n \"ciranda\",\n \"circuito\",\n \"cirurgia\",\n \"citar\",\n \"clareza\",\n \"clero\",\n \"clicar\",\n \"clone\",\n \"clube\",\n \"coado\",\n \"coagir\",\n \"cobaia\",\n \"cobertor\",\n \"cobrar\",\n \"cocada\",\n \"coelho\",\n \"coentro\",\n \"coeso\",\n \"cogumelo\",\n \"coibir\",\n \"coifa\",\n \"coiote\",\n \"colar\",\n \"coleira\",\n \"colher\",\n \"colidir\",\n \"colmeia\",\n \"colono\",\n \"coluna\",\n \"comando\",\n \"combinar\",\n \"comentar\",\n \"comitiva\",\n \"comover\",\n \"complexo\",\n \"comum\",\n \"concha\",\n \"condor\",\n \"conectar\",\n \"confuso\",\n \"congelar\",\n \"conhecer\",\n \"conjugar\",\n \"consumir\",\n \"contrato\",\n \"convite\",\n \"cooperar\",\n \"copeiro\",\n \"copiador\",\n \"copo\",\n \"coquetel\",\n \"coragem\",\n \"cordial\",\n \"corneta\",\n \"coronha\",\n \"corporal\",\n \"correio\",\n \"cortejo\",\n \"coruja\",\n \"corvo\",\n \"cosseno\",\n \"costela\",\n \"cotonete\",\n \"couro\",\n \"couve\",\n \"covil\",\n \"cozinha\",\n \"cratera\",\n \"cravo\",\n \"creche\",\n \"credor\",\n \"creme\",\n \"crer\",\n \"crespo\",\n \"criada\",\n \"criminal\",\n \"crioulo\",\n \"crise\",\n \"criticar\",\n \"crosta\",\n \"crua\",\n \"cruzeiro\",\n \"cubano\",\n \"cueca\",\n \"cuidado\",\n \"cujo\",\n \"culatra\",\n \"culminar\",\n \"culpar\",\n \"cultura\",\n \"cumprir\",\n \"cunhado\",\n \"cupido\",\n \"curativo\",\n \"curral\",\n \"cursar\",\n \"curto\",\n \"cuspir\",\n \"custear\",\n \"cutelo\",\n \"damasco\",\n \"datar\",\n \"debater\",\n \"debitar\",\n \"deboche\",\n \"debulhar\",\n \"decalque\",\n \"decimal\",\n \"declive\",\n \"decote\",\n \"decretar\",\n \"dedal\",\n \"dedicado\",\n \"deduzir\",\n \"defesa\",\n \"defumar\",\n \"degelo\",\n \"degrau\",\n \"degustar\",\n \"deitado\",\n \"deixar\",\n \"delator\",\n \"delegado\",\n \"delinear\",\n \"delonga\",\n \"demanda\",\n \"demitir\",\n \"demolido\",\n \"dentista\",\n \"depenado\",\n \"depilar\",\n \"depois\",\n \"depressa\",\n \"depurar\",\n \"deriva\",\n \"derramar\",\n \"desafio\",\n \"desbotar\",\n \"descanso\",\n \"desenho\",\n \"desfiado\",\n \"desgaste\",\n \"desigual\",\n \"deslize\",\n \"desmamar\",\n \"desova\",\n \"despesa\",\n \"destaque\",\n \"desviar\",\n \"detalhar\",\n \"detentor\",\n \"detonar\",\n \"detrito\",\n \"deusa\",\n \"dever\",\n \"devido\",\n \"devotado\",\n \"dezena\",\n \"diagrama\",\n \"dialeto\",\n \"didata\",\n \"difuso\",\n \"digitar\",\n \"dilatado\",\n \"diluente\",\n \"diminuir\",\n \"dinastia\",\n \"dinheiro\",\n \"diocese\",\n \"direto\",\n \"discreta\",\n \"disfarce\",\n \"disparo\",\n \"disquete\",\n \"dissipar\",\n \"distante\",\n \"ditador\",\n \"diurno\",\n \"diverso\",\n \"divisor\",\n \"divulgar\",\n \"dizer\",\n \"dobrador\",\n \"dolorido\",\n \"domador\",\n \"dominado\",\n \"donativo\",\n \"donzela\",\n \"dormente\",\n \"dorsal\",\n \"dosagem\",\n \"dourado\",\n \"doutor\",\n \"drenagem\",\n \"drible\",\n \"drogaria\",\n \"duelar\",\n \"duende\",\n \"dueto\",\n \"duplo\",\n \"duquesa\",\n \"durante\",\n \"duvidoso\",\n \"eclodir\",\n \"ecoar\",\n \"ecologia\",\n \"edificar\",\n \"edital\",\n \"educado\",\n \"efeito\",\n \"efetivar\",\n \"ejetar\",\n \"elaborar\",\n \"eleger\",\n \"eleitor\",\n \"elenco\",\n \"elevador\",\n \"eliminar\",\n \"elogiar\",\n \"embargo\",\n \"embolado\",\n \"embrulho\",\n \"embutido\",\n \"emenda\",\n \"emergir\",\n \"emissor\",\n \"empatia\",\n \"empenho\",\n \"empinado\",\n \"empolgar\",\n \"emprego\",\n \"empurrar\",\n \"emulador\",\n \"encaixe\",\n \"encenado\",\n \"enchente\",\n \"encontro\",\n \"endeusar\",\n \"endossar\",\n \"enfaixar\",\n \"enfeite\",\n \"enfim\",\n \"engajado\",\n \"engenho\",\n \"englobar\",\n \"engomado\",\n \"engraxar\",\n \"enguia\",\n \"enjoar\",\n \"enlatar\",\n \"enquanto\",\n \"enraizar\",\n \"enrolado\",\n \"enrugar\",\n \"ensaio\",\n \"enseada\",\n \"ensino\",\n \"ensopado\",\n \"entanto\",\n \"enteado\",\n \"entidade\",\n \"entortar\",\n \"entrada\",\n \"entulho\",\n \"envergar\",\n \"enviado\",\n \"envolver\",\n \"enxame\",\n \"enxerto\",\n \"enxofre\",\n \"enxuto\",\n \"epiderme\",\n \"equipar\",\n \"ereto\",\n \"erguido\",\n \"errata\",\n \"erva\",\n \"ervilha\",\n \"esbanjar\",\n \"esbelto\",\n \"escama\",\n \"escola\",\n \"escrita\",\n \"escuta\",\n \"esfinge\",\n \"esfolar\",\n \"esfregar\",\n \"esfumado\",\n \"esgrima\",\n \"esmalte\",\n \"espanto\",\n \"espelho\",\n \"espiga\",\n \"esponja\",\n \"espreita\",\n \"espumar\",\n \"esquerda\",\n \"estaca\",\n \"esteira\",\n \"esticar\",\n \"estofado\",\n \"estrela\",\n \"estudo\",\n \"esvaziar\",\n \"etanol\",\n \"etiqueta\",\n \"euforia\",\n \"europeu\",\n \"evacuar\",\n \"evaporar\",\n \"evasivo\",\n \"eventual\",\n \"evidente\",\n \"evoluir\",\n \"exagero\",\n \"exalar\",\n \"examinar\",\n \"exato\",\n \"exausto\",\n \"excesso\",\n \"excitar\",\n \"exclamar\",\n \"executar\",\n \"exemplo\",\n \"exibir\",\n \"exigente\",\n \"exonerar\",\n \"expandir\",\n \"expelir\",\n \"expirar\",\n \"explanar\",\n \"exposto\",\n \"expresso\",\n \"expulsar\",\n \"externo\",\n \"extinto\",\n \"extrato\",\n \"fabricar\",\n \"fabuloso\",\n \"faceta\",\n \"facial\",\n \"fada\",\n \"fadiga\",\n \"faixa\",\n \"falar\",\n \"falta\",\n \"familiar\",\n \"fandango\",\n \"fanfarra\",\n \"fantoche\",\n \"fardado\",\n \"farelo\",\n \"farinha\",\n \"farofa\",\n \"farpa\",\n \"fartura\",\n \"fatia\",\n \"fator\",\n \"favorita\",\n \"faxina\",\n \"fazenda\",\n \"fechado\",\n \"feijoada\",\n \"feirante\",\n \"felino\",\n \"feminino\",\n \"fenda\",\n \"feno\",\n \"fera\",\n \"feriado\",\n \"ferrugem\",\n \"ferver\",\n \"festejar\",\n \"fetal\",\n \"feudal\",\n \"fiapo\",\n \"fibrose\",\n \"ficar\",\n \"ficheiro\",\n \"figurado\",\n \"fileira\",\n \"filho\",\n \"filme\",\n \"filtrar\",\n \"firmeza\",\n \"fisgada\",\n \"fissura\",\n \"fita\",\n \"fivela\",\n \"fixador\",\n \"fixo\",\n \"flacidez\",\n \"flamingo\",\n \"flanela\",\n \"flechada\",\n \"flora\",\n \"flutuar\",\n \"fluxo\",\n \"focal\",\n \"focinho\",\n \"fofocar\",\n \"fogo\",\n \"foguete\",\n \"foice\",\n \"folgado\",\n \"folheto\",\n \"forjar\",\n \"formiga\",\n \"forno\",\n \"forte\",\n \"fosco\",\n \"fossa\",\n \"fragata\",\n \"fralda\",\n \"frango\",\n \"frasco\",\n \"fraterno\",\n \"freira\",\n \"frente\",\n \"fretar\",\n \"frieza\",\n \"friso\",\n \"fritura\",\n \"fronha\",\n \"frustrar\",\n \"fruteira\",\n \"fugir\",\n \"fulano\",\n \"fuligem\",\n \"fundar\",\n \"fungo\",\n \"funil\",\n \"furador\",\n \"furioso\",\n \"futebol\",\n \"gabarito\",\n \"gabinete\",\n \"gado\",\n \"gaiato\",\n \"gaiola\",\n \"gaivota\",\n \"galega\",\n \"galho\",\n \"galinha\",\n \"galocha\",\n \"ganhar\",\n \"garagem\",\n \"garfo\",\n \"gargalo\",\n \"garimpo\",\n \"garoupa\",\n \"garrafa\",\n \"gasoduto\",\n \"gasto\",\n \"gata\",\n \"gatilho\",\n \"gaveta\",\n \"gazela\",\n \"gelado\",\n \"geleia\",\n \"gelo\",\n \"gemada\",\n \"gemer\",\n \"gemido\",\n \"generoso\",\n \"gengiva\",\n \"genial\",\n \"genoma\",\n \"genro\",\n \"geologia\",\n \"gerador\",\n \"germinar\",\n \"gesso\",\n \"gestor\",\n \"ginasta\",\n \"gincana\",\n \"gingado\",\n \"girafa\",\n \"girino\",\n \"glacial\",\n \"glicose\",\n \"global\",\n \"glorioso\",\n \"goela\",\n \"goiaba\",\n \"golfe\",\n \"golpear\",\n \"gordura\",\n \"gorjeta\",\n \"gorro\",\n \"gostoso\",\n \"goteira\",\n \"governar\",\n \"gracejo\",\n \"gradual\",\n \"grafite\",\n \"gralha\",\n \"grampo\",\n \"granada\",\n \"gratuito\",\n \"graveto\",\n \"graxa\",\n \"grego\",\n \"grelhar\",\n \"greve\",\n \"grilo\",\n \"grisalho\",\n \"gritaria\",\n \"grosso\",\n \"grotesco\",\n \"grudado\",\n \"grunhido\",\n \"gruta\",\n \"guache\",\n \"guarani\",\n \"guaxinim\",\n \"guerrear\",\n \"guiar\",\n \"guincho\",\n \"guisado\",\n \"gula\",\n \"guloso\",\n \"guru\",\n \"habitar\",\n \"harmonia\",\n \"haste\",\n \"haver\",\n \"hectare\",\n \"herdar\",\n \"heresia\",\n \"hesitar\",\n \"hiato\",\n \"hibernar\",\n \"hidratar\",\n \"hiena\",\n \"hino\",\n \"hipismo\",\n \"hipnose\",\n \"hipoteca\",\n \"hoje\",\n \"holofote\",\n \"homem\",\n \"honesto\",\n \"honrado\",\n \"hormonal\",\n \"hospedar\",\n \"humorado\",\n \"iate\",\n \"ideia\",\n \"idoso\",\n \"ignorado\",\n \"igreja\",\n \"iguana\",\n \"ileso\",\n \"ilha\",\n \"iludido\",\n \"iluminar\",\n \"ilustrar\",\n \"imagem\",\n \"imediato\",\n \"imenso\",\n \"imersivo\",\n \"iminente\",\n \"imitador\",\n \"imortal\",\n \"impacto\",\n \"impedir\",\n \"implante\",\n \"impor\",\n \"imprensa\",\n \"impune\",\n \"imunizar\",\n \"inalador\",\n \"inapto\",\n \"inativo\",\n \"incenso\",\n \"inchar\",\n \"incidir\",\n \"incluir\",\n \"incolor\",\n \"indeciso\",\n \"indireto\",\n \"indutor\",\n \"ineficaz\",\n \"inerente\",\n \"infantil\",\n \"infestar\",\n \"infinito\",\n \"inflamar\",\n \"informal\",\n \"infrator\",\n \"ingerir\",\n \"inibido\",\n \"inicial\",\n \"inimigo\",\n \"injetar\",\n \"inocente\",\n \"inodoro\",\n \"inovador\",\n \"inox\",\n \"inquieto\",\n \"inscrito\",\n \"inseto\",\n \"insistir\",\n \"inspetor\",\n \"instalar\",\n \"insulto\",\n \"intacto\",\n \"integral\",\n \"intimar\",\n \"intocado\",\n \"intriga\",\n \"invasor\",\n \"inverno\",\n \"invicto\",\n \"invocar\",\n \"iogurte\",\n \"iraniano\",\n \"ironizar\",\n \"irreal\",\n \"irritado\",\n \"isca\",\n \"isento\",\n \"isolado\",\n \"isqueiro\",\n \"italiano\",\n \"janeiro\",\n \"jangada\",\n \"janta\",\n \"jararaca\",\n \"jardim\",\n \"jarro\",\n \"jasmim\",\n \"jato\",\n \"javali\",\n \"jazida\",\n \"jejum\",\n \"joaninha\",\n \"joelhada\",\n \"jogador\",\n \"joia\",\n \"jornal\",\n \"jorrar\",\n \"jovem\",\n \"juba\",\n \"judeu\",\n \"judoca\",\n \"juiz\",\n \"julgador\",\n \"julho\",\n \"jurado\",\n \"jurista\",\n \"juro\",\n \"justa\",\n \"labareda\",\n \"laboral\",\n \"lacre\",\n \"lactante\",\n \"ladrilho\",\n \"lagarta\",\n \"lagoa\",\n \"laje\",\n \"lamber\",\n \"lamentar\",\n \"laminar\",\n \"lampejo\",\n \"lanche\",\n \"lapidar\",\n \"lapso\",\n \"laranja\",\n \"lareira\",\n \"largura\",\n \"lasanha\",\n \"lastro\",\n \"lateral\",\n \"latido\",\n \"lavanda\",\n \"lavoura\",\n \"lavrador\",\n \"laxante\",\n \"lazer\",\n \"lealdade\",\n \"lebre\",\n \"legado\",\n \"legendar\",\n \"legista\",\n \"leigo\",\n \"leiloar\",\n \"leitura\",\n \"lembrete\",\n \"leme\",\n \"lenhador\",\n \"lentilha\",\n \"leoa\",\n \"lesma\",\n \"leste\",\n \"letivo\",\n \"letreiro\",\n \"levar\",\n \"leveza\",\n \"levitar\",\n \"liberal\",\n \"libido\",\n \"liderar\",\n \"ligar\",\n \"ligeiro\",\n \"limitar\",\n \"limoeiro\",\n \"limpador\",\n \"linda\",\n \"linear\",\n \"linhagem\",\n \"liquidez\",\n \"listagem\",\n \"lisura\",\n \"litoral\",\n \"livro\",\n \"lixa\",\n \"lixeira\",\n \"locador\",\n \"locutor\",\n \"lojista\",\n \"lombo\",\n \"lona\",\n \"longe\",\n \"lontra\",\n \"lorde\",\n \"lotado\",\n \"loteria\",\n \"loucura\",\n \"lousa\",\n \"louvar\",\n \"luar\",\n \"lucidez\",\n \"lucro\",\n \"luneta\",\n \"lustre\",\n \"lutador\",\n \"luva\",\n \"macaco\",\n \"macete\",\n \"machado\",\n \"macio\",\n \"madeira\",\n \"madrinha\",\n \"magnata\",\n \"magreza\",\n \"maior\",\n \"mais\",\n \"malandro\",\n \"malha\",\n \"malote\",\n \"maluco\",\n \"mamilo\",\n \"mamoeiro\",\n \"mamute\",\n \"manada\",\n \"mancha\",\n \"mandato\",\n \"manequim\",\n \"manhoso\",\n \"manivela\",\n \"manobrar\",\n \"mansa\",\n \"manter\",\n \"manusear\",\n \"mapeado\",\n \"maquinar\",\n \"marcador\",\n \"maresia\",\n \"marfim\",\n \"margem\",\n \"marinho\",\n \"marmita\",\n \"maroto\",\n \"marquise\",\n \"marreco\",\n \"martelo\",\n \"marujo\",\n \"mascote\",\n \"masmorra\",\n \"massagem\",\n \"mastigar\",\n \"matagal\",\n \"materno\",\n \"matinal\",\n \"matutar\",\n \"maxilar\",\n \"medalha\",\n \"medida\",\n \"medusa\",\n \"megafone\",\n \"meiga\",\n \"melancia\",\n \"melhor\",\n \"membro\",\n \"memorial\",\n \"menino\",\n \"menos\",\n \"mensagem\",\n \"mental\",\n \"merecer\",\n \"mergulho\",\n \"mesada\",\n \"mesclar\",\n \"mesmo\",\n \"mesquita\",\n \"mestre\",\n \"metade\",\n \"meteoro\",\n \"metragem\",\n \"mexer\",\n \"mexicano\",\n \"micro\",\n \"migalha\",\n \"migrar\",\n \"milagre\",\n \"milenar\",\n \"milhar\",\n \"mimado\",\n \"minerar\",\n \"minhoca\",\n \"ministro\",\n \"minoria\",\n \"miolo\",\n \"mirante\",\n \"mirtilo\",\n \"misturar\",\n \"mocidade\",\n \"moderno\",\n \"modular\",\n \"moeda\",\n \"moer\",\n \"moinho\",\n \"moita\",\n \"moldura\",\n \"moleza\",\n \"molho\",\n \"molinete\",\n \"molusco\",\n \"montanha\",\n \"moqueca\",\n \"morango\",\n \"morcego\",\n \"mordomo\",\n \"morena\",\n \"mosaico\",\n \"mosquete\",\n \"mostarda\",\n \"motel\",\n \"motim\",\n \"moto\",\n \"motriz\",\n \"muda\",\n \"muito\",\n \"mulata\",\n \"mulher\",\n \"multar\",\n \"mundial\",\n \"munido\",\n \"muralha\",\n \"murcho\",\n \"muscular\",\n \"museu\",\n \"musical\",\n \"nacional\",\n \"nadador\",\n \"naja\",\n \"namoro\",\n \"narina\",\n \"narrado\",\n \"nascer\",\n \"nativa\",\n \"natureza\",\n \"navalha\",\n \"navegar\",\n \"navio\",\n \"neblina\",\n \"nebuloso\",\n \"negativa\",\n \"negociar\",\n \"negrito\",\n \"nervoso\",\n \"neta\",\n \"neural\",\n \"nevasca\",\n \"nevoeiro\",\n \"ninar\",\n \"ninho\",\n \"nitidez\",\n \"nivelar\",\n \"nobreza\",\n \"noite\",\n \"noiva\",\n \"nomear\",\n \"nominal\",\n \"nordeste\",\n \"nortear\",\n \"notar\",\n \"noticiar\",\n \"noturno\",\n \"novelo\",\n \"novilho\",\n \"novo\",\n \"nublado\",\n \"nudez\",\n \"numeral\",\n \"nupcial\",\n \"nutrir\",\n \"nuvem\",\n \"obcecado\",\n \"obedecer\",\n \"objetivo\",\n \"obrigado\",\n \"obscuro\",\n \"obstetra\",\n \"obter\",\n \"obturar\",\n \"ocidente\",\n \"ocioso\",\n \"ocorrer\",\n \"oculista\",\n \"ocupado\",\n \"ofegante\",\n \"ofensiva\",\n \"oferenda\",\n \"oficina\",\n \"ofuscado\",\n \"ogiva\",\n \"olaria\",\n \"oleoso\",\n \"olhar\",\n \"oliveira\",\n \"ombro\",\n \"omelete\",\n \"omisso\",\n \"omitir\",\n \"ondulado\",\n \"oneroso\",\n \"ontem\",\n \"opcional\",\n \"operador\",\n \"oponente\",\n \"oportuno\",\n \"oposto\",\n \"orar\",\n \"orbitar\",\n \"ordem\",\n \"ordinal\",\n \"orfanato\",\n \"orgasmo\",\n \"orgulho\",\n \"oriental\",\n \"origem\",\n \"oriundo\",\n \"orla\",\n \"ortodoxo\",\n \"orvalho\",\n \"oscilar\",\n \"ossada\",\n \"osso\",\n \"ostentar\",\n \"otimismo\",\n \"ousadia\",\n \"outono\",\n \"outubro\",\n \"ouvido\",\n \"ovelha\",\n \"ovular\",\n \"oxidar\",\n \"oxigenar\",\n \"pacato\",\n \"paciente\",\n \"pacote\",\n \"pactuar\",\n \"padaria\",\n \"padrinho\",\n \"pagar\",\n \"pagode\",\n \"painel\",\n \"pairar\",\n \"paisagem\",\n \"palavra\",\n \"palestra\",\n \"palheta\",\n \"palito\",\n \"palmada\",\n \"palpitar\",\n \"pancada\",\n \"panela\",\n \"panfleto\",\n \"panqueca\",\n \"pantanal\",\n \"papagaio\",\n \"papelada\",\n \"papiro\",\n \"parafina\",\n \"parcial\",\n \"pardal\",\n \"parede\",\n \"partida\",\n \"pasmo\",\n \"passado\",\n \"pastel\",\n \"patamar\",\n \"patente\",\n \"patinar\",\n \"patrono\",\n \"paulada\",\n \"pausar\",\n \"peculiar\",\n \"pedalar\",\n \"pedestre\",\n \"pediatra\",\n \"pedra\",\n \"pegada\",\n \"peitoral\",\n \"peixe\",\n \"pele\",\n \"pelicano\",\n \"penca\",\n \"pendurar\",\n \"peneira\",\n \"penhasco\",\n \"pensador\",\n \"pente\",\n \"perceber\",\n \"perfeito\",\n \"pergunta\",\n \"perito\",\n \"permitir\",\n \"perna\",\n \"perplexo\",\n \"persiana\",\n \"pertence\",\n \"peruca\",\n \"pescado\",\n \"pesquisa\",\n \"pessoa\",\n \"petiscar\",\n \"piada\",\n \"picado\",\n \"piedade\",\n \"pigmento\",\n \"pilastra\",\n \"pilhado\",\n \"pilotar\",\n \"pimenta\",\n \"pincel\",\n \"pinguim\",\n \"pinha\",\n \"pinote\",\n \"pintar\",\n \"pioneiro\",\n \"pipoca\",\n \"piquete\",\n \"piranha\",\n \"pires\",\n \"pirueta\",\n \"piscar\",\n \"pistola\",\n \"pitanga\",\n \"pivete\",\n \"planta\",\n \"plaqueta\",\n \"platina\",\n \"plebeu\",\n \"plumagem\",\n \"pluvial\",\n \"pneu\",\n \"poda\",\n \"poeira\",\n \"poetisa\",\n \"polegada\",\n \"policiar\",\n \"poluente\",\n \"polvilho\",\n \"pomar\",\n \"pomba\",\n \"ponderar\",\n \"pontaria\",\n \"populoso\",\n \"porta\",\n \"possuir\",\n \"postal\",\n \"pote\",\n \"poupar\",\n \"pouso\",\n \"povoar\",\n \"praia\",\n \"prancha\",\n \"prato\",\n \"praxe\",\n \"prece\",\n \"predador\",\n \"prefeito\",\n \"premiar\",\n \"prensar\",\n \"preparar\",\n \"presilha\",\n \"pretexto\",\n \"prevenir\",\n \"prezar\",\n \"primata\",\n \"princesa\",\n \"prisma\",\n \"privado\",\n \"processo\",\n \"produto\",\n \"profeta\",\n \"proibido\",\n \"projeto\",\n \"prometer\",\n \"propagar\",\n \"prosa\",\n \"protetor\",\n \"provador\",\n \"publicar\",\n \"pudim\",\n \"pular\",\n \"pulmonar\",\n \"pulseira\",\n \"punhal\",\n \"punir\",\n \"pupilo\",\n \"pureza\",\n \"puxador\",\n \"quadra\",\n \"quantia\",\n \"quarto\",\n \"quase\",\n \"quebrar\",\n \"queda\",\n \"queijo\",\n \"quente\",\n \"querido\",\n \"quimono\",\n \"quina\",\n \"quiosque\",\n \"rabanada\",\n \"rabisco\",\n \"rachar\",\n \"racionar\",\n \"radial\",\n \"raiar\",\n \"rainha\",\n \"raio\",\n \"raiva\",\n \"rajada\",\n \"ralado\",\n \"ramal\",\n \"ranger\",\n \"ranhura\",\n \"rapadura\",\n \"rapel\",\n \"rapidez\",\n \"raposa\",\n \"raquete\",\n \"raridade\",\n \"rasante\",\n \"rascunho\",\n \"rasgar\",\n \"raspador\",\n \"rasteira\",\n \"rasurar\",\n \"ratazana\",\n \"ratoeira\",\n \"realeza\",\n \"reanimar\",\n \"reaver\",\n \"rebaixar\",\n \"rebelde\",\n \"rebolar\",\n \"recado\",\n \"recente\",\n \"recheio\",\n \"recibo\",\n \"recordar\",\n \"recrutar\",\n \"recuar\",\n \"rede\",\n \"redimir\",\n \"redonda\",\n \"reduzida\",\n \"reenvio\",\n \"refinar\",\n \"refletir\",\n \"refogar\",\n \"refresco\",\n \"refugiar\",\n \"regalia\",\n \"regime\",\n \"regra\",\n \"reinado\",\n \"reitor\",\n \"rejeitar\",\n \"relativo\",\n \"remador\",\n \"remendo\",\n \"remorso\",\n \"renovado\",\n \"reparo\",\n \"repelir\",\n \"repleto\",\n \"repolho\",\n \"represa\",\n \"repudiar\",\n \"requerer\",\n \"resenha\",\n \"resfriar\",\n \"resgatar\",\n \"residir\",\n \"resolver\",\n \"respeito\",\n \"ressaca\",\n \"restante\",\n \"resumir\",\n \"retalho\",\n \"reter\",\n \"retirar\",\n \"retomada\",\n \"retratar\",\n \"revelar\",\n \"revisor\",\n \"revolta\",\n \"riacho\",\n \"rica\",\n \"rigidez\",\n \"rigoroso\",\n \"rimar\",\n \"ringue\",\n \"risada\",\n \"risco\",\n \"risonho\",\n \"robalo\",\n \"rochedo\",\n \"rodada\",\n \"rodeio\",\n \"rodovia\",\n \"roedor\",\n \"roleta\",\n \"romano\",\n \"roncar\",\n \"rosado\",\n \"roseira\",\n \"rosto\",\n \"rota\",\n \"roteiro\",\n \"rotina\",\n \"rotular\",\n \"rouco\",\n \"roupa\",\n \"roxo\",\n \"rubro\",\n \"rugido\",\n \"rugoso\",\n \"ruivo\",\n \"rumo\",\n \"rupestre\",\n \"russo\",\n \"sabor\",\n \"saciar\",\n \"sacola\",\n \"sacudir\",\n \"sadio\",\n \"safira\",\n \"saga\",\n \"sagrada\",\n \"saibro\",\n \"salada\",\n \"saleiro\",\n \"salgado\",\n \"saliva\",\n \"salpicar\",\n \"salsicha\",\n \"saltar\",\n \"salvador\",\n \"sambar\",\n \"samurai\",\n \"sanar\",\n \"sanfona\",\n \"sangue\",\n \"sanidade\",\n \"sapato\",\n \"sarda\",\n \"sargento\",\n \"sarjeta\",\n \"saturar\",\n \"saudade\",\n \"saxofone\",\n \"sazonal\",\n \"secar\",\n \"secular\",\n \"seda\",\n \"sedento\",\n \"sediado\",\n \"sedoso\",\n \"sedutor\",\n \"segmento\",\n \"segredo\",\n \"segundo\",\n \"seiva\",\n \"seleto\",\n \"selvagem\",\n \"semanal\",\n \"semente\",\n \"senador\",\n \"senhor\",\n \"sensual\",\n \"sentado\",\n \"separado\",\n \"sereia\",\n \"seringa\",\n \"serra\",\n \"servo\",\n \"setembro\",\n \"setor\",\n \"sigilo\",\n \"silhueta\",\n \"silicone\",\n \"simetria\",\n \"simpatia\",\n \"simular\",\n \"sinal\",\n \"sincero\",\n \"singular\",\n \"sinopse\",\n \"sintonia\",\n \"sirene\",\n \"siri\",\n \"situado\",\n \"soberano\",\n \"sobra\",\n \"socorro\",\n \"sogro\",\n \"soja\",\n \"solda\",\n \"soletrar\",\n \"solteiro\",\n \"sombrio\",\n \"sonata\",\n \"sondar\",\n \"sonegar\",\n \"sonhador\",\n \"sono\",\n \"soprano\",\n \"soquete\",\n \"sorrir\",\n \"sorteio\",\n \"sossego\",\n \"sotaque\",\n \"soterrar\",\n \"sovado\",\n \"sozinho\",\n \"suavizar\",\n \"subida\",\n \"submerso\",\n \"subsolo\",\n \"subtrair\",\n \"sucata\",\n \"sucesso\",\n \"suco\",\n \"sudeste\",\n \"sufixo\",\n \"sugador\",\n \"sugerir\",\n \"sujeito\",\n \"sulfato\",\n \"sumir\",\n \"suor\",\n \"superior\",\n \"suplicar\",\n \"suposto\",\n \"suprimir\",\n \"surdina\",\n \"surfista\",\n \"surpresa\",\n \"surreal\",\n \"surtir\",\n \"suspiro\",\n \"sustento\",\n \"tabela\",\n \"tablete\",\n \"tabuada\",\n \"tacho\",\n \"tagarela\",\n \"talher\",\n \"talo\",\n \"talvez\",\n \"tamanho\",\n \"tamborim\",\n \"tampa\",\n \"tangente\",\n \"tanto\",\n \"tapar\",\n \"tapioca\",\n \"tardio\",\n \"tarefa\",\n \"tarja\",\n \"tarraxa\",\n \"tatuagem\",\n \"taurino\",\n \"taxativo\",\n \"taxista\",\n \"teatral\",\n \"tecer\",\n \"tecido\",\n \"teclado\",\n \"tedioso\",\n \"teia\",\n \"teimar\",\n \"telefone\",\n \"telhado\",\n \"tempero\",\n \"tenente\",\n \"tensor\",\n \"tentar\",\n \"termal\",\n \"terno\",\n \"terreno\",\n \"tese\",\n \"tesoura\",\n \"testado\",\n \"teto\",\n \"textura\",\n \"texugo\",\n \"tiara\",\n \"tigela\",\n \"tijolo\",\n \"timbrar\",\n \"timidez\",\n \"tingido\",\n \"tinteiro\",\n \"tiragem\",\n \"titular\",\n \"toalha\",\n \"tocha\",\n \"tolerar\",\n \"tolice\",\n \"tomada\",\n \"tomilho\",\n \"tonel\",\n \"tontura\",\n \"topete\",\n \"tora\",\n \"torcido\",\n \"torneio\",\n \"torque\",\n \"torrada\",\n \"torto\",\n \"tostar\",\n \"touca\",\n \"toupeira\",\n \"toxina\",\n \"trabalho\",\n \"tracejar\",\n \"tradutor\",\n \"trafegar\",\n \"trajeto\",\n \"trama\",\n \"trancar\",\n \"trapo\",\n \"traseiro\",\n \"tratador\",\n \"travar\",\n \"treino\",\n \"tremer\",\n \"trepidar\",\n \"trevo\",\n \"triagem\",\n \"tribo\",\n \"triciclo\",\n \"tridente\",\n \"trilogia\",\n \"trindade\",\n \"triplo\",\n \"triturar\",\n \"triunfal\",\n \"trocar\",\n \"trombeta\",\n \"trova\",\n \"trunfo\",\n \"truque\",\n \"tubular\",\n \"tucano\",\n \"tudo\",\n \"tulipa\",\n \"tupi\",\n \"turbo\",\n \"turma\",\n \"turquesa\",\n \"tutelar\",\n \"tutorial\",\n \"uivar\",\n \"umbigo\",\n \"unha\",\n \"unidade\",\n \"uniforme\",\n \"urologia\",\n \"urso\",\n \"urtiga\",\n \"urubu\",\n \"usado\",\n \"usina\",\n \"usufruir\",\n \"vacina\",\n \"vadiar\",\n \"vagaroso\",\n \"vaidoso\",\n \"vala\",\n \"valente\",\n \"validade\",\n \"valores\",\n \"vantagem\",\n \"vaqueiro\",\n \"varanda\",\n \"vareta\",\n \"varrer\",\n \"vascular\",\n \"vasilha\",\n \"vassoura\",\n \"vazar\",\n \"vazio\",\n \"veado\",\n \"vedar\",\n \"vegetar\",\n \"veicular\",\n \"veleiro\",\n \"velhice\",\n \"veludo\",\n \"vencedor\",\n \"vendaval\",\n \"venerar\",\n \"ventre\",\n \"verbal\",\n \"verdade\",\n \"vereador\",\n \"vergonha\",\n \"vermelho\",\n \"verniz\",\n \"versar\",\n \"vertente\",\n \"vespa\",\n \"vestido\",\n \"vetorial\",\n \"viaduto\",\n \"viagem\",\n \"viajar\",\n \"viatura\",\n \"vibrador\",\n \"videira\",\n \"vidraria\",\n \"viela\",\n \"viga\",\n \"vigente\",\n \"vigiar\",\n \"vigorar\",\n \"vilarejo\",\n \"vinco\",\n \"vinheta\",\n \"vinil\",\n \"violeta\",\n \"virada\",\n \"virtude\",\n \"visitar\",\n \"visto\",\n \"vitral\",\n \"viveiro\",\n \"vizinho\",\n \"voador\",\n \"voar\",\n \"vogal\",\n \"volante\",\n \"voleibol\",\n \"voltagem\",\n \"volumoso\",\n \"vontade\",\n \"vulto\",\n \"vuvuzela\",\n \"xadrez\",\n \"xarope\",\n \"xeque\",\n \"xeretar\",\n \"xerife\",\n \"xingar\",\n \"zangado\",\n \"zarpar\",\n \"zebu\",\n \"zelador\",\n \"zombar\",\n \"zoologia\",\n \"zumbido\"\n]\n\n},{}]},{},[50])(50)\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 var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'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};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'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};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// 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};","// 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});","// 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 _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'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}","// 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}","// 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};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceDerive = exports.pathRegex = void 0;\nexports.pathRegex = new RegExp(\"^m(\\\\/[0-9]+')+$\");\nexports.replaceDerive = (val) => val.replace(\"'\", '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.derivePath = exports.isValidPath = exports.getPublicKey = exports.getMasterKeyFromSeed = void 0;\nconst createHmac = require(\"create-hmac\");\nconst nacl = require(\"tweetnacl\");\nconst utils_1 = require(\"./utils\");\nconst ED25519_CURVE = 'ed25519 seed';\nconst HARDENED_OFFSET = 0x80000000;\nexports.getMasterKeyFromSeed = (seed) => {\n const hmac = createHmac('sha512', ED25519_CURVE);\n const I = hmac.update(Buffer.from(seed, 'hex')).digest();\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n key: IL,\n chainCode: IR,\n };\n};\nconst CKDPriv = ({ key, chainCode }, index) => {\n const indexBuffer = Buffer.allocUnsafe(4);\n indexBuffer.writeUInt32BE(index, 0);\n const data = Buffer.concat([Buffer.alloc(1, 0), key, indexBuffer]);\n const I = createHmac('sha512', chainCode)\n .update(data)\n .digest();\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n key: IL,\n chainCode: IR,\n };\n};\nexports.getPublicKey = (privateKey, withZeroByte = true) => {\n const keyPair = nacl.sign.keyPair.fromSeed(privateKey);\n const signPk = keyPair.secretKey.subarray(32);\n const zero = Buffer.alloc(1, 0);\n return withZeroByte ?\n Buffer.concat([zero, Buffer.from(signPk)]) :\n Buffer.from(signPk);\n};\nexports.isValidPath = (path) => {\n if (!utils_1.pathRegex.test(path)) {\n return false;\n }\n return !path\n .split('/')\n .slice(1)\n .map(utils_1.replaceDerive)\n .some(isNaN);\n};\nexports.derivePath = (path, seed, offset = HARDENED_OFFSET) => {\n if (!exports.isValidPath(path)) {\n throw new Error('Invalid derivation path');\n }\n const { key, chainCode } = exports.getMasterKeyFromSeed(seed);\n const segments = path\n .split('/')\n .slice(1)\n .map(utils_1.replaceDerive)\n .map(el => parseInt(el, 10));\n return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode });\n};\n","import * as helpers from \"./helpers\";\nimport nacl from \"tweetnacl\";\nimport * as bip39 from \"bip39\";\nimport bip32 from \"ed25519-hd-key\";\n\n/**\n * Create a wallet object for signing and verifying messages\n *\n * @param {Object} [args={}] Args Object\n * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from\n * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users\n * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages\n * @return {Object} Wallet Object with sign and verify methods\n */\nexport let create_wallet = (args = {}) => {\n let { sk = undefined, keepPrivate = false, seed = null } = args;\n\n let vk;\n\n if (sk) {\n vk = get_vk(sk);\n } else {\n let keyPair = new_wallet(seed);\n vk = keyPair.vk;\n sk = keyPair.sk;\n }\n\n const wallet = () => {\n return {\n sign: (msg) => sign(sk, msg),\n verify: (msg, sig) => verify(vk, msg, sig),\n vk,\n sk: !keepPrivate ? sk : undefined,\n };\n };\n\n return wallet();\n};\n\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function generate_keys(seed = null) {\n var kp = null;\n if (seed == null) {\n kp = nacl.sign.keyPair();\n } else {\n kp = nacl.sign.keyPair.fromSeed(seed);\n }\n // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey\n // and the vk is the last 32 bytes of the secretKey as well as the publicKey\n // {\n // 'publicKey': ,\n // 'secretKey': \n // }\n return {\n sk: new Uint8Array(kp[\"secretKey\"].slice(0, 32)),\n vk: new Uint8Array(kp[\"secretKey\"].slice(32, 64)),\n };\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return String vk\n * vk: A 64 character long hex representation of a verify key (public key)\n */\nexport function get_vk(sk) {\n var kp = format_to_keys(sk);\n var kpf = keys_to_format(kp);\n return kpf.vk;\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function format_to_keys(sk) {\n var skf = helpers.hex2buf(sk);\n var kp = generate_keys(skf);\n return kp;\n}\n/**\n * @param Object kp\n * kp: Object containing the properties sk and vk\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function keys_to_format(kp) {\n return {\n vk: helpers.buf2hex(kp.vk),\n sk: helpers.buf2hex(kp.sk),\n };\n}\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function new_wallet(seed = null) {\n const keys = generate_keys(seed);\n return keys_to_format(keys);\n}\n\n/**\n *\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}}\n * derivationIndex: bip32 derivation key index\n * vk: Verify Key (VK) represented as a 64 character hex string\n * sk: Signing Key (SK) represented as a 64 character hex string\n * mnemonic: 24 word seed phrase\n\n */\nfunction generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) {\n let finalMnemonic;\n\n if (mnemonic !== undefined) {\n finalMnemonic = mnemonic;\n } else {\n finalMnemonic = bip39.generateMnemonic(256);\n }\n\n const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString(\"hex\");\n\n const derivationPath = \"m/44'/789'/\" + derivationIndex + \"'/0'/0'\";\n const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000);\n\n const privateKey = key.toString(\"hex\");\n const publicKey = bip32.getPublicKey(key, false).toString(\"hex\");\n\n if (publicKey !== get_vk(privateKey)) {\n throw Error(\"Bip32 public key does not match with Lamden public key!\");\n }\n\n return {\n sk: privateKey,\n vk: publicKey,\n derivationIndex: derivationIndex,\n mnemonic: finalMnemonic,\n };\n}\n\n/**\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n *\n * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n * derivationIndex: Bip32 derivation index\n * mnemonic: 24 word seed phrase\n */\nexport function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) {\n return generate_keys_bip39(mnemonic, derivationIndex);\n}\n\n/**\n * @param String sk\n * @param Uint8Array msg\n * sk: A 64 character long hex representation of a signing key (private key)\n * msg: A Uint8Array of bytes representing the message you would like to sign\n *\n * @return String sig\n * sig: A 128 character long hex string representing the message's signature\n */\nexport function sign(sk, msg) {\n var kp = format_to_keys(sk);\n // This is required due to the secretKey required to sign a transaction\n // in the js implementation of NaCL being the combination of the sk and\n // vk for some stupid reason. That being said, we still want the sk and\n // vk objects to exist in 32-byte string format (same as cilantro's\n // python implementation) when presented to the user.\n var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk);\n return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk));\n}\n/**\n * @param String vk\n * @param Uint8Array msg\n * @param String sig\n * vk: A 64 character long hex representation of a verify key (public key)\n * msg: A Uint8Array (bytes) representation of a message that has been signed\n * sig: A 128 character long hex representation of a nacl signature\n *\n * @return Bool result\n * result: true if verify checked out, false if not\n */\nexport function verify(vk, msg, sig) {\n var vkb = helpers.hex2buf(vk);\n var sigb = helpers.hex2buf(sig);\n try {\n return nacl.sign.detached.verify(msg, sigb, vkb);\n } catch (_a) {\n return false;\n }\n}\n","export class EventEmitter {\n constructor() {\n this._events = {};\n }\n \n on(name, listener) {\n if (!this._events[name]) {\n this._events[name] = [];\n }\n\n this._events[name].push(listener);\n }\n \n removeListener(name, listenerToRemove) {\n if (!this._events[name]) {\n throw new Error(`Can't remove a listener. Event \"${name}\" doesn't exits.`);\n }\n\n const filterListeners = (listener) => listener !== listenerToRemove;\n this._events[name] = this._events[name].filter(filterListeners);\n }\n \n emit(name, data) {\n if (!this._events[name]) return\n \n const fireCallbacks = (callback) => {\n callback(data);\n };\n \n this._events[name].forEach(fireCallbacks);\n }\n }\n","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar global = getGlobal();\n\nmodule.exports = exports = global.fetch;\n\n// Needed for TypeScript and Webpack.\nif (global.fetch) {\n\texports.default = global.fetch.bind(global);\n}\n\nexports.Headers = global.Headers;\nexports.Request = global.Request;\nexports.Response = global.Response;",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2019 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if only one character,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.$|[+-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","import BigNumber from \"bignumber.js\";\nBigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 });\nBigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent\n\nexport function Encoder(type, value) {\n const throwError = (val) => {\n throw new Error(`Error encoding ${val} to ${type}`);\n };\n const countDecimals = (n) => {\n if (Math.floor(n) === n) return 0;\n try {\n return n.toString().split(\".\")[1].length;\n } catch (e) {\n return 0;\n }\n };\n const isString = (val) => typeof val === \"string\" || val instanceof String;\n const isArray = (val) => val && typeof val === \"object\" && val.constructor === Array;\n const isObject = (val) => val && typeof val === \"object\" && val.constructor === Object;\n const isDate = (val) => val instanceof Date;\n const isBoolean = (val) => typeof val === \"boolean\";\n\n const isNumber = (val) => {\n if (isArray(val)) return false;\n return !isNaN(encodeBigNumber(val).toNumber());\n };\n\n const isInteger = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return true;\n return false;\n };\n const encodeInt = (val) => {\n if (!isNumber(val)) throwError(val);\n else return parseInt(val);\n };\n const isFloat = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return false;\n return true;\n };\n const encodeFloat = (val) => {\n if (!isNumber(val)) throwError(val);\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n };\n const encodeNumber = (val) => {\n if (!isNumber(val)) throwError(val);\n if (isFloat(val)) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n }\n if (isInteger(val)) return parseInt(val);\n };\n const encodeBigNumber = (val) => {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return val;\n };\n\n const encodeBool = (val) => {\n if (isBoolean(val)) return val;\n if (val === \"true\" || val === 1) return true;\n if (val === \"false\" || val === 0) return false;\n throwError(val);\n };\n const encodeStr = (val) => {\n if (isString(val)) return val;\n if (isDate(val)) return val.toISOString();\n return JSON.stringify(val);\n };\n const encodeDateTime = (val) => {\n val = !isDate(val) ? new Date(val) : val;\n if (!isDate(val)) throwError(val);\n return {\n __time__: [\n val.getUTCFullYear(),\n val.getUTCMonth(),\n val.getUTCDate(),\n val.getUTCHours(),\n val.getUTCMinutes(),\n val.getUTCSeconds(),\n val.getUTCMilliseconds(),\n ],\n };\n };\n const encodeTimeDelta = (val) => {\n const time = isDate(val) ? val.getTime() : new Date(val).getTime();\n const days = parseInt(time / 1000 / 60 / 60 / 24);\n const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000;\n return { __delta__: [days, seconds] };\n };\n\n const encodeList = (val) => {\n if (isArray(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isArray(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeDict = (val) => {\n if (isObject(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isObject(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeObject = (val) => {\n try {\n return encodeList(val);\n } catch (e) {\n return encodeDict(val);\n }\n };\n\n function parseObject(obj) {\n const encode = (k, v) => {\n if (k === \"datetime\" || k === \"datetime.datetime\") return Encoder(\"datetime.datetime\", v);\n if (k === \"timedelta\" || k === \"datetime.timedelta\") return Encoder(\"datetime.timedelta\", v);\n if (k !== \"__fixed__\" && isFloat(v)) return encodeFloat(v);\n return v;\n };\n\n const fixDatetime = (k, v) => {\n const isDatetimeObject = (val) => {\n let datetimeTypes = [\"datetime.datetime\", \"datetime\", \"datetime.timedelta\", \"timedelta\"];\n return (\n Object.keys(val).length === 1 &&\n datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0\n );\n };\n\n if (v.constructor === Array) {\n v.map((val) => {\n if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]];\n //if (isFloat(val)) return encodeFloat(val)\n return val;\n });\n }\n if (v.constructor === Object) {\n if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]];\n }\n\n //if (isFloat(v)) return encodeFloat(v)\n\n return v;\n };\n\n let encodeValues = JSON.stringify(obj, encode);\n return JSON.parse(encodeValues, fixDatetime);\n }\n\n const encoder = {\n str: encodeStr,\n string: encodeStr,\n float: encodeFloat,\n int: encodeInt,\n bool: encodeBool,\n boolean: encodeBool,\n dict: encodeDict,\n list: encodeList,\n Any: () => value,\n \"datetime.timedelta\": encodeTimeDelta,\n \"datetime.datetime\": encodeDateTime,\n timedelta: encodeTimeDelta,\n datetime: encodeDateTime,\n number: encodeNumber,\n object: encodeObject,\n bigNumber: encodeBigNumber,\n };\n\n if (Object.keys(encoder).includes(type)) return encoder[type](value);\n else throw new Error(`Error: ${type} is not a valid encoder type.`);\n}\n\nEncoder.BigNumber = BigNumber;\n\nexport default { Encoder };\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport fetch from \"node-fetch\";\nimport { Encoder } from \"./encoder\";\n\nexport class LamdenMasterNode_API {\n constructor(networkInfoObj) {\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n\n send(method, path, data, overrideURL, callback) {\n let parms = \"\";\n if (Object.keys(data).includes(\"parms\")) {\n parms = this.createParms(data.parms);\n }\n\n let options = {};\n if (method === \"POST\") {\n let headers = { \"Content-Type\": \"application/json\" };\n options.method = method;\n options.headers = headers;\n options.body = data;\n }\n\n return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options)\n .then(async (res) => {\n if (res.status === 200) {\n let json = await res.json();\n callback(json, undefined);\n return json;\n } else {\n let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false;\n callback(undefined, error);\n return error;\n }\n })\n .catch((err) => {\n return callback(undefined, err.toString());\n });\n }\n\n createParms(parms) {\n if (Object.keys(parms).length === 0) return \"\";\n let parmString = \"?\";\n Object.keys(parms).forEach((key) => {\n parmString = `${parmString}${key}=${parms[key]}&`;\n });\n return parmString.slice(0, -1);\n }\n\n async getContractInfo(contractName) {\n const returnInfo = (res) => {\n try {\n if (res.name) return res;\n } catch (e) {}\n return null;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => returnInfo(res)).then((res) =>\n returnInfo(res)\n );\n }\n\n async getVariable(contract, variable, key = \"\") {\n let parms = {};\n if (validateTypes.isStringWithValue(key)) parms.key = key;\n\n let path = `/contracts/${contract}/${variable}/`;\n\n const returnValue = (res) => {\n try {\n if (res.value) return res.value;\n } catch (e) {}\n return null;\n };\n return this.send(\"GET\", path, { parms }, undefined, (res, err) => returnValue(res)).then(\n (res) => returnValue(res)\n );\n }\n\n async getContractMethods(contract) {\n const getMethods = (res) => {\n try {\n if (res.methods) return res.methods;\n } catch (e) {}\n return [];\n };\n let path = `/contracts/${contract}/methods`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getMethods(res)).then((res) =>\n getMethods(res)\n );\n }\n\n async getContractVariables(contract) {\n const getVariables = (res) => {\n try {\n if (res.variables) return res;\n } catch (e) {}\n return {};\n };\n let path = `/contracts/${contract}/variables`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getVariables(res)).then((res) =>\n getVariables(res)\n );\n }\n\n async pingServer() {\n const getStatus = (res) => {\n try {\n if (res.status) return true;\n } catch (e) {}\n return false;\n };\n let response = await this.send(\"GET\", \"/ping\", {}, undefined, (res, err) => getStatus(res));\n return getStatus(response);\n }\n\n async getCurrencyBalance(vk) {\n let balanceRes = await this.getVariable(\"currency\", \"balances\", vk);\n if (!balanceRes) return Encoder(\"bigNumber\", 0);\n if (balanceRes.__fixed__) return Encoder(\"bigNumber\", balanceRes.__fixed__);\n return Encoder(\"bigNumber\", balanceRes.toString());\n }\n\n async contractExists(contractName) {\n const exists = (res) => {\n try {\n if (res.name) return true;\n } catch (e) {}\n return false;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => exists(res)).then((res) =>\n exists(res)\n );\n }\n\n async sendTransaction(data, url = undefined, callback) {\n return this.send(\"POST\", \"/\", JSON.stringify(data), url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n\n async getNonce(sender, callback) {\n if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.`;\n let path = `/nonce/${sender}`;\n let url = this.host;\n return this.send(\"GET\", path, {}, url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, `Unable to get nonce for ${sender} on network ${url}`);\n return;\n }\n return `Unable to get nonce for ${sender} on network ${url}`;\n }\n res.masternode = url;\n if (callback) {\n callback(res, undefined);\n return;\n } else return res;\n });\n }\n\n checkTransaction(hash, callback) {\n const parms = { hash };\n return this.send(\"GET\", \"/tx\", { parms }, undefined, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n}\n","import { EventEmitter } from \"./eventEmitter\";\nimport validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport { LamdenMasterNode_API } from \"./masternode-api\";\n\nexport class Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // networkInfo: {\n // hosts: list of masternode hostname/ip urls,\n // type: \"testnet\", \"mainnet\" or \"custom\"\n // },\n constructor(networkInfoObj) {\n //Reject undefined or missing info\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.type = validateTypes.isStringWithValue(networkInfoObj.type)\n ? networkInfoObj.type.toLowerCase()\n : \"custom\";\n this.events = new EventEmitter();\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol)\n ? networkInfoObj.currencySymbol\n : \"TAU\";\n this.name = validateTypes.isStringWithValue(networkInfoObj.name)\n ? networkInfoObj.name\n : \"lamden network\";\n this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false;\n this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer)\n ? networkInfoObj.blockExplorer\n : undefined;\n\n this.online = false;\n try {\n this.API = new LamdenMasterNode_API(networkInfoObj);\n } catch (e) {\n throw new Error(e);\n }\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n //Check if the network is online\n //Emits boolean as 'online' event\n //Also returns status as well as passes status to a callback\n async ping(callback = undefined) {\n this.online = await this.API.pingServer();\n this.events.emit(\"online\", this.online);\n if (validateTypes.isFunction(callback)) callback(this.online);\n return this.online;\n }\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n async getNetworkInfo() {\n await this.ping();\n return {\n name: this.name,\n lamden: this.lamden,\n type: this.type,\n hosts: this.hosts,\n url: this.url,\n online: this.online,\n };\n }\n}\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport * as wallet from \"./wallet\";\nimport { Network } from \"./network\";\n\nexport class TransactionBuilder extends Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // arg[0] (networkInfo): { //Can also accpet a Lamden \"Network Class\"\n // host: masternode webserver hostname/ip,\n // type: \"testnet\", \"mainnet\" or \"mockchain\"\n // }\n // arg[1] (txInfo): {\n // uid: [Optional] unique ID for tracking purposes,\n // senderVk: public key of the transaction sender,\n // contractName: name of lamden smart contract,\n // methodName: name of method to call in contractName,\n // kwargs: key/values of args to pass to methodName\n // example: kwargs.to = \"270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e\"\n // kwargs.amount = 1000\n // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail.\n // nonce: [Optional] send() will attempt to retrieve this info automatically\n // processor [Optional] send() will attempt to retrieve this info automatically\n // }\n // arg[2] (txData): [Optional] state hydrating data\n constructor(networkInfo, txInfo, txData) {\n if (validateTypes.isSpecificClass(networkInfo, \"Network\")) super(networkInfo.getNetworkInfo());\n else super(networkInfo);\n\n //Validate arguments\n if (!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`);\n if (!validateTypes.isStringHex(txInfo.senderVk))\n throw new Error(`Sender Public Key Required (Type: Hex String)`);\n if (!validateTypes.isStringWithValue(txInfo.contractName))\n throw new Error(`Contract Name Required (Type: String)`);\n if (!validateTypes.isStringWithValue(txInfo.methodName))\n throw new Error(`Method Required (Type: String)`);\n if (!validateTypes.isInteger(txInfo.stampLimit))\n throw new Error(`Stamps Limit Required (Type: Integer)`);\n\n //Store variables in self for reference\n this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined;\n this.sender = txInfo.senderVk;\n this.contract = txInfo.contractName;\n this.method = txInfo.methodName;\n this.kwargs = {};\n if (validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs;\n this.stampLimit = txInfo.stampLimit;\n\n //validate and set nonce and processor if user provided them\n if (typeof txInfo.nonce !== \"undefined\") {\n if (!validateTypes.isInteger(txInfo.nonce))\n throw new Error(\n `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`\n );\n this.nonce = txInfo.nonce;\n }\n if (typeof txInfo.processor !== \"undefined\") {\n if (!validateTypes.isStringWithValue(txInfo.processor))\n throw new Error(\n `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`\n );\n this.processor = txInfo.processor;\n }\n\n this.signature;\n this.transactionSigned = false;\n\n //Transaction result information\n this.nonceResult = {};\n this.txSendResult = { errors: [] };\n this.txBlockResult = {};\n this.txHash;\n this.txCheckResult = {};\n this.txCheckAttempts = 0;\n this.txCheckLimit = 1;\n\n //Hydrate other items if passed\n if (txData) {\n if (txData.uid) this.uid = txData.uid;\n if (validateTypes.isObjectWithKeys(txData.txSendResult))\n this.txSendResult = txData.txSendResult;\n if (validateTypes.isObjectWithKeys(txData.nonceResult)) {\n this.nonceResult = txData.nonceResult;\n if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce;\n if (validateTypes.isStringWithValue(this.nonceResult.processor))\n this.processor = this.nonceResult.processor;\n }\n if (validateTypes.isObjectWithKeys(txData.txSendResult)) {\n this.txSendResult = txData.txSendResult;\n if (this.txSendResult.hash) this.txHash = this.txSendResult.hash;\n }\n if (validateTypes.isObjectWithKeys(txData.txBlockResult))\n this.txBlockResult = txData.txBlockResult;\n if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo;\n }\n //Create Capnp messages and transactionMessages\n this.makePayload();\n }\n makePayload() {\n this.payload = {\n contract: this.contract,\n function: this.method,\n kwargs: this.kwargs,\n nonce: this.nonce,\n processor: this.processor,\n sender: this.sender,\n stamps_supplied: this.stampLimit,\n };\n this.sortedPayload = this.sortObject(this.payload);\n }\n makeTransaction() {\n this.tx = {\n metadata: {\n signature: this.signature,\n timestamp: parseInt(+new Date() / 1000),\n },\n payload: this.sortedPayload.orderedObj,\n };\n }\n verifySignature() {\n //Verify the signature is correct\n if (!this.transactionSigned)\n throw new Error(\n \"Transaction has not be been signed. Use the sign() method first.\"\n );\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n return wallet.verify(this.sender, stringArray, this.signature);\n }\n sign(sk = undefined, userWallet = undefined) {\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n if (userWallet) this.signature = userWallet.sign(stringArray);\n else this.signature = wallet.sign(sk, stringArray);\n this.transactionSigned = true;\n }\n sortObject(object) {\n const processObj = (obj) => {\n const getType = (value) => {\n return Object.prototype.toString.call(value);\n };\n const isArray = (value) => {\n if (getType(value) === \"[object Array]\") return true;\n return false;\n };\n const isObject = (value) => {\n if (getType(value) === \"[object Object]\") return true;\n return false;\n };\n\n const sortObjKeys = (unsorted) => {\n const sorted = {};\n Object.keys(unsorted)\n .sort()\n .forEach((key) => (sorted[key] = unsorted[key]));\n return sorted;\n };\n\n const formatKeys = (unformatted) => {\n Object.keys(unformatted).forEach((key) => {\n if (isArray(unformatted[key]))\n unformatted[key] = unformatted[key].map((item) => {\n if (isObject(item)) return formatKeys(item);\n return item;\n });\n if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]);\n });\n return sortObjKeys(unformatted);\n };\n\n if (!isObject(obj)) throw new TypeError(\"Not a valid Object\");\n try {\n obj = JSON.parse(JSON.stringify(obj));\n } catch (e) {\n throw new TypeError(\"Not a valid JSON Object\");\n }\n return formatKeys(obj);\n };\n const orderedObj = processObj(object);\n return {\n orderedObj,\n json: JSON.stringify(orderedObj),\n };\n }\n async getNonce(callback = undefined) {\n let timestamp = new Date().toUTCString();\n this.nonceResult = await this.API.getNonce(this.sender);\n if (typeof this.nonceResult.nonce === \"undefined\") {\n throw new Error(this.nonceResult);\n }\n this.nonceResult.timestamp = timestamp;\n this.nonce = this.nonceResult.nonce;\n this.processor = this.nonceResult.processor;\n this.nonceMasternode = this.nonceResult.masternode;\n //Create payload object\n this.makePayload();\n\n if (!callback) return this.nonceResult;\n return callback(this.nonceResult);\n }\n async send(sk = undefined, masternode = undefined, callback = undefined) {\n //Error if transaction is not signed and no sk provided to the send method to sign it before sending\n if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned) {\n throw new Error(\n `Transation Not Signed: Private key needed or call sign() first`\n );\n }\n\n let timestamp = new Date().toUTCString();\n\n try {\n //If the nonce isn't set attempt to get it\n if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor))\n await this.getNonce();\n //if the sk is provided then sign the transaction\n if (validateTypes.isStringWithValue(sk)) this.sign(sk);\n //Serialize transaction\n this.makeTransaction();\n //Send transaction to the masternode\n let masternodeURL = masternode;\n if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode;\n let response = await this.API.sendTransaction(this.tx, masternodeURL);\n //Set error if txSendResult doesn't exist\n if (!response || validateTypes.isStringWithValue(response)) {\n this.txSendResult.errors = [response || \"Unknown Transaction Error\"];\n } else {\n if (response.error) this.txSendResult.errors = [response.error];\n else this.txSendResult = response;\n }\n } catch (e) {\n this.txSendResult.errors = [e.message];\n }\n this.txSendResult.timestamp = timestamp;\n return this.handleMasterNodeResponse(this.txSendResult, callback);\n }\n checkForTransactionResult(callback = undefined) {\n return new Promise((resolve) => {\n let timerId = setTimeout(\n async function checkTx() {\n this.txCheckAttempts = this.txCheckAttempts + 1;\n let res = await this.API.checkTransaction(this.txHash);\n let checkAgain = false;\n let timestamp = new Date().toUTCString();\n if (typeof res === \"string\" || !res) {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n res,\n ];\n }\n } else {\n if (res.error) {\n if (res.error === \"Transaction not found.\") {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n res.error,\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n ];\n }\n } else {\n this.txCheckResult.errors = [res.error];\n }\n } else {\n this.txCheckResult = res;\n }\n }\n if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000);\n else {\n if (validateTypes.isNumber(this.txCheckResult.status)) {\n if (this.txCheckResult.status > 0) {\n if (!validateTypes.isArray(this.txCheckResult.errors))\n this.txCheckResult.errors = [];\n this.txCheckResult.errors.push(\"This transaction returned a non-zero status code\");\n }\n }\n this.txCheckResult.timestamp = timestamp;\n clearTimeout(timerId);\n resolve(this.handleMasterNodeResponse(this.txCheckResult, callback));\n }\n }.bind(this),\n 1000\n );\n });\n }\n handleMasterNodeResponse(result, callback = undefined) {\n //Check to see if this is a successful transacation submission\n if (\n validateTypes.isStringWithValue(result.hash) &&\n validateTypes.isStringWithValue(result.success)\n ) {\n this.txHash = result.hash;\n this.setPendingBlockInfo();\n } else {\n this.setBlockResultInfo(result);\n this.txBlockResult = result;\n }\n this.events.emit(\"response\", result, this.resultInfo.subtitle);\n if (validateTypes.isFunction(callback)) callback(result);\n return result;\n }\n setPendingBlockInfo() {\n this.resultInfo = {\n title: \"Transaction Pending\",\n subtitle: \"Your transaction was submitted and is being processed\",\n message: `Tx Hash: ${this.txHash}`,\n type: \"success\",\n };\n return this.resultInfo;\n }\n setBlockResultInfo(result) {\n let erroredTx = false;\n let errorText = `returned an error and `;\n let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined;\n let stamps = result.stampsUsed || result.stamps_used || 0;\n let message = \"\";\n if (validateTypes.isArrayWithValues(result.errors)) {\n erroredTx = true;\n message = `This transaction returned ${result.errors.length} errors.`;\n if (result.result) {\n if (result.result.includes(\"AssertionError\")) result.errors.push(result.result);\n }\n }\n if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `;\n\n this.resultInfo = {\n title: `Transaction ${erroredTx ? \"Failed\" : \"Successful\"}`,\n subtitle: `Your transaction ${erroredTx ? `${errorText} ` : \"\"}used ${stamps} stamps`,\n message,\n type: `${erroredTx ? \"error\" : \"success\"}`,\n errorInfo: erroredTx ? result.errors : undefined,\n returnResult: result.result || \"\",\n stampsUsed: stamps,\n statusCode,\n };\n return this.resultInfo;\n }\n getResultInfo() {\n return this.resultInfo;\n }\n getTxInfo() {\n return {\n senderVk: this.sender,\n contractName: this.contract,\n methodName: this.method,\n kwargs: this.kwargs,\n stampLimit: this.stampLimit,\n };\n }\n getAllInfo() {\n return {\n uid: this.uid,\n txHash: this.txHash,\n signed: this.transactionSigned,\n tx: this.tx,\n signature: this.signature,\n networkInfo: this.getNetworkInfo(),\n txInfo: this.getTxInfo(),\n txSendResult: this.txSendResult,\n txBlockResult: this.txBlockResult,\n resultInfo: this.getResultInfo(),\n nonceResult: this.nonceResult,\n };\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes } = validators;\nimport { Network } from './network'\nimport { TransactionBuilder } from './transactionBuilder'\n\nexport class TransactionBatcher extends Network {\n constructor(networkInfo) {\n if (validateTypes.isSpecificClass(networkInfo, 'Network'))\n super(networkInfo.getNetworkInfo())\n else super(networkInfo)\n\n this.txBatches = {}\n this.overflow = []\n this.nonceResults = {}\n this.running = false;\n }\n addTransaction(txInfo){\n if (this.running) {\n this.overflow.push(txInfo)\n return\n }\n this.validateTransactionInfo(txInfo)\n if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []\n this.txBatches[txInfo.senderVk].push(txInfo)\n }\n addTransactionList(txList){\n txList.forEach(txInfo => this.addTransaction(txInfo))\n }\n processOverflow(){\n const overflow = this.overflow\n this.overflow = []\n overflow.forEach(txInfo => this.addTransaction(txInfo))\n }\n hasTransactions(){\n let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length)\n test.filter(f => f === 0)\n if (test.length > 0 ) return true\n return false\n }\n validateTransactionInfo(txInfo){\n try{\n new TransactionBuilder(txInfo)\n }catch(e){\n return false\n }\n return true\n }\n async getStartingNonce(senderVk, callback = undefined){\n let timestamp = new Date().toUTCString();\n let response = await this.API.getNonce(senderVk)\n if (typeof response.nonce === 'undefined'){\n throw new Error(response)\n }\n response.timestamp = timestamp\n this.nonceResults[senderVk] = response\n\n if (callback) callback(response)\n return response;\n }\n async sendAllBatches(keyDict){\n if (this.running) return\n let sentTransactions = []\n this.running = true;\n \n await Promise.all(Object.keys(this.txBatches).map((senderVk) => {\n const senderBatch = this.txBatches[senderVk].splice(0,15);\n if (senderBatch.length <= 15) delete this.txBatches[senderVk]\n \n return new Promise(async (resolver) => {\n if (senderBatch.length === 0 ) resolver()\n\n if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`)\n let nonceResponse = await this.getStartingNonce(senderVk)\n let txBatch = this.setBatchNonces(nonceResponse, senderBatch);\n this.signBatch(txBatch, keyDict[senderVk])\n this.sendBatch(txBatch).then(sentList => {\n sentTransactions = [...sentTransactions, ...sentList]\n resolver()\n }) \n })\n }))\n\n try{\n return Promise.all(sentTransactions)\n }catch (e){}\n finally{\n this.running = false;\n this.processOverflow();\n }\n }\n setBatchNonces(nonceResult, txList){\n return txList.map((txInfo, index) => {\n txInfo.nonce = nonceResult.nonce + index\n txInfo.processor = nonceResult.processor\n return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo)\n }).sort((a, b) => a.nonce - b.nonce)\n }\n signBatch(txBatch, key){\n txBatch.forEach(txBuilder => txBuilder.sign(key))\n }\n sendBatch(txBatch){\n let resolvedTransactions = []\n return new Promise(resolver => {\n const resolve = (index) => {\n if ((index + 1) === txBatch.length) resolver(resolvedTransactions)\n }\n txBatch.forEach((txBuilder, index) => {\n const delayedSend = () => {\n resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder})\n resolve(index)\n }\n setTimeout(delayedSend, 1200 * index)\n })\n })\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes, assertTypes } = validators;\nimport * as helpers from './helpers';\nimport * as wallet from './wallet'\n\nexport class Keystore {\n /**\n * Lamden Keystores\n *\n * This Class will create a lamden keystore instance\n *\n * @param {Object|undefined} arg constructor argument\n * @param {String|undefined} arg.key Create an instance and load it with one private key\n * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys\n * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data\n * @return {Keystore}\n */\n constructor(arg = undefined) {\n this.KEYSTORE_VERSION = \"1.0\"\n this.password = null\n this.encryptedData = null;\n\n this.keyList = (() => {\n let keyList = []\n let outerClass = this\n let wallets = []\n\n const addKey = (key) => {\n keyList.push(key)\n createWallets()\n }\n const deleteKey = (position) => {\n keyList.splice(position, 1);\n createWallets()\n }\n const clearKeys = () => {\n keyList = []\n createWallets()\n }\n const numOfKeys = () => keyList.length\n const createWallets = () => {\n wallets = []\n keyList.forEach(keyInfo => {\n let newWallet = wallet.create_wallet({sk: keyInfo.sk, keepPrivate: true})\n newWallet = {...newWallet, ...keyInfo}\n delete newWallet.sk\n wallets.push(newWallet)\n })\n }\n const createKeystore = (password, hint = undefined) => {\n return JSON.stringify({\n data: helpers.encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}),\n w: !hint ? \"\" : helpers.encryptStrHash('n1ahcKc0lb', hint),\n });\n }\n const decryptKeystore = (password, data) => {\n let decrypted = helpers.decryptObject(password, data)\n if (decrypted) {\n assertTypes.isArray(decrypted.keyList)\n decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk))\n decrypted.keyList.forEach(keyInfo => addKey(keyInfo))\n outerClass.version = decrypted.version\n } else {\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n\n return {\n getWallets: () => wallets,\n getWallet: (vk) => wallets.find(wallet => wallet.vk === vk),\n addKey, \n clearKeys, \n numOfKeys,\n deleteKey,\n createKeystore,\n decryptKeystore\n }\n })()\n\n if (arg){\n if (arg.key) this.addKey(arg.key)\n if (arg.keyList) this.addKeys(arg.keyList)\n if (arg.keystoreData) this.addKeystoreData(arg.keystoreData)\n }\n }\n /**\n * Add a list of keys to add to the keystore\n * @param {Array.} keyList An array of 32 character long Lamden private keys\n */\n addKeys(keyList){\n assertTypes.isArray(keyList)\n keyList.forEach(key => this.addKey(key))\n }\n /**\n * Add a key to the keystore\n * @param {string} key A 32 character long Lamden private key\n */\n addKey(keyInfo){\n assertTypes.isObjectWithKeys(keyInfo)\n assertTypes.isStringWithValue(keyInfo.sk)\n if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk\n this.keyList.addKey(keyInfo)\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {string} keystoreData The contents of an existing encrypted keystore file\n */\n addKeystoreData(keystoreData){\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n if(this.validateKeyStore(keystoreData)){\n this.encryptedData = keystoreData\n }\n }\n /**\n * Returns the password hint in a keystore file\n * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor\n */\n getPasswordHint(keystoreData = undefined){\n if (!this.encryptedData && !keystoreData) throw new Error(\"No keystore data found.\")\n\n if (keystoreData) {\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n }\n else keystoreData = this.encryptedData\n\n if (keystoreData.w) return helpers.decryptStrHash('n1ahcKc0lb', keystoreData.w);\n else return \"\"\n }\n /**\n * Removes a specific key from the keyList\n * @param {Number} keyIndex The index of the key you want to remove\n */\n deleteKey(keyIndex){\n assertTypes.isInteger(keyIndex)\n if (this.keyList.numOfKeys() === 0) return\n if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error(\"Key index out of range.\")\n this.keyList.deleteKey(keyIndex)\n }\n /**\n * Clears all keys from the keystore\n */\n clearKeys(){\n this.keyList.clearKeys()\n }\n /**\n * Clears all keys from the keystore\n * @return {Array.} An array of wallet objects\n */\n get wallets() {\n return this.keyList.getWallets()\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {String} vk A 32 character long Lamden public key\n * @return {Object} A wallet object\n */\n getWallet(vk) {\n return this.keyList.getWallet(vk)\n }\n /**\n * Used to validate that a keystore is the proper Lamden Format (does not decrypt data)\n * @param {String} keystoreData The contents of an existing encrypted keystore file\n * @return {Boolean} valid\n * @throws {Error} This is not a valid keystore file.\n */\n validateKeyStore(keystoreData){\n assertTypes.isObjectWithKeys(keystoreData)\n try{\n let encryptedData = JSON.parse(keystoreData.data);\n if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){\n throw new Error(\"This is not a valid keystore file.\")\n }\n } catch (e) {\n throw new Error(\"This is not a valid keystore file.\")\n }\n return true;\n }\n /**\n * Create a Keystore text string from the keys contained in the Keystore instance\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password.\n * @return {String} A JSON stringified object containing the encrypted data\n * @throws {Error} Any errors from the encyption process\n */\n createKeystore(password, hint = undefined) {\n assertTypes.isStringWithValue(password)\n if (hint){\n assertTypes.isStringWithValue(hint)\n }\n return this.keyList.createKeystore(password, hint)\n }\n /**\n * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore.\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor.\n * @throws {Error} Any errors from the encyption process\n */\n decryptKeystore(password, keystoreData = undefined){\n if (keystoreData) this.addKeystoreData(keystoreData)\n if (!this.encryptedData) throw new Error (\"No keystoreData to decrypt.\")\n try{\n this.keyList.decryptKeystore(password, this.encryptedData.data)\n }catch (e){\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n}\n","import { TransactionBuilder } from \"./js/transactionBuilder\";\nimport { TransactionBatcher } from \"./js/transactionBatcher\";\nimport { Network } from \"./js/network\";\nimport { Encoder } from \"./js/encoder\";\nimport { Keystore } from \"./js/keystore\";\nimport { LamdenMasterNode_API as Masternode_API } from \"./js/masternode-api\";\nimport * as wallet from \"./js/wallet\";\nimport * as utils from \"./js/helpers\";\nimport { Buffer } from \"buffer\";\n\nglobalThis.Buffer = Buffer;\n\nexport default {\n TransactionBuilder,\n TransactionBatcher,\n Masternode_API,\n Network,\n wallet,\n Keystore,\n Encoder,\n utils,\n};\n"],"names":["this","CryptoJS","undefined","require$$0","JsonFormatter","require$$1","nodeCryptoJs","validateTypes","assertTypes","require","global","inherits_browserModule","ieee754","buffer","Buffer","StringDecoder","Transform","require$$2","inherits","require$$3","Base","ZEROS","Hmac","_defineProperty","_require","errorOrDestroy","getHighWaterMark","browser","Writable","Duplex","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","require$$4","_require$codes","require$$5","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_DESTROYED","require$$6","require$$7","prefinish","Readable","once","noop","isRequest","eos","createReadableStreamAsyncIterator","require$$8","require$$9","require$$10","require$$11","require$$12","HashBase","ARRAY16","MD5","rotl","md5","RIPEMD160","Hash","K","W","rotl5","rotl30","ft","sha","Sha256","maj","sigma0","sigma1","sha_jsModule","helpers.hex2buf","helpers.buf2hex","bip39.generateMnemonic","bip39.mnemonicToSeedSync","helpers.concatUint8Arrays","wallet.verify","wallet.sign","wallet.create_wallet","helpers.encryptObject","helpers.encryptStrHash","helpers.decryptObject","helpers.decryptStrHash","Masternode_API","utils"],"mappings":"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AAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA;AACA,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,WAAW,EAAE,YAAY;AACjC;AACA,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AACvC;AACA,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAClD,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9C;AACA;AACA,YAAY,SAAS,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;AACxE;AACA,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;AACnE,YAAY,IAAI,WAAW,GAAG,UAAU,CAAC;AACzC,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3D,gBAAgB,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,WAAW,KAAK,EAAE,CAAC,IAAI,UAAU;AAC1E,iBAAiB,CAAC,CAAC,WAAW,IAAI,EAAE,KAAK,WAAW,KAAK,CAAC,CAAC,KAAK,UAAU,CAAC;AAC3E,aAAa,CAAC;AACd,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3D,gBAAgB,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,WAAW,KAAK,EAAE,CAAC,IAAI,UAAU;AAC1E,iBAAiB,CAAC,CAAC,WAAW,IAAI,EAAE,KAAK,WAAW,KAAK,CAAC,CAAC,KAAK,UAAU,CAAC;AAC3E,aAAa,CAAC;AACd;AACA,YAAY,IAAI,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACvD;AACA;AACA,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B;AACA;AACA,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B;AACA;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC;AACA,gBAAgB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,IAAI,UAAU;AACjE,wBAAwB,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;AACnE,aAAa;AACb;AACA;AACA,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,KAAK,EAAE,YAAY;AAC3B,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,YAAY,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC7C;AACA,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxC,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC,IAAI,CAAC;;AC/PP,IAAIA,UAAQ,GAAGE,IAAiB,CAAC,QAAQ,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY;AACb;AACA,IAAI,IAAI,CAAC,GAAGF,UAAQ,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACpC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AACzB,YAAY,OAAO,EAAE,GAAG,CAAC,EAAE;AAC3B,YAAY,MAAM,EAAE,GAAG;AACvB,YAAY,UAAU,EAAE,CAAC;AACzB,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,EAAE,UAAU,GAAG,EAAE;AAC7B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,QAAQ,EAAE,IAAI,EAAE;AAC3C;AACA,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B;AACA;AACA,YAAY,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C;AACA;AACA,YAAY,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AAChD;AACA;AACA,YAAY,IAAI,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC;AACnD,YAAY,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACtC,YAAY,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAC5C;AACA;AACA,YAAY,OAAO,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE;AACrD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,iBAAiB;AACjB,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnE,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC;AAC/B;AACA;AACA,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACrD,oBAAoB,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,oBAAoB,MAAM,CAAC,KAAK,EAAE,CAAC;AACnC,iBAAiB;AACjB;AACA,gBAAgB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,aAAa;AACb,YAAY,UAAU,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;AAC9C;AACA,YAAY,OAAO,UAAU,CAAC;AAC9B,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE;AAC9C,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN,CAAC,EAAE;;ACvHH,IAAIA,UAAQ,GAAGE,IAAiB,CAAC,QAAQ,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAF,UAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,UAAUC,WAAS,EAAE;AAC7C;AACA,IAAI,IAAI,CAAC,GAAGD,UAAQ,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACpC,IAAI,IAAI,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;AAC9D,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,IAAe,KAAK,CAAC,KAAK;AAC1B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,EAAE,UAAU,GAAG,EAAE,GAAG,EAAE;AAC7C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,EAAE,UAAU,GAAG,EAAE,GAAG,EAAE;AAC7C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,EAAE,UAAU,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7C;AACA,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C;AACA;AACA,YAAY,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACxC,YAAY,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAC5B;AACA;AACA,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK,EAAE,YAAY;AAC3B;AACA,YAAY,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD;AACA;AACA,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,UAAU,EAAE;AACvC;AACA,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACrC;AACA;AACA,YAAY,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,QAAQ,EAAE,UAAU,UAAU,EAAE;AACxC;AACA,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzC,aAAa;AACb;AACA;AACA,YAAY,IAAI,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACxD;AACA,YAAY,OAAO,kBAAkB,CAAC;AACtC,SAAS;AACT;AACA,QAAQ,OAAO,EAAE,GAAG,CAAC,EAAE;AACvB;AACA,QAAQ,MAAM,EAAE,GAAG,CAAC,EAAE;AACtB;AACA,QAAQ,eAAe,EAAE,CAAC;AAC1B;AACA,QAAQ,eAAe,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa,GAAG,YAAY;AACpC,YAAY,SAAS,oBAAoB,CAAC,GAAG,EAAE;AAC/C,gBAAgB,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE;AAC5C,oBAAoB,OAAO,mBAAmB,CAAC;AAC/C,iBAAiB,MAAM;AACvB,oBAAoB,OAAO,kBAAkB,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb;AACA,YAAY,OAAO,UAAU,MAAM,EAAE;AACrC,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,UAAU,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1D,wBAAwB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5F,qBAAqB;AACrB;AACA,oBAAoB,OAAO,EAAE,UAAU,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7D,wBAAwB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/F,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd,SAAS,EAAE,CAAC;AACZ,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,IAAuB,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1D,QAAQ,WAAW,EAAE,YAAY;AACjC;AACA,YAAY,IAAI,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAChE;AACA,YAAY,OAAO,oBAAoB,CAAC;AACxC,SAAS;AACT;AACA,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK,EAAE;AACP;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;AAC7B;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE;AAC/C,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE;AAC/C,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE;AACpC,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAClC,YAAY,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,YAAY;AACxC;AACA;AACA;AACA,QAAQ,IAAI,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;AAC3C;AACA;AACA;AACA;AACA,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY,EAAE,UAAU,KAAK,EAAE,MAAM,EAAE;AACnD;AACA,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC1C,gBAAgB,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjD;AACA;AACA,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9D,gBAAgB,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD;AACA;AACA,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAC1E,aAAa;AACb,SAAS,CAAC,CAAC;AACX;AACA;AACA;AACA;AACA,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY,EAAE,UAAU,KAAK,EAAE,MAAM,EAAE;AACnD;AACA,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC1C,gBAAgB,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjD;AACA;AACA,gBAAgB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AACxE;AACA;AACA,gBAAgB,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9D;AACA;AACA,gBAAgB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5C,aAAa;AACb,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD;AACA,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC9B;AACA;AACA,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,IAAI,KAAK,GAAG,EAAE,CAAC;AAC/B;AACA;AACA,gBAAgB,IAAI,CAAC,GAAG,GAAGC,WAAS,CAAC;AACrC,aAAa,MAAM;AACnB,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5C,aAAa;AACb;AACA;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AAChD,gBAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,CAAC,CAAC;AACT;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3B;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,UAAU,IAAI,EAAE,SAAS,EAAE;AACxC;AACA,YAAY,IAAI,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC;AAC/C;AACA;AACA,YAAY,IAAI,aAAa,GAAG,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAChF;AACA;AACA,YAAY,IAAI,WAAW,GAAG,CAAC,aAAa,IAAI,EAAE,KAAK,aAAa,IAAI,EAAE,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC;AACnH;AACA;AACA,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE;AACvD,gBAAgB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/C,aAAa;AACb,YAAY,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACxE;AACA;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK,EAAE,UAAU,IAAI,EAAE;AAC/B;AACA,YAAY,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7E;AACA;AACA,YAAY,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC;AAC3C,SAAS;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAsB,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,YAAY,IAAI,EAAE,GAAG;AACrB,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS,CAAC;AACV;AACA,QAAQ,KAAK,EAAE,YAAY;AAC3B;AACA,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC;AACA;AACA,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B,YAAY,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;AAC5B,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC;AACA;AACA,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE;AACzD,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;AACvD,aAAa,yDAAyD;AACtE,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;AACvD;AACA;AACA,gBAAgB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AACtE,SAAS;AACT;AACA,QAAQ,eAAe,EAAE,UAAU,KAAK,EAAE,MAAM,EAAE;AAClD,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,SAAS;AACT;AACA,QAAQ,WAAW,EAAE,YAAY;AACjC;AACA,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3C;AACA;AACA,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE;AACzD;AACA,gBAAgB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD;AACA;AACA,gBAAgB,IAAI,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpE,aAAa,yDAAyD;AACtE;AACA,gBAAgB,IAAI,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpE;AACA;AACA,gBAAgB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACpD,aAAa;AACb;AACA,YAAY,OAAO,oBAAoB,CAAC;AACxC,SAAS;AACT;AACA,QAAQ,SAAS,EAAE,GAAG,CAAC,EAAE;AACzB,KAAK,EAAE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,EAAE,UAAU,YAAY,EAAE;AACtC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,QAAQ,EAAE,UAAU,SAAS,EAAE;AACvC,YAAY,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG,QAAQ,CAAC,OAAO,GAAG;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,EAAE,UAAU,YAAY,EAAE;AAC3C;AACA,YAAY,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AACrD,YAAY,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AACzC;AACA;AACA,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3G,aAAa,MAAM;AACnB,gBAAgB,IAAI,SAAS,GAAG,UAAU,CAAC;AAC3C,aAAa;AACb;AACA,YAAY,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK,EAAE,UAAU,UAAU,EAAE;AACrC;AACA,YAAY,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACtD;AACA;AACA,YAAY,IAAI,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC;AACnD;AACA;AACA,YAAY,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE;AACtF;AACA,gBAAgB,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE;AACA;AACA,gBAAgB,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,gBAAgB,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC1C,aAAa;AACb;AACA,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,SAAS;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AACzB,YAAY,MAAM,EAAE,gBAAgB;AACpC,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AACtD;AACA,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC;AACA;AACA,YAAY,IAAI,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,YAAY,IAAI,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzD;AACA;AACA,YAAY,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;AAC1C;AACA;AACA,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC;AACvC,gBAAgB,UAAU,EAAE,UAAU;AACtC,gBAAgB,GAAG,EAAE,GAAG;AACxB,gBAAgB,EAAE,EAAE,SAAS,CAAC,EAAE;AAChC,gBAAgB,SAAS,EAAE,MAAM;AACjC,gBAAgB,IAAI,EAAE,SAAS,CAAC,IAAI;AACpC,gBAAgB,OAAO,EAAE,SAAS,CAAC,OAAO;AAC1C,gBAAgB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3C,gBAAgB,SAAS,EAAE,GAAG,CAAC,MAAM;AACrC,aAAa,CAAC,CAAC;AACf,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;AACzD;AACA,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC;AACA;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7D;AACA;AACA,YAAY,IAAI,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC7F;AACA,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,EAAE,UAAU,UAAU,EAAE,MAAM,EAAE;AAC9C,YAAY,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE;AAC/C,gBAAgB,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACtD,aAAa,MAAM;AACnB,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3B;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;AAC5D;AACA,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb;AACA;AACA,YAAY,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3F;AACA;AACA,YAAY,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5E,YAAY,GAAG,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;AACvC;AACA;AACA,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,SAAS;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACpF;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3C,YAAY,GAAG,EAAE,UAAU;AAC3B,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC3D;AACA,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC;AACA;AACA,YAAY,IAAI,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACzF;AACA;AACA,YAAY,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;AACtC;AACA;AACA,YAAY,IAAI,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5G;AACA;AACA,YAAY,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5C;AACA,YAAY,OAAO,UAAU,CAAC;AAC9B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE,UAAU,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC9D;AACA,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC;AACA;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7D;AACA;AACA,YAAY,IAAI,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1G;AACA;AACA,YAAY,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;AACtC;AACA;AACA,YAAY,IAAI,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9G;AACA,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC,EAAE,CAAC;;ACh2BJ,IAAID,UAAQ,GAAGE,IAAiB,CAAC,QAAQ,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY;AACb;AACA,IAAI,IAAI,CAAC,GAAGF,UAAQ,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACxC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB;AACA;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC;AAC3B;AACA;AACA,IAAI,CAAC,YAAY;AACjB;AACA,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,IAAI,CAAC,GAAG,GAAG,EAAE;AACzB,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAa,MAAM;AACnB,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AACxC,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;AACnB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC;AACA,YAAY,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxE,YAAY,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACjD,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACzB,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA;AACA,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B;AACA;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;AACvD,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACvF,YAAY,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,YAAY,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACvD,YAAY,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACvD,YAAY,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClC;AACA;AACA,YAAY,IAAI,CAAC,CAAC,EAAE;AACpB,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3B,aAAa,MAAM;AACnB,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS;AACT,KAAK,EAAE,EAAE;AACT;AACA;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClF;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;AAC9C,QAAQ,QAAQ,EAAE,YAAY;AAC9B;AACA,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAChC,YAAY,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC3C;AACA;AACA,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,EAAC;AACrD;AACA;AACA,YAAY,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C;AACA;AACA,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACrD,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzD,gBAAgB,IAAI,KAAK,GAAG,OAAO,EAAE;AACrC,oBAAoB,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,iBAAiB,MAAM;AACvB,oBAAoB,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnD;AACA,oBAAoB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE;AAC5C;AACA,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD;AACA;AACA,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtI;AACA;AACA,wBAAwB,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,qBAAqB,MAAM,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE;AACpE;AACA,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtI,qBAAqB;AACrB;AACA,oBAAoB,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1E,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3D,YAAY,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE;AAClE,gBAAgB,IAAI,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9C;AACA,gBAAgB,IAAI,QAAQ,GAAG,CAAC,EAAE;AAClC,oBAAoB,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/C,iBAAiB,MAAM;AACvB,oBAAoB,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnD,iBAAiB;AACjB;AACA,gBAAgB,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AAChD,oBAAoB,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjD,iBAAiB,MAAM;AACvB,oBAAoB,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;AACrH,+CAA+C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACrH,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA,QAAQ,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/G,SAAS;AACT;AACA,QAAQ,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE;AAC3C;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACtI;AACA;AACA,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT;AACA,QAAQ,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;AAC3G;AACA,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AACxC;AACA;AACA,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACpD;AACA;AACA,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC;AAC1B;AACA;AACA,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;AAC1D;AACA,gBAAgB,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3J,gBAAgB,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3J,gBAAgB,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3J,gBAAgB,IAAI,EAAE,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3J;AACA;AACA,gBAAgB,EAAE,GAAG,EAAE,CAAC;AACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC;AACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC;AACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC;AACxB,aAAa;AACb;AACA;AACA,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5J,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5J,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5J,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5J;AACA;AACA,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAC/B,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B,SAAS;AACT;AACA,QAAQ,OAAO,EAAE,GAAG,CAAC,EAAE;AACvB,KAAK,CAAC,CAAC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,EAAE;;;;ACtNH,IAAIA,UAAQ,GAAGE,IAAiB,CAAC,QAAQ,CAAC;AAC1C;AACA;AACA,IAAIC,eAAa,GAAG;AACpB,CAAC,SAAS,EAAE,UAAU,YAAY,EAAE;AACpC;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,GAAG,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAACH,UAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5D,GAAG,CAAC;AACJ;AACA;AACA,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE;AACvB,GAAG,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC3C,GAAG;AACH;AACA,EAAE,IAAI,YAAY,CAAC,IAAI,EAAE;AACzB,GAAG,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5C,GAAG;AACH;AACA;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE;AACF;AACA,CAAC,KAAK,EAAE,UAAU,OAAO,EAAE;AAC3B;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACpC;AACA;AACA,EAAE,IAAI,YAAY,GAAGA,UAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AACtD,GAAG,UAAU,EAAEA,UAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACpD,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;AAClB,GAAG,YAAY,CAAC,EAAE,GAAGA,UAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxD,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE;AACjB,GAAG,YAAY,CAAC,IAAI,GAAGA,UAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,OAAO,YAAY,CAAC;AACtB,EAAE;AACF,CAAC,CAAC;AACF;2BACqB,GAAGG;;AC7CxB,IAAIH,UAAQ,GAAGE,IAAqB,CAAC,QAAQ,CAAC;AAClB;AACP;AACG;AACK;AACR;AACrB,IAAIC,eAAa,GAAGC,aAA8B,CAAC,aAAa,CAAC;AACjE;iBACgB,GAAGJ,WAAS;sBACP,GAAGG;;ACRxB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAGE,QAAY,CAAC;AAEjD,MAAM,iBAAEC,eAAa,eAAEC,aAAW,EAAE,GAAG,UAAU,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE;AAC7C,EAAEA,aAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1C,EAAEA,aAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;AACxE,IAAI,MAAM,EAAE,aAAa;AACzB,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChB,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE;AACnD,EAAEA,aAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1C,EAAEA,aAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AACzF,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;AACjD,EAAEA,aAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1C,EAAEA,aAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpE,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE;AAC1D,EAAEA,aAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1C,EAAEA,aAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACjD;AACA,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACtE,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE;AACxD,QAAQ,KAAK;AACb,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC/C,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AACD;AACO,SAAS,OAAO,CAAC,MAAM,EAAE;AAChC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG;AAC5B,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AACM,SAAS,OAAO,CAAC,SAAS,EAAE;AACnC,EAAE,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9D,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACM,SAAS,OAAO,CAAC,MAAM,EAAE;AAChC,EAAE,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,EAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AACM,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;AAClD,EAAE,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClB,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACM,SAAS,MAAM,CAAC,GAAG,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AACM,SAAS,MAAM,CAAC,GAAG,EAAE;AAC5B,EAAE,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxC,EAAE,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AACpC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACM,SAAS,OAAO,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACM,SAAS,OAAO,CAAC,IAAI,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;AACrE,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACM,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,QAAQ,GAAG,gEAAgE,CAAC;AAClF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AACzC,EAAE,IAAI,QAAQ,GAAG,kBAAkB,CAAC;AACpC,EAAE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;AAC/F,CAAC;AACD;AACO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,EAAE,IAAID,eAAa,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AAC7E,EAAE,OAAO,KAAK,CAAC;AACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3IA,CAAC,SAAS,IAAI,EAAE;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE;AACxB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;AAClC,EAAE,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACA;AACA,IAAI,WAAW,GAAG,qBAAqB,EAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AACvE;AACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,IAAI,GAAG,GAAG,EAAE,EAAE;AACd,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7I,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5I,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7I;AACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC7B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC7B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAC7B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,CAAC;AACD;AACA,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAC7B,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACd,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACxC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACxC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AACD;AACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CA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AI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG;AACH,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,I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,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,yBAAyB,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACrC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,E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EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACjC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC;AAC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AAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;AACrD,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd;AACA,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACrB,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,IAAI,IAAI,IAAI,GAAG,KAAK;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC;AACnB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;AAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,IAAI,IAAI,CAAC;AAClB,IAAI,IAAI,IAAI,IAAI,CAAC;AACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AAC1B,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,MAAM,OAAO;AACb,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,KAAK,IAAI,EAAE,EAAE;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAI,IAAI,IAAI,IAAI,CAAC;AACjB,IAAI,KAAK,IAAI,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;AAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC3B,GAAG;AACH,CAAC,CAAC;AACF;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACxB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3D,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACxB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACxB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,yBAAyB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClB,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzB,GAAG;AACH,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,GAAG;AACH,CAAC;AACD;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACd,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACzB,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACzB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AACvB,KAAK;AACL,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACxB,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;AACpB,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,GAAG;AACH,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACrD,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,EAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AACD;AACA,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;AAClB,CAAC;AACD;AACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB,EAAE,IAAI,CAAC,EAAE,CAAC;AACV,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1E,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AAC1E,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AAC1E,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACjE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB;AACA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB;AACA;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,G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,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAAS,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CA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AAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC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CT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,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AChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD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AAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,I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,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV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,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT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,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX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,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV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,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV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d,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,UAAU;AAC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AAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,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,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EA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AE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAA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EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE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IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACt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,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CA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G,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,CAAC;AACD;AACA,SAAS,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AACD;AACA,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AACtG;AACA;AACA,SAAS,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE;AAClB,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,IAAI,IAAI,EAAE,CAAC;AACf,IAAI,IAAI,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE;AAClB,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,IAAI,IAAI,EAAE,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACb,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,EAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,SAAS,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,EAAE,OAAO,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,SAAS,GAAG,EAAE;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACf;AACA,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACrC;AACA,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,yBAAyB,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACrC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GA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AAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,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AAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB;AACA;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,EAAE,C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AG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACnC;AACA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACd,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb;AACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA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"} \ No newline at end of file diff --git a/dist/lamden.js b/dist/lamden.js deleted file mode 100644 index 83aef17..0000000 --- a/dist/lamden.js +++ /dev/null @@ -1,6633 +0,0 @@ -'use strict'; - -var global$1 = (typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - -var lookup = []; -var revLookup = []; -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; -var inited = false; -function init () { - inited = true; - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; - } - - revLookup['-'.charCodeAt(0)] = 62; - revLookup['_'.charCodeAt(0)] = 63; -} - -function toByteArray (b64) { - if (!inited) { - init(); - } - var i, j, l, tmp, placeHolders, arr; - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(len * 3 / 4 - placeHolders); - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len; - - var L = 0; - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; - arr[L++] = (tmp >> 16) & 0xFF; - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[L++] = tmp & 0xFF; - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); - output.push(tripletToBase64(tmp)); - } - return output.join('') -} - -function fromByteArray (uint8) { - if (!inited) { - init(); - } - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var output = ''; - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - output += lookup[tmp >> 2]; - output += lookup[(tmp << 4) & 0x3F]; - output += '=='; - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); - output += lookup[tmp >> 10]; - output += lookup[(tmp >> 4) & 0x3F]; - output += lookup[(tmp << 2) & 0x3F]; - output += '='; - } - - parts.push(output); - - return parts.join('') -} - -function read (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -function write (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -} - -var toString = {}.toString; - -var isArray = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -var INSPECT_MAX_BYTES = 50; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined - ? global$1.TYPED_ARRAY_SUPPORT - : true; - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length); - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length); - } - that.length = length; - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192; // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype; - return arr -}; - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -}; - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype; - Buffer.__proto__ = Uint8Array; -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -}; - -function allocUnsafe (that, size) { - assertSize(size); - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0; - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -}; - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0; - that = createBuffer(that, length); - - var actual = that.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual); - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - that = createBuffer(that, length); - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255; - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength; // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array); - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset); - } else { - array = new Uint8Array(array, byteOffset, length); - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array; - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array); - } - return that -} - -function fromObject (that, obj) { - if (internalIsBuffer(obj)) { - var len = checked(obj.length) | 0; - that = createBuffer(that, len); - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len); - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} -Buffer.isBuffer = isBuffer; -function internalIsBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!internalIsBuffer(a) || !internalIsBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - if (!internalIsBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer -}; - -function byteLength (string, encoding) { - if (internalIsBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string; - } - - var len = string.length; - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer.byteLength = byteLength; - -function slowToString (encoding, start, end) { - var loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer.prototype._isBuffer = true; - -function swap (b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer.prototype.toString = function toString () { - var length = this.length | 0; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer.prototype.equals = function equals (b) { - if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -}; - -Buffer.prototype.inspect = function inspect () { - var str = ''; - var max = INSPECT_MAX_BYTES; - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); - if (this.length > max) str += ' ... '; - } - return '' -}; - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!internalIsBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (internalIsBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i; - if (dir) { - var foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - var found = true; - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0; - if (isFinite(length)) { - length = length | 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return fromByteArray(buf) - } else { - return fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - - var i = start; - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = ''; - var i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - var newBuf; - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end); - newBuf.__proto__ = Buffer.prototype; - } else { - var sliceLen = end - start; - newBuf = new Buffer(sliceLen, undefined); - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start]; - } - } - - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, true, 23, 4) -}; - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, false, 23, 4) -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, true, 52, 8) -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - this[offset] = (value & 0xff); - return offset + 1 -}; - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8; - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - var i; - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (val.length === 1) { - var code = val.charCodeAt(0); - if (code < 256) { - val = code; - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255; - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - var i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = internalIsBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()); - var len = bytes.length; - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo; - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - - -function base64ToBytes (str) { - return toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} - - -// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -function isBuffer(obj) { - return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) -} - -function isFastBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) -} - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} - -var dist = createCommonjsModule(function (module, exports) { -(function (global, factory) { - factory(exports) ; -}(commonjsGlobal, (function (exports) { - class ValidateTypes { - constructor() {} - - getType(value) { - return Object.prototype.toString.call(value); - } - - getClassName(value) { - try { - return value.constructor.name; - } catch (e) {} - - return this.getType(value); - } //Validation functions - - - isObject(value) { - if (this.getType(value) === "[object Object]") return true; - return false; - } - - isFunction(value) { - if (this.getType(value) === "[object Function]") return true; - return false; - } - - isString(value) { - if (this.getType(value) === "[object String]") return true; - return false; - } - - isBoolean(value) { - if (this.getType(value) === "[object Boolean]") return true; - return false; - } - - isArray(value) { - if (this.getType(value) === "[object Array]") return true; - return false; - } - - isNumber(value) { - if (this.getType(value) === "[object Number]") return true; - return false; - } - - isInteger(value) { - if (this.getType(value) === "[object Number]" && Number.isInteger(value)) return true; - return false; - } - - isRegEx(value) { - if (this.getType(value) === "[object RegExp]") return true; - return false; - } - - isStringHex(value) { - if (!this.isStringWithValue(value)) return false; - let hexRegEx = /([0-9]|[a-f])/gim; - return (value.match(hexRegEx) || []).length === value.length; - } - - hasKeys(value, keys) { - if (keys.map(key => key in value).includes(false)) return false; - return true; - } - - isStringWithValue(value) { - if (this.isString(value) && value !== '') return true; - return false; - } - - isObjectWithKeys(value) { - if (this.isObject(value) && Object.keys(value).length > 0) return true; - return false; - } - - isArrayWithValues(value) { - if (this.isArray(value) && value.length > 0) return true; - return false; - } - - isSpecificClass(value, className) { - if (!this.isObject(value)) return false; - if (this.getClassName(value) !== className) return false; - return true; - } - - } - - class AssertTypes { - constructor() { - this.validate = new ValidateTypes(); - } //Validation functions - - - isObject(value) { - if (!this.validate.isObject(value)) { - throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isFunction(value) { - if (!this.validate.isFunction(value)) { - throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isString(value) { - if (!this.validate.isString(value)) { - throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isBoolean(value) { - if (!this.validate.isBoolean(value)) { - throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isArray(value) { - if (!this.validate.isArray(value)) { - throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isNumber(value) { - if (!this.validate.isNumber(value)) { - throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isInteger(value) { - if (!this.validate.isInteger(value)) { - throw new TypeError(`Expected "${value}" to be an integer but got non-integer value`); - } - - return true; - } - - isRegEx(value) { - if (!this.validate.isRegEx(value)) { - throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isStringHex(value) { - if (!this.validate.isStringHex(value)) { - throw new TypeError(`Expected "${value}" to be hex but got non-hex value`); - } - - return true; - } - - hasKeys(value, keys) { - if (!this.validate.hasKeys(value, keys)) { - throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`); - } - - return true; - } - - isStringWithValue(value) { - if (!this.validate.isStringWithValue(value)) { - throw new TypeError(`Expected "${value}" to be [object String] and not empty`); - } - - return true; - } - - isObjectWithKeys(value) { - if (!this.validate.isObjectWithKeys(value)) { - throw new TypeError(`Expected "${value}" to be [object Object] and have keys`); - } - - return true; - } - - isArrayWithValues(value) { - if (!this.validate.isArrayWithValues(value)) { - throw new TypeError(`Expected "${value}" to be [object Array] and not empty`); - } - - return true; - } - - isSpecificClass(value, className) { - if (!this.validate.isSpecificClass(value, className)) { - throw new TypeError(`Expected Object Class to be "${className}" but got ${this.validate.getClassName(value)}`); - } - - return true; - } - - } - - const validateTypes = new ValidateTypes(); - const assertTypes = new AssertTypes(); - - exports.assertTypes = assertTypes; - exports.validateTypes = validateTypes; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -}); - -var validators = unwrapExports(dist); - -const nodeCryptoJs = require("node-cryptojs-aes"); -const { CryptoJS, JsonFormatter } = nodeCryptoJs; -const validators$1 = require('types-validate-assert'); -const { validateTypes, assertTypes } = validators$1; - -/** - * Encrypt a Javascript object with a string password - * The object passed must pass JSON.stringify or the method will fail. - * - * @param {string} password A password to encrypt the object with - * @param {Object} obj A javascript object (must be JSON compatible) - * @return {string} Encrypted string - */ -function encryptObject ( password, obj ){ - assertTypes.isStringWithValue(password); - assertTypes.isObject(obj); - - const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { format: JsonFormatter }).toString(); - return encrypted; -} -/** - * Decrypt an Object using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} objString A javascript object as JSON string - * @return {string} Encrypted string -*/ -function decryptObject ( password, objString ) { - assertTypes.isStringWithValue(password); - assertTypes.isStringWithValue(objString); - - try{ - const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }); - return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); - } catch (e){ - return false; - } -} -/** - * Encrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} string A string to be password encrypted - * @return {string} Encrypted string -*/ -function encryptStrHash( password, string ){ - assertTypes.isStringWithValue(password); - assertTypes.isString(string); - - const encrypt = CryptoJS.AES.encrypt(string, password).toString(); - return encrypt; -} -/** - * Decrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} encryptedString A string to decrypt - * @return {string} Decrypted string -*/ -function decryptStrHash ( password, encryptedString ){ - assertTypes.isStringWithValue(password); - assertTypes.isStringWithValue(encryptedString); - - try{ - const decrypted = CryptoJS.AES.decrypt(encryptedString, password); - return CryptoJS.enc.Utf8.stringify(decrypted) === '' ? false : CryptoJS.enc.Utf8.stringify(decrypted); - } catch (e) { - return false; - } -} -function buf2hex(buffer) { - return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join(''); -} -function hex2buf(hexString) { - var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); - for (var i = 0; i < bytes.length; i++) - bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); - return bytes; -} -function str2buf(string) { - var buf = new Buffer.from(string); - return new Uint8Array(buf); -} -function concatUint8Arrays(array1, array2) { - var arr = new Uint8Array(array1.length + array2.length); - arr.set(array1); - arr.set(array2, array1.length); - return arr; -} -function ab2str(buf) { - return String.fromCharCode.apply(null, new Uint8Array(buf)); -} -function str2ab(str) { - var buf = new ArrayBuffer(str.length); - var bufView = new Uint8Array(buf); - for (var i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; -} -function str2hex(str) { - var hex = ''; - for (var i = 0; i < str.length; i++) { - hex += '' + str.charCodeAt(i).toString(16); - } - return hex; -} -function hex2str(hexx) { - var hex = hexx.toString(); //force conversion - var str = ''; - for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2) - str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); - return str; -} -function randomString(length) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (var i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} -function isStringHex(string = '') { - let hexRegEx = /([0-9]|[a-f])/gim; - return typeof string === 'string' && - (string.match(hexRegEx) || []).length === string.length; -} - -function isLamdenKey( string ){ - if (validateTypes.isStringHex(string) && string.length === 64) return true; - return false; -} - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - encryptObject: encryptObject, - decryptObject: decryptObject, - encryptStrHash: encryptStrHash, - decryptStrHash: decryptStrHash, - buf2hex: buf2hex, - hex2buf: hex2buf, - str2buf: str2buf, - concatUint8Arrays: concatUint8Arrays, - ab2str: ab2str, - str2ab: str2ab, - str2hex: str2hex, - hex2str: hex2str, - randomString: randomString, - isStringHex: isStringHex, - isLamdenKey: isLamdenKey -}); - -const nacl = require('tweetnacl'); -const bip39 = require('bip39'); -const bip32 = require('ed25519-hd-key'); - -/** - * Create a wallet object for signing and verifying messages - * - * @param {Object} [args={}] Args Object - * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from - * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users - * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages - * @return {Object} Wallet Object with sign and verify methods - */ -let create_wallet = (args = {}) => { - let { sk = undefined, keepPrivate = false, seed = null } = args; - - let vk; - - if (sk) { - vk = get_vk(sk); - }else{ - let keyPair = new_wallet(seed); - vk = keyPair.vk; - sk = keyPair.sk; - } - - const wallet = () => { - return { - sign: (msg) => sign(sk, msg), - verify: (msg, sig) => verify(vk, msg, sig), - vk, - sk: !keepPrivate ? sk : undefined - } - }; - - return wallet() -}; - -/** - * @param Uint8Array(length: 32) seed - * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be - * avoided by everyday users - * - * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - */ -function generate_keys(seed = null) { - var kp = null; - if (seed == null) { - kp = nacl.sign.keyPair(); - } - else { - kp = nacl.sign.keyPair.fromSeed(seed); - } - // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey - // and the vk is the last 32 bytes of the secretKey as well as the publicKey - // { - // 'publicKey': , - // 'secretKey': - // } - return { - sk: new Uint8Array(kp['secretKey'].slice(0, 32)), - vk: new Uint8Array(kp['secretKey'].slice(32, 64)) - }; -} -/** - * @param String sk - * sk: A 64 character long hex representation of a signing key (private key) - * - * @return String vk - * vk: A 64 character long hex representation of a verify key (public key) - */ -function get_vk(sk) { - var kp = format_to_keys(sk); - var kpf = keys_to_format(kp); - return kpf.vk; -} -/** - * @param String sk - * sk: A 64 character long hex representation of a signing key (private key) - * - * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - */ -function format_to_keys(sk) { - var skf = hex2buf(sk); - var kp = generate_keys(skf); - return kp; -} -/** - * @param Object kp - * kp: Object containing the properties sk and vk - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - * - * @return {string, string} { sk, vk } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - */ -function keys_to_format(kp) { - return { - vk: buf2hex(kp.vk), - sk: buf2hex(kp.sk) - }; -} -/** - * @param Uint8Array(length: 32) seed - * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be - * avoided by everyday users - * - * @return {string, string} { sk, vk } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - */ -function new_wallet(seed = null) { - const keys = generate_keys(seed); - return keys_to_format(keys); -} - -/** - * - * @param mnemonic 24 word seed phrase - * @param derivationIndex bip32 derivation key index - * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} - * derivationIndex: bip32 derivation key index - * vk: Verify Key (VK) represented as a 64 character hex string - * sk: Signing Key (SK) represented as a 64 character hex string - * mnemonic: 24 word seed phrase - - */ -function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { - let finalMnemonic; - - if (mnemonic !== undefined){ - finalMnemonic = mnemonic; - }else { - finalMnemonic = bip39.generateMnemonic(256); - } - - const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); - - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); - - const privateKey = key.toString('hex'); - const publicKey = bip32.getPublicKey(key, false).toString('hex'); - - if (publicKey !== get_vk(privateKey)){ - throw Error('Bip32 public key does not match with Lamden public key!') - } - - return { - sk: privateKey, - vk: publicKey, - derivationIndex: derivationIndex, - mnemonic: finalMnemonic - } -} - -/** - * @param mnemonic 24 word seed phrase - * @param derivationIndex bip32 derivation key index - * - * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - * derivationIndex: Bip32 derivation index - * mnemonic: 24 word seed phrase - */ -function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); -} - -/** - * @param String sk - * @param Uint8Array msg - * sk: A 64 character long hex representation of a signing key (private key) - * msg: A Uint8Array of bytes representing the message you would like to sign - * - * @return String sig - * sig: A 128 character long hex string representing the message's signature - */ -function sign(sk, msg) { - var kp = format_to_keys(sk); - // This is required due to the secretKey required to sign a transaction - // in the js implementation of NaCL being the combination of the sk and - // vk for some stupid reason. That being said, we still want the sk and - // vk objects to exist in 32-byte string format (same as cilantro's - // python implementation) when presented to the user. - var jsnacl_sk = concatUint8Arrays(kp.sk, kp.vk); - return buf2hex(nacl.sign.detached(msg, jsnacl_sk)); -} -/** - * @param String vk - * @param Uint8Array msg - * @param String sig - * vk: A 64 character long hex representation of a verify key (public key) - * msg: A Uint8Array (bytes) representation of a message that has been signed - * sig: A 128 character long hex representation of a nacl signature - * - * @return Bool result - * result: true if verify checked out, false if not - */ -function verify(vk, msg, sig) { - var vkb = hex2buf(vk); - var sigb = hex2buf(sig); - try { - return nacl.sign.detached.verify(msg, sigb, vkb); - } - catch (_a) { - return false; - } -} - -var wallet = /*#__PURE__*/Object.freeze({ - __proto__: null, - create_wallet: create_wallet, - generate_keys: generate_keys, - get_vk: get_vk, - format_to_keys: format_to_keys, - keys_to_format: keys_to_format, - new_wallet: new_wallet, - new_wallet_bip39: new_wallet_bip39, - sign: sign, - verify: verify -}); - -class EventEmitter { - constructor() { - this._events = {}; - } - - on(name, listener) { - if (!this._events[name]) { - this._events[name] = []; - } - - this._events[name].push(listener); - } - - removeListener(name, listenerToRemove) { - if (!this._events[name]) { - throw new Error(`Can't remove a listener. Event "${name}" doesn't exits.`); - } - - const filterListeners = (listener) => listener !== listenerToRemove; - this._events[name] = this._events[name].filter(filterListeners); - } - - emit(name, data) { - if (!this._events[name]) return - - const fireCallbacks = (callback) => { - callback(data); - }; - - this._events[name].forEach(fireCallbacks); - } - } - -/* - * bignumber.js v9.0.0 - * A JavaScript library for arbitrary-precision arithmetic. - * https://github.com/MikeMcl/bignumber.js - * Copyright (c) 2019 Michael Mclaughlin - * MIT Licensed. - * - * BigNumber.prototype methods | BigNumber methods - * | - * absoluteValue abs | clone - * comparedTo | config set - * decimalPlaces dp | DECIMAL_PLACES - * dividedBy div | ROUNDING_MODE - * dividedToIntegerBy idiv | EXPONENTIAL_AT - * exponentiatedBy pow | RANGE - * integerValue | CRYPTO - * isEqualTo eq | MODULO_MODE - * isFinite | POW_PRECISION - * isGreaterThan gt | FORMAT - * isGreaterThanOrEqualTo gte | ALPHABET - * isInteger | isBigNumber - * isLessThan lt | maximum max - * isLessThanOrEqualTo lte | minimum min - * isNaN | random - * isNegative | sum - * isPositive | - * isZero | - * minus | - * modulo mod | - * multipliedBy times | - * negated | - * plus | - * precision sd | - * shiftedBy | - * squareRoot sqrt | - * toExponential | - * toFixed | - * toFormat | - * toFraction | - * toJSON | - * toNumber | - * toPrecision | - * toString | - * valueOf | - * - */ - - -var - isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, - - mathceil = Math.ceil, - mathfloor = Math.floor, - - bignumberError = '[BigNumber Error] ', - tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ', - - BASE = 1e14, - LOG_BASE = 14, - MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 - // MAX_INT32 = 0x7fffffff, // 2^31 - 1 - POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], - SQRT_BASE = 1e7, - - // EDITABLE - // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and - // the arguments to toExponential, toFixed, toFormat, and toPrecision. - MAX = 1E9; // 0 to MAX_INT32 - - -/* - * Create and return a BigNumber constructor. - */ -function clone(configObject) { - var div, convertBase, parseNumeric, - P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null }, - ONE = new BigNumber(1), - - - //----------------------------- EDITABLE CONFIG DEFAULTS ------------------------------- - - - // The default values below must be integers within the inclusive ranges stated. - // The values can also be changed at run-time using BigNumber.set. - - // The maximum number of decimal places for operations involving division. - DECIMAL_PLACES = 20, // 0 to MAX - - // The rounding mode used when rounding to the above decimal places, and when using - // toExponential, toFixed, toFormat and toPrecision, and round (default value). - // UP 0 Away from zero. - // DOWN 1 Towards zero. - // CEIL 2 Towards +Infinity. - // FLOOR 3 Towards -Infinity. - // HALF_UP 4 Towards nearest neighbour. If equidistant, up. - // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - ROUNDING_MODE = 4, // 0 to 8 - - // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] - - // The exponent value at and beneath which toString returns exponential notation. - // Number type: -7 - TO_EXP_NEG = -7, // 0 to -MAX - - // The exponent value at and above which toString returns exponential notation. - // Number type: 21 - TO_EXP_POS = 21, // 0 to MAX - - // RANGE : [MIN_EXP, MAX_EXP] - - // The minimum exponent value, beneath which underflow to zero occurs. - // Number type: -324 (5e-324) - MIN_EXP = -1e7, // -1 to -MAX - - // The maximum exponent value, above which overflow to Infinity occurs. - // Number type: 308 (1.7976931348623157e+308) - // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. - MAX_EXP = 1e7, // 1 to MAX - - // Whether to use cryptographically-secure random number generation, if available. - CRYPTO = false, // true or false - - // The modulo mode used when calculating the modulus: a mod n. - // The quotient (q = a / n) is calculated according to the corresponding rounding mode. - // The remainder (r) is calculated as: r = a - n * q. - // - // UP 0 The remainder is positive if the dividend is negative, else is negative. - // DOWN 1 The remainder has the same sign as the dividend. - // This modulo mode is commonly known as 'truncated division' and is - // equivalent to (a % n) in JavaScript. - // FLOOR 3 The remainder has the same sign as the divisor (Python %). - // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. - // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). - // The remainder is always positive. - // - // The truncated division, floored division, Euclidian division and IEEE 754 remainder - // modes are commonly used for the modulus operation. - // Although the other rounding modes can also be used, they may not give useful results. - MODULO_MODE = 1, // 0 to 9 - - // The maximum number of significant digits of the result of the exponentiatedBy operation. - // If POW_PRECISION is 0, there will be unlimited significant digits. - POW_PRECISION = 0, // 0 to MAX - - // The format specification used by the BigNumber.prototype.toFormat method. - FORMAT = { - prefix: '', - groupSize: 3, - secondaryGroupSize: 0, - groupSeparator: ',', - decimalSeparator: '.', - fractionGroupSize: 0, - fractionGroupSeparator: '\xA0', // non-breaking space - suffix: '' - }, - - // The alphabet used for base conversion. It must be at least 2 characters long, with no '+', - // '-', '.', whitespace, or repeated character. - // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' - ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; - - - //------------------------------------------------------------------------------------------ - - - // CONSTRUCTOR - - - /* - * The BigNumber constructor and exported function. - * Create and return a new instance of a BigNumber object. - * - * v {number|string|BigNumber} A numeric value. - * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive. - */ - function BigNumber(v, b) { - var alphabet, c, caseChanged, e, i, isNum, len, str, - x = this; - - // Enable constructor call without `new`. - if (!(x instanceof BigNumber)) return new BigNumber(v, b); - - if (b == null) { - - if (v && v._isBigNumber === true) { - x.s = v.s; - - if (!v.c || v.e > MAX_EXP) { - x.c = x.e = null; - } else if (v.e < MIN_EXP) { - x.c = [x.e = 0]; - } else { - x.e = v.e; - x.c = v.c.slice(); - } - - return; - } - - if ((isNum = typeof v == 'number') && v * 0 == 0) { - - // Use `1 / n` to handle minus zero also. - x.s = 1 / v < 0 ? (v = -v, -1) : 1; - - // Fast path for integers, where n < 2147483648 (2**31). - if (v === ~~v) { - for (e = 0, i = v; i >= 10; i /= 10, e++); - - if (e > MAX_EXP) { - x.c = x.e = null; - } else { - x.e = e; - x.c = [v]; - } - - return; - } - - str = String(v); - } else { - - if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum); - - x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; - } - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - - // Exponential form? - if ((i = str.search(/e/i)) > 0) { - - // Determine exponent. - if (e < 0) e = i; - e += +str.slice(i + 1); - str = str.substring(0, i); - } else if (e < 0) { - - // Integer. - e = str.length; - } - - } else { - - // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' - intCheck(b, 2, ALPHABET.length, 'Base'); - - // Allow exponential notation to be used with base 10 argument, while - // also rounding to DECIMAL_PLACES as with other bases. - if (b == 10) { - x = new BigNumber(v); - return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE); - } - - str = String(v); - - if (isNum = typeof v == 'number') { - - // Avoid potential interpretation of Infinity and NaN as base 44+ values. - if (v * 0 != 0) return parseNumeric(x, str, isNum, b); - - x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; - - // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' - if (BigNumber.DEBUG && str.replace(/^0\.0*|\./, '').length > 15) { - throw Error - (tooManyDigits + v); - } - } else { - x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; - } - - alphabet = ALPHABET.slice(0, b); - e = i = 0; - - // Check that str is a valid base b number. - // Don't use RegExp, so alphabet can contain special characters. - for (len = str.length; i < len; i++) { - if (alphabet.indexOf(c = str.charAt(i)) < 0) { - if (c == '.') { - - // If '.' is not the first character and it has not be found before. - if (i > e) { - e = len; - continue; - } - } else if (!caseChanged) { - - // Allow e.g. hexadecimal 'FF' as well as 'ff'. - if (str == str.toUpperCase() && (str = str.toLowerCase()) || - str == str.toLowerCase() && (str = str.toUpperCase())) { - caseChanged = true; - i = -1; - e = 0; - continue; - } - } - - return parseNumeric(x, String(v), isNum, b); - } - } - - // Prevent later check for length on converted number. - isNum = false; - str = convertBase(str, b, 10, x.s); - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - else e = str.length; - } - - // Determine leading zeros. - for (i = 0; str.charCodeAt(i) === 48; i++); - - // Determine trailing zeros. - for (len = str.length; str.charCodeAt(--len) === 48;); - - if (str = str.slice(i, ++len)) { - len -= i; - - // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' - if (isNum && BigNumber.DEBUG && - len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { - throw Error - (tooManyDigits + (x.s * v)); - } - - // Overflow? - if ((e = e - i - 1) > MAX_EXP) { - - // Infinity. - x.c = x.e = null; - - // Underflow? - } else if (e < MIN_EXP) { - - // Zero. - x.c = [x.e = 0]; - } else { - x.e = e; - x.c = []; - - // Transform base - - // e is the base 10 exponent. - // i is where to slice str to get the first element of the coefficient array. - i = (e + 1) % LOG_BASE; - if (e < 0) i += LOG_BASE; // i < 1 - - if (i < len) { - if (i) x.c.push(+str.slice(0, i)); - - for (len -= LOG_BASE; i < len;) { - x.c.push(+str.slice(i, i += LOG_BASE)); - } - - i = LOG_BASE - (str = str.slice(i)).length; - } else { - i -= len; - } - - for (; i--; str += '0'); - x.c.push(+str); - } - } else { - - // Zero. - x.c = [x.e = 0]; - } - } - - - // CONSTRUCTOR PROPERTIES - - - BigNumber.clone = clone; - - BigNumber.ROUND_UP = 0; - BigNumber.ROUND_DOWN = 1; - BigNumber.ROUND_CEIL = 2; - BigNumber.ROUND_FLOOR = 3; - BigNumber.ROUND_HALF_UP = 4; - BigNumber.ROUND_HALF_DOWN = 5; - BigNumber.ROUND_HALF_EVEN = 6; - BigNumber.ROUND_HALF_CEIL = 7; - BigNumber.ROUND_HALF_FLOOR = 8; - BigNumber.EUCLID = 9; - - - /* - * Configure infrequently-changing library-wide settings. - * - * Accept an object with the following optional properties (if the value of a property is - * a number, it must be an integer within the inclusive range stated): - * - * DECIMAL_PLACES {number} 0 to MAX - * ROUNDING_MODE {number} 0 to 8 - * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX] - * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX] - * CRYPTO {boolean} true or false - * MODULO_MODE {number} 0 to 9 - * POW_PRECISION {number} 0 to MAX - * ALPHABET {string} A string of two or more unique characters which does - * not contain '.'. - * FORMAT {object} An object with some of the following properties: - * prefix {string} - * groupSize {number} - * secondaryGroupSize {number} - * groupSeparator {string} - * decimalSeparator {string} - * fractionGroupSize {number} - * fractionGroupSeparator {string} - * suffix {string} - * - * (The values assigned to the above FORMAT object properties are not checked for validity.) - * - * E.g. - * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) - * - * Ignore properties/parameters set to null or undefined, except for ALPHABET. - * - * Return an object with the properties current values. - */ - BigNumber.config = BigNumber.set = function (obj) { - var p, v; - - if (obj != null) { - - if (typeof obj == 'object') { - - // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. - // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) { - v = obj[p]; - intCheck(v, 0, MAX, p); - DECIMAL_PLACES = v; - } - - // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. - // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) { - v = obj[p]; - intCheck(v, 0, 8, p); - ROUNDING_MODE = v; - } - - // EXPONENTIAL_AT {number|number[]} - // Integer, -MAX to MAX inclusive or - // [integer -MAX to 0 inclusive, 0 to MAX inclusive]. - // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) { - v = obj[p]; - if (v && v.pop) { - intCheck(v[0], -MAX, 0, p); - intCheck(v[1], 0, MAX, p); - TO_EXP_NEG = v[0]; - TO_EXP_POS = v[1]; - } else { - intCheck(v, -MAX, MAX, p); - TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); - } - } - - // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or - // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. - // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}' - if (obj.hasOwnProperty(p = 'RANGE')) { - v = obj[p]; - if (v && v.pop) { - intCheck(v[0], -MAX, -1, p); - intCheck(v[1], 1, MAX, p); - MIN_EXP = v[0]; - MAX_EXP = v[1]; - } else { - intCheck(v, -MAX, MAX, p); - if (v) { - MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); - } else { - throw Error - (bignumberError + p + ' cannot be zero: ' + v); - } - } - } - - // CRYPTO {boolean} true or false. - // '[BigNumber Error] CRYPTO not true or false: {v}' - // '[BigNumber Error] crypto unavailable' - if (obj.hasOwnProperty(p = 'CRYPTO')) { - v = obj[p]; - if (v === !!v) { - if (v) { - if (typeof crypto != 'undefined' && crypto && - (crypto.getRandomValues || crypto.randomBytes)) { - CRYPTO = v; - } else { - CRYPTO = !v; - throw Error - (bignumberError + 'crypto unavailable'); - } - } else { - CRYPTO = v; - } - } else { - throw Error - (bignumberError + p + ' not true or false: ' + v); - } - } - - // MODULO_MODE {number} Integer, 0 to 9 inclusive. - // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'MODULO_MODE')) { - v = obj[p]; - intCheck(v, 0, 9, p); - MODULO_MODE = v; - } - - // POW_PRECISION {number} Integer, 0 to MAX inclusive. - // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'POW_PRECISION')) { - v = obj[p]; - intCheck(v, 0, MAX, p); - POW_PRECISION = v; - } - - // FORMAT {object} - // '[BigNumber Error] FORMAT not an object: {v}' - if (obj.hasOwnProperty(p = 'FORMAT')) { - v = obj[p]; - if (typeof v == 'object') FORMAT = v; - else throw Error - (bignumberError + p + ' not an object: ' + v); - } - - // ALPHABET {string} - // '[BigNumber Error] ALPHABET invalid: {v}' - if (obj.hasOwnProperty(p = 'ALPHABET')) { - v = obj[p]; - - // Disallow if only one character, - // or if it contains '+', '-', '.', whitespace, or a repeated character. - if (typeof v == 'string' && !/^.$|[+-.\s]|(.).*\1/.test(v)) { - ALPHABET = v; - } else { - throw Error - (bignumberError + p + ' invalid: ' + v); - } - } - - } else { - - // '[BigNumber Error] Object expected: {v}' - throw Error - (bignumberError + 'Object expected: ' + obj); - } - } - - return { - DECIMAL_PLACES: DECIMAL_PLACES, - ROUNDING_MODE: ROUNDING_MODE, - EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], - RANGE: [MIN_EXP, MAX_EXP], - CRYPTO: CRYPTO, - MODULO_MODE: MODULO_MODE, - POW_PRECISION: POW_PRECISION, - FORMAT: FORMAT, - ALPHABET: ALPHABET - }; - }; - - - /* - * Return true if v is a BigNumber instance, otherwise return false. - * - * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed. - * - * v {any} - * - * '[BigNumber Error] Invalid BigNumber: {v}' - */ - BigNumber.isBigNumber = function (v) { - if (!v || v._isBigNumber !== true) return false; - if (!BigNumber.DEBUG) return true; - - var i, n, - c = v.c, - e = v.e, - s = v.s; - - out: if ({}.toString.call(c) == '[object Array]') { - - if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) { - - // If the first element is zero, the BigNumber value must be zero. - if (c[0] === 0) { - if (e === 0 && c.length === 1) return true; - break out; - } - - // Calculate number of digits that c[0] should have, based on the exponent. - i = (e + 1) % LOG_BASE; - if (i < 1) i += LOG_BASE; - - // Calculate number of digits of c[0]. - //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) { - if (String(c[0]).length == i) { - - for (i = 0; i < c.length; i++) { - n = c[i]; - if (n < 0 || n >= BASE || n !== mathfloor(n)) break out; - } - - // Last element cannot be zero, unless it is the only element. - if (n !== 0) return true; - } - } - - // Infinity/NaN - } else if (c === null && e === null && (s === null || s === 1 || s === -1)) { - return true; - } - - throw Error - (bignumberError + 'Invalid BigNumber: ' + v); - }; - - - /* - * Return a new BigNumber whose value is the maximum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.maximum = BigNumber.max = function () { - return maxOrMin(arguments, P.lt); - }; - - - /* - * Return a new BigNumber whose value is the minimum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.minimum = BigNumber.min = function () { - return maxOrMin(arguments, P.gt); - }; - - - /* - * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, - * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing - * zeros are produced). - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}' - * '[BigNumber Error] crypto unavailable' - */ - BigNumber.random = (function () { - var pow2_53 = 0x20000000000000; - - // Return a 53 bit integer n, where 0 <= n < 9007199254740992. - // Check if Math.random() produces more than 32 bits of randomness. - // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. - // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. - var random53bitInt = (Math.random() * pow2_53) & 0x1fffff - ? function () { return mathfloor(Math.random() * pow2_53); } - : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + - (Math.random() * 0x800000 | 0); }; - - return function (dp) { - var a, b, e, k, v, - i = 0, - c = [], - rand = new BigNumber(ONE); - - if (dp == null) dp = DECIMAL_PLACES; - else intCheck(dp, 0, MAX); - - k = mathceil(dp / LOG_BASE); - - if (CRYPTO) { - - // Browsers supporting crypto.getRandomValues. - if (crypto.getRandomValues) { - - a = crypto.getRandomValues(new Uint32Array(k *= 2)); - - for (; i < k;) { - - // 53 bits: - // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) - // 11111 11111111 11111111 11111111 11100000 00000000 00000000 - // ((Math.pow(2, 32) - 1) >>> 11).toString(2) - // 11111 11111111 11111111 - // 0x20000 is 2^21. - v = a[i] * 0x20000 + (a[i + 1] >>> 11); - - // Rejection sampling: - // 0 <= v < 9007199254740992 - // Probability that v >= 9e15, is - // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 - if (v >= 9e15) { - b = crypto.getRandomValues(new Uint32Array(2)); - a[i] = b[0]; - a[i + 1] = b[1]; - } else { - - // 0 <= v <= 8999999999999999 - // 0 <= (v % 1e14) <= 99999999999999 - c.push(v % 1e14); - i += 2; - } - } - i = k / 2; - - // Node.js supporting crypto.randomBytes. - } else if (crypto.randomBytes) { - - // buffer - a = crypto.randomBytes(k *= 7); - - for (; i < k;) { - - // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 - // 0x100000000 is 2^32, 0x1000000 is 2^24 - // 11111 11111111 11111111 11111111 11111111 11111111 11111111 - // 0 <= v < 9007199254740992 - v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) + - (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) + - (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6]; - - if (v >= 9e15) { - crypto.randomBytes(7).copy(a, i); - } else { - - // 0 <= (v % 1e14) <= 99999999999999 - c.push(v % 1e14); - i += 7; - } - } - i = k / 7; - } else { - CRYPTO = false; - throw Error - (bignumberError + 'crypto unavailable'); - } - } - - // Use Math.random. - if (!CRYPTO) { - - for (; i < k;) { - v = random53bitInt(); - if (v < 9e15) c[i++] = v % 1e14; - } - } - - k = c[--i]; - dp %= LOG_BASE; - - // Convert trailing digits to zeros according to dp. - if (k && dp) { - v = POWS_TEN[LOG_BASE - dp]; - c[i] = mathfloor(k / v) * v; - } - - // Remove trailing elements which are zero. - for (; c[i] === 0; c.pop(), i--); - - // Zero? - if (i < 0) { - c = [e = 0]; - } else { - - // Remove leading elements which are zero and adjust exponent accordingly. - for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE); - - // Count the digits of the first element of c to determine leading zeros, and... - for (i = 1, v = c[0]; v >= 10; v /= 10, i++); - - // adjust the exponent accordingly. - if (i < LOG_BASE) e -= LOG_BASE - i; - } - - rand.e = e; - rand.c = c; - return rand; - }; - })(); - - - /* - * Return a BigNumber whose value is the sum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.sum = function () { - var i = 1, - args = arguments, - sum = new BigNumber(args[0]); - for (; i < args.length;) sum = sum.plus(args[i++]); - return sum; - }; - - - // PRIVATE FUNCTIONS - - - // Called by BigNumber and BigNumber.prototype.toString. - convertBase = (function () { - var decimal = '0123456789'; - - /* - * Convert string of baseIn to an array of numbers of baseOut. - * Eg. toBaseOut('255', 10, 16) returns [15, 15]. - * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5]. - */ - function toBaseOut(str, baseIn, baseOut, alphabet) { - var j, - arr = [0], - arrL, - i = 0, - len = str.length; - - for (; i < len;) { - for (arrL = arr.length; arrL--; arr[arrL] *= baseIn); - - arr[0] += alphabet.indexOf(str.charAt(i++)); - - for (j = 0; j < arr.length; j++) { - - if (arr[j] > baseOut - 1) { - if (arr[j + 1] == null) arr[j + 1] = 0; - arr[j + 1] += arr[j] / baseOut | 0; - arr[j] %= baseOut; - } - } - } - - return arr.reverse(); - } - - // Convert a numeric string of baseIn to a numeric string of baseOut. - // If the caller is toString, we are converting from base 10 to baseOut. - // If the caller is BigNumber, we are converting from baseIn to base 10. - return function (str, baseIn, baseOut, sign, callerIsToString) { - var alphabet, d, e, k, r, x, xc, y, - i = str.indexOf('.'), - dp = DECIMAL_PLACES, - rm = ROUNDING_MODE; - - // Non-integer. - if (i >= 0) { - k = POW_PRECISION; - - // Unlimited precision. - POW_PRECISION = 0; - str = str.replace('.', ''); - y = new BigNumber(baseIn); - x = y.pow(str.length - i); - POW_PRECISION = k; - - // Convert str as if an integer, then restore the fraction part by dividing the - // result by its base raised to a power. - - y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'), - 10, baseOut, decimal); - y.e = y.c.length; - } - - // Convert the number as integer. - - xc = toBaseOut(str, baseIn, baseOut, callerIsToString - ? (alphabet = ALPHABET, decimal) - : (alphabet = decimal, ALPHABET)); - - // xc now represents str as an integer and converted to baseOut. e is the exponent. - e = k = xc.length; - - // Remove trailing zeros. - for (; xc[--k] == 0; xc.pop()); - - // Zero? - if (!xc[0]) return alphabet.charAt(0); - - // Does str represent an integer? If so, no need for the division. - if (i < 0) { - --e; - } else { - x.c = xc; - x.e = e; - - // The sign is needed for correct rounding. - x.s = sign; - x = div(x, y, dp, rm, baseOut); - xc = x.c; - r = x.r; - e = x.e; - } - - // xc now represents str converted to baseOut. - - // THe index of the rounding digit. - d = e + dp + 1; - - // The rounding digit: the digit to the right of the digit that may be rounded up. - i = xc[d]; - - // Look at the rounding digits and mode to determine whether to round up. - - k = baseOut / 2; - r = r || d < 0 || xc[d + 1] != null; - - r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 || - rm == (x.s < 0 ? 8 : 7)); - - // If the index of the rounding digit is not greater than zero, or xc represents - // zero, then the result of the base conversion is zero or, if rounding up, a value - // such as 0.00001. - if (d < 1 || !xc[0]) { - - // 1^-dp or 0 - str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); - } else { - - // Truncate xc to the required number of decimal places. - xc.length = d; - - // Round up? - if (r) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for (--baseOut; ++xc[--d] > baseOut;) { - xc[d] = 0; - - if (!d) { - ++e; - xc = [1].concat(xc); - } - } - } - - // Determine trailing zeros. - for (k = xc.length; !xc[--k];); - - // E.g. [4, 11, 15] becomes 4bf. - for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++])); - - // Add leading zeros, decimal point and trailing zeros as required. - str = toFixedPoint(str, e, alphabet.charAt(0)); - } - - // The caller will add the sign. - return str; - }; - })(); - - - // Perform division in the specified base. Called by div and convertBase. - div = (function () { - - // Assume non-zero x and k. - function multiply(x, k, base) { - var m, temp, xlo, xhi, - carry = 0, - i = x.length, - klo = k % SQRT_BASE, - khi = k / SQRT_BASE | 0; - - for (x = x.slice(); i--;) { - xlo = x[i] % SQRT_BASE; - xhi = x[i] / SQRT_BASE | 0; - m = khi * xlo + xhi * klo; - temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry; - carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi; - x[i] = temp % base; - } - - if (carry) x = [carry].concat(x); - - return x; - } - - function compare(a, b, aL, bL) { - var i, cmp; - - if (aL != bL) { - cmp = aL > bL ? 1 : -1; - } else { - - for (i = cmp = 0; i < aL; i++) { - - if (a[i] != b[i]) { - cmp = a[i] > b[i] ? 1 : -1; - break; - } - } - } - - return cmp; - } - - function subtract(a, b, aL, base) { - var i = 0; - - // Subtract b from a. - for (; aL--;) { - a[aL] -= i; - i = a[aL] < b[aL] ? 1 : 0; - a[aL] = i * base + a[aL] - b[aL]; - } - - // Remove leading zeros. - for (; !a[0] && a.length > 1; a.splice(0, 1)); - } - - // x: dividend, y: divisor. - return function (x, y, dp, rm, base) { - var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, - yL, yz, - s = x.s == y.s ? 1 : -1, - xc = x.c, - yc = y.c; - - // Either NaN, Infinity or 0? - if (!xc || !xc[0] || !yc || !yc[0]) { - - return new BigNumber( - - // Return NaN if either NaN, or both Infinity or 0. - !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : - - // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. - xc && xc[0] == 0 || !yc ? s * 0 : s / 0 - ); - } - - q = new BigNumber(s); - qc = q.c = []; - e = x.e - y.e; - s = dp + e + 1; - - if (!base) { - base = BASE; - e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); - s = s / LOG_BASE | 0; - } - - // Result exponent may be one less then the current value of e. - // The coefficients of the BigNumbers from convertBase may have trailing zeros. - for (i = 0; yc[i] == (xc[i] || 0); i++); - - if (yc[i] > (xc[i] || 0)) e--; - - if (s < 0) { - qc.push(1); - more = true; - } else { - xL = xc.length; - yL = yc.length; - i = 0; - s += 2; - - // Normalise xc and yc so highest order digit of yc is >= base / 2. - - n = mathfloor(base / (yc[0] + 1)); - - // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1. - // if (n > 1 || n++ == 1 && yc[0] < base / 2) { - if (n > 1) { - yc = multiply(yc, n, base); - xc = multiply(xc, n, base); - yL = yc.length; - xL = xc.length; - } - - xi = yL; - rem = xc.slice(0, yL); - remL = rem.length; - - // Add zeros to make remainder as long as divisor. - for (; remL < yL; rem[remL++] = 0); - yz = yc.slice(); - yz = [0].concat(yz); - yc0 = yc[0]; - if (yc[1] >= base / 2) yc0++; - // Not necessary, but to prevent trial digit n > base, when using base 3. - // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15; - - do { - n = 0; - - // Compare divisor and remainder. - cmp = compare(yc, rem, yL, remL); - - // If divisor < remainder. - if (cmp < 0) { - - // Calculate trial digit, n. - - rem0 = rem[0]; - if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); - - // n is how many times the divisor goes into the current remainder. - n = mathfloor(rem0 / yc0); - - // Algorithm: - // product = divisor multiplied by trial digit (n). - // Compare product and remainder. - // If product is greater than remainder: - // Subtract divisor from product, decrement trial digit. - // Subtract product from remainder. - // If product was less than remainder at the last compare: - // Compare new remainder and divisor. - // If remainder is greater than divisor: - // Subtract divisor from remainder, increment trial digit. - - if (n > 1) { - - // n may be > base only when base is 3. - if (n >= base) n = base - 1; - - // product = divisor * trial digit. - prod = multiply(yc, n, base); - prodL = prod.length; - remL = rem.length; - - // Compare product and remainder. - // If product > remainder then trial digit n too high. - // n is 1 too high about 5% of the time, and is not known to have - // ever been more than 1 too high. - while (compare(prod, rem, prodL, remL) == 1) { - n--; - - // Subtract divisor from product. - subtract(prod, yL < prodL ? yz : yc, prodL, base); - prodL = prod.length; - cmp = 1; - } - } else { - - // n is 0 or 1, cmp is -1. - // If n is 0, there is no need to compare yc and rem again below, - // so change cmp to 1 to avoid it. - // If n is 1, leave cmp as -1, so yc and rem are compared again. - if (n == 0) { - - // divisor < remainder, so n must be at least 1. - cmp = n = 1; - } - - // product = divisor - prod = yc.slice(); - prodL = prod.length; - } - - if (prodL < remL) prod = [0].concat(prod); - - // Subtract product from remainder. - subtract(rem, prod, remL, base); - remL = rem.length; - - // If product was < remainder. - if (cmp == -1) { - - // Compare divisor and new remainder. - // If divisor < new remainder, subtract divisor from remainder. - // Trial digit n too low. - // n is 1 too low about 5% of the time, and very rarely 2 too low. - while (compare(yc, rem, yL, remL) < 1) { - n++; - - // Subtract divisor from remainder. - subtract(rem, yL < remL ? yz : yc, remL, base); - remL = rem.length; - } - } - } else if (cmp === 0) { - n++; - rem = [0]; - } // else cmp === 1 and n will be 0 - - // Add the next digit, n, to the result array. - qc[i++] = n; - - // Update the remainder. - if (rem[0]) { - rem[remL++] = xc[xi] || 0; - } else { - rem = [xc[xi]]; - remL = 1; - } - } while ((xi++ < xL || rem[0] != null) && s--); - - more = rem[0] != null; - - // Leading zero? - if (!qc[0]) qc.splice(0, 1); - } - - if (base == BASE) { - - // To calculate q.e, first get the number of digits of qc[0]. - for (i = 1, s = qc[0]; s >= 10; s /= 10, i++); - - round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more); - - // Caller is convertBase. - } else { - q.e = e; - q.r = +more; - } - - return q; - }; - })(); - - - /* - * Return a string representing the value of BigNumber n in fixed-point or exponential - * notation rounded to the specified decimal places or significant digits. - * - * n: a BigNumber. - * i: the index of the last digit required (i.e. the digit that may be rounded up). - * rm: the rounding mode. - * id: 1 (toExponential) or 2 (toPrecision). - */ - function format(n, i, rm, id) { - var c0, e, ne, len, str; - - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - if (!n.c) return n.toString(); - - c0 = n.c[0]; - ne = n.e; - - if (i == null) { - str = coeffToString(n.c); - str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) - ? toExponential(str, ne) - : toFixedPoint(str, ne, '0'); - } else { - n = round(new BigNumber(n), i, rm); - - // n.e may have changed if the value was rounded up. - e = n.e; - - str = coeffToString(n.c); - len = str.length; - - // toPrecision returns exponential notation if the number of significant digits - // specified is less than the number of digits necessary to represent the integer - // part of the value in fixed-point notation. - - // Exponential notation. - if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) { - - // Append zeros? - for (; len < i; str += '0', len++); - str = toExponential(str, e); - - // Fixed-point notation. - } else { - i -= ne; - str = toFixedPoint(str, e, '0'); - - // Append zeros? - if (e + 1 > len) { - if (--i > 0) for (str += '.'; i--; str += '0'); - } else { - i += e - len; - if (i > 0) { - if (e + 1 == len) str += '.'; - for (; i--; str += '0'); - } - } - } - } - - return n.s < 0 && c0 ? '-' + str : str; - } - - - // Handle BigNumber.max and BigNumber.min. - function maxOrMin(args, method) { - var n, - i = 1, - m = new BigNumber(args[0]); - - for (; i < args.length; i++) { - n = new BigNumber(args[i]); - - // If any number is NaN, return NaN. - if (!n.s) { - m = n; - break; - } else if (method.call(m, n)) { - m = n; - } - } - - return m; - } - - - /* - * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. - * Called by minus, plus and times. - */ - function normalise(n, c, e) { - var i = 1, - j = c.length; - - // Remove trailing zeros. - for (; !c[--j]; c.pop()); - - // Calculate the base 10 exponent. First get the number of digits of c[0]. - for (j = c[0]; j >= 10; j /= 10, i++); - - // Overflow? - if ((e = i + e * LOG_BASE - 1) > MAX_EXP) { - - // Infinity. - n.c = n.e = null; - - // Underflow? - } else if (e < MIN_EXP) { - - // Zero. - n.c = [n.e = 0]; - } else { - n.e = e; - n.c = c; - } - - return n; - } - - - // Handle values that fail the validity test in BigNumber. - parseNumeric = (function () { - var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, - dotAfter = /^([^.]+)\.$/, - dotBefore = /^\.([^.]+)$/, - isInfinityOrNaN = /^-?(Infinity|NaN)$/, - whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; - - return function (x, str, isNum, b) { - var base, - s = isNum ? str : str.replace(whitespaceOrPlus, ''); - - // No exception on ±Infinity or NaN. - if (isInfinityOrNaN.test(s)) { - x.s = isNaN(s) ? null : s < 0 ? -1 : 1; - } else { - if (!isNum) { - - // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i - s = s.replace(basePrefix, function (m, p1, p2) { - base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8; - return !b || b == base ? p1 : m; - }); - - if (b) { - base = b; - - // E.g. '1.' to '1', '.1' to '0.1' - s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1'); - } - - if (str != s) return new BigNumber(s, base); - } - - // '[BigNumber Error] Not a number: {n}' - // '[BigNumber Error] Not a base {b} number: {n}' - if (BigNumber.DEBUG) { - throw Error - (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str); - } - - // NaN - x.s = null; - } - - x.c = x.e = null; - } - })(); - - - /* - * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. - * If r is truthy, it is known that there are more digits after the rounding digit. - */ - function round(x, sd, rm, r) { - var d, i, j, k, n, ni, rd, - xc = x.c, - pows10 = POWS_TEN; - - // if x is not Infinity or NaN... - if (xc) { - - // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. - // n is a base 1e14 number, the value of the element of array x.c containing rd. - // ni is the index of n within x.c. - // d is the number of digits of n. - // i is the index of rd within n including leading zeros. - // j is the actual index of rd within n (if < 0, rd is a leading zero). - out: { - - // Get the number of digits of the first element of xc. - for (d = 1, k = xc[0]; k >= 10; k /= 10, d++); - i = sd - d; - - // If the rounding digit is in the first element of xc... - if (i < 0) { - i += LOG_BASE; - j = sd; - n = xc[ni = 0]; - - // Get the rounding digit at index j of n. - rd = n / pows10[d - j - 1] % 10 | 0; - } else { - ni = mathceil((i + 1) / LOG_BASE); - - if (ni >= xc.length) { - - if (r) { - - // Needed by sqrt. - for (; xc.length <= ni; xc.push(0)); - n = rd = 0; - d = 1; - i %= LOG_BASE; - j = i - LOG_BASE + 1; - } else { - break out; - } - } else { - n = k = xc[ni]; - - // Get the number of digits of n. - for (d = 1; k >= 10; k /= 10, d++); - - // Get the index of rd within n. - i %= LOG_BASE; - - // Get the index of rd within n, adjusted for leading zeros. - // The number of leading zeros of n is given by LOG_BASE - d. - j = i - LOG_BASE + d; - - // Get the rounding digit at index j of n. - rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0; - } - } - - r = r || sd < 0 || - - // Are there any non-zero digits after the rounding digit? - // The expression n % pows10[d - j - 1] returns all digits of n to the right - // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. - xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); - - r = rm < 4 - ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && - - // Check whether the digit to the left of the rounding digit is odd. - ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 || - rm == (x.s < 0 ? 8 : 7)); - - if (sd < 1 || !xc[0]) { - xc.length = 0; - - if (r) { - - // Convert sd to decimal places. - sd -= x.e + 1; - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; - x.e = -sd || 0; - } else { - - // Zero. - xc[0] = x.e = 0; - } - - return x; - } - - // Remove excess digits. - if (i == 0) { - xc.length = ni; - k = 1; - ni--; - } else { - xc.length = ni + 1; - k = pows10[LOG_BASE - i]; - - // E.g. 56700 becomes 56000 if 7 is the rounding digit. - // j > 0 means i > number of leading zeros of n. - xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; - } - - // Round up? - if (r) { - - for (; ;) { - - // If the digit to be rounded up is in the first element of xc... - if (ni == 0) { - - // i will be the length of xc[0] before k is added. - for (i = 1, j = xc[0]; j >= 10; j /= 10, i++); - j = xc[0] += k; - for (k = 1; j >= 10; j /= 10, k++); - - // if i != k the length has increased. - if (i != k) { - x.e++; - if (xc[0] == BASE) xc[0] = 1; - } - - break; - } else { - xc[ni] += k; - if (xc[ni] != BASE) break; - xc[ni--] = 0; - k = 1; - } - } - } - - // Remove trailing zeros. - for (i = xc.length; xc[--i] === 0; xc.pop()); - } - - // Overflow? Infinity. - if (x.e > MAX_EXP) { - x.c = x.e = null; - - // Underflow? Zero. - } else if (x.e < MIN_EXP) { - x.c = [x.e = 0]; - } - } - - return x; - } - - - function valueOf(n) { - var str, - e = n.e; - - if (e === null) return n.toString(); - - str = coeffToString(n.c); - - str = e <= TO_EXP_NEG || e >= TO_EXP_POS - ? toExponential(str, e) - : toFixedPoint(str, e, '0'); - - return n.s < 0 ? '-' + str : str; - } - - - // PROTOTYPE/INSTANCE METHODS - - - /* - * Return a new BigNumber whose value is the absolute value of this BigNumber. - */ - P.absoluteValue = P.abs = function () { - var x = new BigNumber(this); - if (x.s < 0) x.s = 1; - return x; - }; - - - /* - * Return - * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), - * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), - * 0 if they have the same value, - * or null if the value of either is NaN. - */ - P.comparedTo = function (y, b) { - return compare(this, new BigNumber(y, b)); - }; - - - /* - * If dp is undefined or null or true or false, return the number of decimal places of the - * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. - * - * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this - * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or - * ROUNDING_MODE if rm is omitted. - * - * [dp] {number} Decimal places: integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.decimalPlaces = P.dp = function (dp, rm) { - var c, n, v, - x = this; - - if (dp != null) { - intCheck(dp, 0, MAX); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - return round(new BigNumber(x), dp + x.e + 1, rm); - } - - if (!(c = x.c)) return null; - n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; - - // Subtract the number of trailing zeros of the last number. - if (v = c[v]) for (; v % 10 == 0; v /= 10, n--); - if (n < 0) n = 0; - - return n; - }; - - - /* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new BigNumber whose value is the value of this BigNumber divided by the value of - * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ - P.dividedBy = P.div = function (y, b) { - return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE); - }; - - - /* - * Return a new BigNumber whose value is the integer part of dividing the value of this - * BigNumber by the value of BigNumber(y, b). - */ - P.dividedToIntegerBy = P.idiv = function (y, b) { - return div(this, new BigNumber(y, b), 0, 1); - }; - - - /* - * Return a BigNumber whose value is the value of this BigNumber exponentiated by n. - * - * If m is present, return the result modulo m. - * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. - * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE. - * - * The modular power operation works efficiently when x, n, and m are integers, otherwise it - * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0. - * - * n {number|string|BigNumber} The exponent. An integer. - * [m] {number|string|BigNumber} The modulus. - * - * '[BigNumber Error] Exponent not an integer: {n}' - */ - P.exponentiatedBy = P.pow = function (n, m) { - var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, - x = this; - - n = new BigNumber(n); - - // Allow NaN and ±Infinity, but not other non-integers. - if (n.c && !n.isInteger()) { - throw Error - (bignumberError + 'Exponent not an integer: ' + valueOf(n)); - } - - if (m != null) m = new BigNumber(m); - - // Exponent of MAX_SAFE_INTEGER is 15. - nIsBig = n.e > 14; - - // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0. - if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) { - - // The sign of the result of pow when x is negative depends on the evenness of n. - // If +n overflows to ±Infinity, the evenness of n would be not be known. - y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n))); - return m ? y.mod(m) : y; - } - - nIsNeg = n.s < 0; - - if (m) { - - // x % m returns NaN if abs(m) is zero, or m is NaN. - if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN); - - isModExp = !nIsNeg && x.isInteger() && m.isInteger(); - - if (isModExp) x = x.mod(m); - - // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15. - // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15. - } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 - // [1, 240000000] - ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 - // [80000000000000] [99999750000000] - : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) { - - // If x is negative and n is odd, k = -0, else k = 0. - k = x.s < 0 && isOdd(n) ? -0 : 0; - - // If x >= 1, k = ±Infinity. - if (x.e > -1) k = 1 / k; - - // If n is negative return ±0, else return ±Infinity. - return new BigNumber(nIsNeg ? 1 / k : k); - - } else if (POW_PRECISION) { - - // Truncating each coefficient array to a length of k after each multiplication - // equates to truncating significant digits to POW_PRECISION + [28, 41], - // i.e. there will be a minimum of 28 guard digits retained. - k = mathceil(POW_PRECISION / LOG_BASE + 2); - } - - if (nIsBig) { - half = new BigNumber(0.5); - if (nIsNeg) n.s = 1; - nIsOdd = isOdd(n); - } else { - i = Math.abs(+valueOf(n)); - nIsOdd = i % 2; - } - - y = new BigNumber(ONE); - - // Performs 54 loop iterations for n of 9007199254740991. - for (; ;) { - - if (nIsOdd) { - y = y.times(x); - if (!y.c) break; - - if (k) { - if (y.c.length > k) y.c.length = k; - } else if (isModExp) { - y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m)); - } - } - - if (i) { - i = mathfloor(i / 2); - if (i === 0) break; - nIsOdd = i % 2; - } else { - n = n.times(half); - round(n, n.e + 1, 1); - - if (n.e > 14) { - nIsOdd = isOdd(n); - } else { - i = +valueOf(n); - if (i === 0) break; - nIsOdd = i % 2; - } - } - - x = x.times(x); - - if (k) { - if (x.c && x.c.length > k) x.c.length = k; - } else if (isModExp) { - x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m)); - } - } - - if (isModExp) return y; - if (nIsNeg) y = ONE.div(y); - - return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer - * using rounding mode rm, or ROUNDING_MODE if rm is omitted. - * - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}' - */ - P.integerValue = function (rm) { - var n = new BigNumber(this); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - return round(n, n.e + 1, rm); - }; - - - /* - * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), - * otherwise return false. - */ - P.isEqualTo = P.eq = function (y, b) { - return compare(this, new BigNumber(y, b)) === 0; - }; - - - /* - * Return true if the value of this BigNumber is a finite number, otherwise return false. - */ - P.isFinite = function () { - return !!this.c; - }; - - - /* - * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), - * otherwise return false. - */ - P.isGreaterThan = P.gt = function (y, b) { - return compare(this, new BigNumber(y, b)) > 0; - }; - - - /* - * Return true if the value of this BigNumber is greater than or equal to the value of - * BigNumber(y, b), otherwise return false. - */ - P.isGreaterThanOrEqualTo = P.gte = function (y, b) { - return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0; - - }; - - - /* - * Return true if the value of this BigNumber is an integer, otherwise return false. - */ - P.isInteger = function () { - return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; - }; - - - /* - * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), - * otherwise return false. - */ - P.isLessThan = P.lt = function (y, b) { - return compare(this, new BigNumber(y, b)) < 0; - }; - - - /* - * Return true if the value of this BigNumber is less than or equal to the value of - * BigNumber(y, b), otherwise return false. - */ - P.isLessThanOrEqualTo = P.lte = function (y, b) { - return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0; - }; - - - /* - * Return true if the value of this BigNumber is NaN, otherwise return false. - */ - P.isNaN = function () { - return !this.s; - }; - - - /* - * Return true if the value of this BigNumber is negative, otherwise return false. - */ - P.isNegative = function () { - return this.s < 0; - }; - - - /* - * Return true if the value of this BigNumber is positive, otherwise return false. - */ - P.isPositive = function () { - return this.s > 0; - }; - - - /* - * Return true if the value of this BigNumber is 0 or -0, otherwise return false. - */ - P.isZero = function () { - return !!this.c && this.c[0] == 0; - }; - - - /* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new BigNumber whose value is the value of this BigNumber minus the value of - * BigNumber(y, b). - */ - P.minus = function (y, b) { - var i, j, t, xLTy, - x = this, - a = x.s; - - y = new BigNumber(y, b); - b = y.s; - - // Either NaN? - if (!a || !b) return new BigNumber(NaN); - - // Signs differ? - if (a != b) { - y.s = -b; - return x.plus(y); - } - - var xe = x.e / LOG_BASE, - ye = y.e / LOG_BASE, - xc = x.c, - yc = y.c; - - if (!xe || !ye) { - - // Either Infinity? - if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN); - - // Either zero? - if (!xc[0] || !yc[0]) { - - // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. - return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x : - - // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity - ROUNDING_MODE == 3 ? -0 : 0); - } - } - - xe = bitFloor(xe); - ye = bitFloor(ye); - xc = xc.slice(); - - // Determine which is the bigger number. - if (a = xe - ye) { - - if (xLTy = a < 0) { - a = -a; - t = xc; - } else { - ye = xe; - t = yc; - } - - t.reverse(); - - // Prepend zeros to equalise exponents. - for (b = a; b--; t.push(0)); - t.reverse(); - } else { - - // Exponents equal. Check digit by digit. - j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; - - for (a = b = 0; b < j; b++) { - - if (xc[b] != yc[b]) { - xLTy = xc[b] < yc[b]; - break; - } - } - } - - // x < y? Point xc to the array of the bigger number. - if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; - - b = (j = yc.length) - (i = xc.length); - - // Append zeros to xc if shorter. - // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. - if (b > 0) for (; b--; xc[i++] = 0); - b = BASE - 1; - - // Subtract yc from xc. - for (; j > a;) { - - if (xc[--j] < yc[j]) { - for (i = j; i && !xc[--i]; xc[i] = b); - --xc[i]; - xc[j] += BASE; - } - - xc[j] -= yc[j]; - } - - // Remove leading zeros and adjust exponent accordingly. - for (; xc[0] == 0; xc.splice(0, 1), --ye); - - // Zero? - if (!xc[0]) { - - // Following IEEE 754 (2008) 6.3, - // n - n = +0 but n - n = -0 when rounding towards -Infinity. - y.s = ROUNDING_MODE == 3 ? -1 : 1; - y.c = [y.e = 0]; - return y; - } - - // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity - // for finite x and y. - return normalise(y, xc, ye); - }; - - - /* - * n % 0 = N - * n % N = N - * n % I = n - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * 0 % I = 0 - * N % n = N - * N % 0 = N - * N % N = N - * N % I = N - * I % n = N - * I % 0 = N - * I % N = N - * I % I = N - * - * Return a new BigNumber whose value is the value of this BigNumber modulo the value of - * BigNumber(y, b). The result depends on the value of MODULO_MODE. - */ - P.modulo = P.mod = function (y, b) { - var q, s, - x = this; - - y = new BigNumber(y, b); - - // Return NaN if x is Infinity or NaN, or y is NaN or zero. - if (!x.c || !y.s || y.c && !y.c[0]) { - return new BigNumber(NaN); - - // Return x if y is Infinity or x is zero. - } else if (!y.c || x.c && !x.c[0]) { - return new BigNumber(x); - } - - if (MODULO_MODE == 9) { - - // Euclidian division: q = sign(y) * floor(x / abs(y)) - // r = x - qy where 0 <= r < abs(y) - s = y.s; - y.s = 1; - q = div(x, y, 0, 3); - y.s = s; - q.s *= s; - } else { - q = div(x, y, 0, MODULO_MODE); - } - - y = x.minus(q.times(y)); - - // To match JavaScript %, ensure sign of zero is sign of dividend. - if (!y.c[0] && MODULO_MODE == 1) y.s = x.s; - - return y; - }; - - - /* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value - * of BigNumber(y, b). - */ - P.multipliedBy = P.times = function (y, b) { - var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, - base, sqrtBase, - x = this, - xc = x.c, - yc = (y = new BigNumber(y, b)).c; - - // Either NaN, ±Infinity or ±0? - if (!xc || !yc || !xc[0] || !yc[0]) { - - // Return NaN if either is NaN, or one is 0 and the other is Infinity. - if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { - y.c = y.e = y.s = null; - } else { - y.s *= x.s; - - // Return ±Infinity if either is ±Infinity. - if (!xc || !yc) { - y.c = y.e = null; - - // Return ±0 if either is ±0. - } else { - y.c = [0]; - y.e = 0; - } - } - - return y; - } - - e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); - y.s *= x.s; - xcL = xc.length; - ycL = yc.length; - - // Ensure xc points to longer array and xcL to its length. - if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; - - // Initialise the result array with zeros. - for (i = xcL + ycL, zc = []; i--; zc.push(0)); - - base = BASE; - sqrtBase = SQRT_BASE; - - for (i = ycL; --i >= 0;) { - c = 0; - ylo = yc[i] % sqrtBase; - yhi = yc[i] / sqrtBase | 0; - - for (k = xcL, j = i + k; j > i;) { - xlo = xc[--k] % sqrtBase; - xhi = xc[k] / sqrtBase | 0; - m = yhi * xlo + xhi * ylo; - xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c; - c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi; - zc[j--] = xlo % base; - } - - zc[j] = c; - } - - if (c) { - ++e; - } else { - zc.splice(0, 1); - } - - return normalise(y, zc, e); - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber negated, - * i.e. multiplied by -1. - */ - P.negated = function () { - var x = new BigNumber(this); - x.s = -x.s || null; - return x; - }; - - - /* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new BigNumber whose value is the value of this BigNumber plus the value of - * BigNumber(y, b). - */ - P.plus = function (y, b) { - var t, - x = this, - a = x.s; - - y = new BigNumber(y, b); - b = y.s; - - // Either NaN? - if (!a || !b) return new BigNumber(NaN); - - // Signs differ? - if (a != b) { - y.s = -b; - return x.minus(y); - } - - var xe = x.e / LOG_BASE, - ye = y.e / LOG_BASE, - xc = x.c, - yc = y.c; - - if (!xe || !ye) { - - // Return ±Infinity if either ±Infinity. - if (!xc || !yc) return new BigNumber(a / 0); - - // Either zero? - // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. - if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0); - } - - xe = bitFloor(xe); - ye = bitFloor(ye); - xc = xc.slice(); - - // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. - if (a = xe - ye) { - if (a > 0) { - ye = xe; - t = yc; - } else { - a = -a; - t = xc; - } - - t.reverse(); - for (; a--; t.push(0)); - t.reverse(); - } - - a = xc.length; - b = yc.length; - - // Point xc to the longer array, and b to the shorter length. - if (a - b < 0) t = yc, yc = xc, xc = t, b = a; - - // Only start adding at yc.length - 1 as the further digits of xc can be ignored. - for (a = 0; b;) { - a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; - xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; - } - - if (a) { - xc = [a].concat(xc); - ++ye; - } - - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - // ye = MAX_EXP + 1 possible - return normalise(y, xc, ye); - }; - - - /* - * If sd is undefined or null or true or false, return the number of significant digits of - * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. - * If sd is true include integer-part trailing zeros in the count. - * - * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this - * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or - * ROUNDING_MODE if rm is omitted. - * - * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive. - * boolean: whether to count integer-part trailing zeros: true or false. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' - */ - P.precision = P.sd = function (sd, rm) { - var c, n, v, - x = this; - - if (sd != null && sd !== !!sd) { - intCheck(sd, 1, MAX); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - return round(new BigNumber(x), sd, rm); - } - - if (!(c = x.c)) return null; - v = c.length - 1; - n = v * LOG_BASE + 1; - - if (v = c[v]) { - - // Subtract the number of trailing zeros of the last element. - for (; v % 10 == 0; v /= 10, n--); - - // Add the number of digits of the first element. - for (v = c[0]; v >= 10; v /= 10, n++); - } - - if (sd && x.e + 1 > n) n = x.e + 1; - - return n; - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber shifted by k places - * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. - * - * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}' - */ - P.shiftedBy = function (k) { - intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); - return this.times('1e' + k); - }; - - - /* - * sqrt(-n) = N - * sqrt(N) = N - * sqrt(-I) = N - * sqrt(I) = I - * sqrt(0) = 0 - * sqrt(-0) = -0 - * - * Return a new BigNumber whose value is the square root of the value of this BigNumber, - * rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ - P.squareRoot = P.sqrt = function () { - var m, n, r, rep, t, - x = this, - c = x.c, - s = x.s, - e = x.e, - dp = DECIMAL_PLACES + 4, - half = new BigNumber('0.5'); - - // Negative/NaN/Infinity/zero? - if (s !== 1 || !c || !c[0]) { - return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); - } - - // Initial estimate. - s = Math.sqrt(+valueOf(x)); - - // Math.sqrt underflow/overflow? - // Pass x to Math.sqrt as integer, then adjust the exponent of the result. - if (s == 0 || s == 1 / 0) { - n = coeffToString(c); - if ((n.length + e) % 2 == 0) n += '0'; - s = Math.sqrt(+n); - e = bitFloor((e + 1) / 2) - (e < 0 || e % 2); - - if (s == 1 / 0) { - n = '1e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new BigNumber(n); - } else { - r = new BigNumber(s + ''); - } - - // Check for zero. - // r could be zero if MIN_EXP is changed after the this value was created. - // This would cause a division by zero (x/t) and hence Infinity below, which would cause - // coeffToString to throw. - if (r.c[0]) { - e = r.e; - s = e + dp; - if (s < 3) s = 0; - - // Newton-Raphson iteration. - for (; ;) { - t = r; - r = half.times(t.plus(div(x, t, dp, 1))); - - if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) { - - // The exponent of r may here be one less than the final result exponent, - // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits - // are indexed correctly. - if (r.e < e) --s; - n = n.slice(s - 3, s + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits - // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the - // iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the - // exact result as the nines may infinitely repeat. - if (!rep) { - round(t, t.e + DECIMAL_PLACES + 2, 0); - - if (t.times(t).eq(x)) { - r = t; - break; - } - } - - dp += 4; - s += 4; - rep = 1; - } else { - - // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact - // result. If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - round(r, r.e + DECIMAL_PLACES + 2, 1); - m = !r.times(r).eq(x); - } - - break; - } - } - } - } - - return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m); - }; - - - /* - * Return a string representing the value of this BigNumber in exponential notation and - * rounded using ROUNDING_MODE to dp fixed decimal places. - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.toExponential = function (dp, rm) { - if (dp != null) { - intCheck(dp, 0, MAX); - dp++; - } - return format(this, dp, rm, 1); - }; - - - /* - * Return a string representing the value of this BigNumber in fixed-point notation rounding - * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. - * - * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', - * but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.toFixed = function (dp, rm) { - if (dp != null) { - intCheck(dp, 0, MAX); - dp = dp + this.e + 1; - } - return format(this, dp, rm); - }; - - - /* - * Return a string representing the value of this BigNumber in fixed-point notation rounded - * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties - * of the format or FORMAT object (see BigNumber.set). - * - * The formatting object may contain some or all of the properties shown below. - * - * FORMAT = { - * prefix: '', - * groupSize: 3, - * secondaryGroupSize: 0, - * groupSeparator: ',', - * decimalSeparator: '.', - * fractionGroupSize: 0, - * fractionGroupSeparator: '\xA0', // non-breaking space - * suffix: '' - * }; - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * [format] {object} Formatting options. See FORMAT pbject above. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - * '[BigNumber Error] Argument not an object: {format}' - */ - P.toFormat = function (dp, rm, format) { - var str, - x = this; - - if (format == null) { - if (dp != null && rm && typeof rm == 'object') { - format = rm; - rm = null; - } else if (dp && typeof dp == 'object') { - format = dp; - dp = rm = null; - } else { - format = FORMAT; - } - } else if (typeof format != 'object') { - throw Error - (bignumberError + 'Argument not an object: ' + format); - } - - str = x.toFixed(dp, rm); - - if (x.c) { - var i, - arr = str.split('.'), - g1 = +format.groupSize, - g2 = +format.secondaryGroupSize, - groupSeparator = format.groupSeparator || '', - intPart = arr[0], - fractionPart = arr[1], - isNeg = x.s < 0, - intDigits = isNeg ? intPart.slice(1) : intPart, - len = intDigits.length; - - if (g2) i = g1, g1 = g2, g2 = i, len -= i; - - if (g1 > 0 && len > 0) { - i = len % g1 || g1; - intPart = intDigits.substr(0, i); - for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1); - if (g2 > 0) intPart += groupSeparator + intDigits.slice(i); - if (isNeg) intPart = '-' + intPart; - } - - str = fractionPart - ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize) - ? fractionPart.replace(new RegExp('\\d{' + g2 + '}\\B', 'g'), - '$&' + (format.fractionGroupSeparator || '')) - : fractionPart) - : intPart; - } - - return (format.prefix || '') + str + (format.suffix || ''); - }; - - - /* - * Return an array of two BigNumbers representing the value of this BigNumber as a simple - * fraction with an integer numerator and an integer denominator. - * The denominator will be a positive non-zero value less than or equal to the specified - * maximum denominator. If a maximum denominator is not specified, the denominator will be - * the lowest value necessary to represent the number exactly. - * - * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator. - * - * '[BigNumber Error] Argument {not an integer|out of range} : {md}' - */ - P.toFraction = function (md) { - var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, - x = this, - xc = x.c; - - if (md != null) { - n = new BigNumber(md); - - // Throw if md is less than one or is not an integer, unless it is Infinity. - if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { - throw Error - (bignumberError + 'Argument ' + - (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n)); - } - } - - if (!xc) return new BigNumber(x); - - d = new BigNumber(ONE); - n1 = d0 = new BigNumber(ONE); - d1 = n0 = new BigNumber(ONE); - s = coeffToString(xc); - - // Determine initial denominator. - // d is a power of 10 and the minimum max denominator that specifies the value exactly. - e = d.e = s.length - x.e - 1; - d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; - md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n; - - exp = MAX_EXP; - MAX_EXP = 1 / 0; - n = new BigNumber(s); - - // n0 = d1 = 0 - n0.c[0] = 0; - - for (; ;) { - q = div(n, d, 0, 1); - d2 = d0.plus(q.times(d1)); - if (d2.comparedTo(md) == 1) break; - d0 = d1; - d1 = d2; - n1 = n0.plus(q.times(d2 = n1)); - n0 = d2; - d = n.minus(q.times(d2 = d)); - n = d2; - } - - d2 = div(md.minus(d0), d1, 0, 1); - n0 = n0.plus(d2.times(n1)); - d0 = d0.plus(d2.times(d1)); - n0.s = n1.s = x.s; - e = e * 2; - - // Determine which fraction is closer to x, n0/d0 or n1/d1 - r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo( - div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0]; - - MAX_EXP = exp; - - return r; - }; - - - /* - * Return the value of this BigNumber converted to a number primitive. - */ - P.toNumber = function () { - return +valueOf(this); - }; - - - /* - * Return a string representing the value of this BigNumber rounded to sd significant digits - * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits - * necessary to represent the integer part of the value in fixed-point notation, then use - * exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' - */ - P.toPrecision = function (sd, rm) { - if (sd != null) intCheck(sd, 1, MAX); - return format(this, sd, rm, 2); - }; - - - /* - * Return a string representing the value of this BigNumber in base b, or base 10 if b is - * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and - * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent - * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than - * TO_EXP_NEG, return exponential notation. - * - * [b] {number} Integer, 2 to ALPHABET.length inclusive. - * - * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' - */ - P.toString = function (b) { - var str, - n = this, - s = n.s, - e = n.e; - - // Infinity or NaN? - if (e === null) { - if (s) { - str = 'Infinity'; - if (s < 0) str = '-' + str; - } else { - str = 'NaN'; - } - } else { - if (b == null) { - str = e <= TO_EXP_NEG || e >= TO_EXP_POS - ? toExponential(coeffToString(n.c), e) - : toFixedPoint(coeffToString(n.c), e, '0'); - } else if (b === 10) { - n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE); - str = toFixedPoint(coeffToString(n.c), n.e, '0'); - } else { - intCheck(b, 2, ALPHABET.length, 'Base'); - str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true); - } - - if (s < 0 && n.c[0]) str = '-' + str; - } - - return str; - }; - - - /* - * Return as toString, but do not accept a base argument, and include the minus sign for - * negative zero. - */ - P.valueOf = P.toJSON = function () { - return valueOf(this); - }; - - - P._isBigNumber = true; - - P[Symbol.toStringTag] = 'BigNumber'; - - // Node.js v10.12.0+ - P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf; - - if (configObject != null) BigNumber.set(configObject); - - return BigNumber; -} - - -// PRIVATE HELPER FUNCTIONS - -// These functions don't need access to variables, -// e.g. DECIMAL_PLACES, in the scope of the `clone` function above. - - -function bitFloor(n) { - var i = n | 0; - return n > 0 || n === i ? i : i - 1; -} - - -// Return a coefficient array as a string of base 10 digits. -function coeffToString(a) { - var s, z, - i = 1, - j = a.length, - r = a[0] + ''; - - for (; i < j;) { - s = a[i++] + ''; - z = LOG_BASE - s.length; - for (; z--; s = '0' + s); - r += s; - } - - // Determine trailing zeros. - for (j = r.length; r.charCodeAt(--j) === 48;); - - return r.slice(0, j + 1 || 1); -} - - -// Compare the value of BigNumbers x and y. -function compare(x, y) { - var a, b, - xc = x.c, - yc = y.c, - i = x.s, - j = y.s, - k = x.e, - l = y.e; - - // Either NaN? - if (!i || !j) return null; - - a = xc && !xc[0]; - b = yc && !yc[0]; - - // Either zero? - if (a || b) return a ? b ? 0 : -j : i; - - // Signs differ? - if (i != j) return i; - - a = i < 0; - b = k == l; - - // Either Infinity? - if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1; - - // Compare exponents. - if (!b) return k > l ^ a ? 1 : -1; - - j = (k = xc.length) < (l = yc.length) ? k : l; - - // Compare digit by digit. - for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1; - - // Compare lengths. - return k == l ? 0 : k > l ^ a ? 1 : -1; -} - - -/* - * Check that n is a primitive number, an integer, and in range, otherwise throw. - */ -function intCheck(n, min, max, name) { - if (n < min || n > max || n !== mathfloor(n)) { - throw Error - (bignumberError + (name || 'Argument') + (typeof n == 'number' - ? n < min || n > max ? ' out of range: ' : ' not an integer: ' - : ' not a primitive number: ') + String(n)); - } -} - - -// Assumes finite n. -function isOdd(n) { - var k = n.c.length - 1; - return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; -} - - -function toExponential(str, e) { - return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) + - (e < 0 ? 'e' : 'e+') + e; -} - - -function toFixedPoint(str, e, z) { - var len, zs; - - // Negative exponent? - if (e < 0) { - - // Prepend zeros. - for (zs = z + '.'; ++e; zs += z); - str = zs + str; - - // Positive exponent - } else { - len = str.length; - - // Append zeros. - if (++e > len) { - for (zs = z, e -= len; --e; zs += z); - str += zs; - } else if (e < len) { - str = str.slice(0, e) + '.' + str.slice(e); - } - } - - return str; -} - - -// EXPORT - - -var BigNumber = clone(); - -var bignumber = /*#__PURE__*/Object.freeze({ - __proto__: null, - BigNumber: BigNumber, - 'default': BigNumber -}); - -var BigNumber$1 = getCjsExportFromNamespace(bignumber); - -BigNumber$1.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e+9 }); -BigNumber$1.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber$1.ROUND_DOWN }); // equivalent - -function Encoder (type, value) { - const throwError = (val) => { - throw new Error(`Error encoding ${val} to ${type}`) - }; - const countDecimals = (n) => { - if(Math.floor(n) === n) return 0; - try{ - return n.toString().split(".")[1].length - }catch (e){ - return 0 - } - }; - const isString = (val) => typeof val === 'string' || val instanceof String; - const isArray = (val) => val && typeof val === 'object' && val.constructor === Array; - const isObject = (val) => val && typeof val === 'object' && val.constructor === Object; - const isDate = (val) => val instanceof Date; - const isBoolean = (val) => typeof val === 'boolean'; - - const isNumber = (val) => { - if (isArray(val)) return false - return !isNaN(encodeBigNumber(val).toNumber()) - }; - - const isInteger = (val) => { - if (!isNumber(val)) return false - if (countDecimals(val) === 0) return true - return false - }; - const encodeInt = (val) => { - if (!isNumber(val)) throwError(val); - else return parseInt(val) - }; - const isFloat = (val) => { - if (!isNumber(val)) return false - if (countDecimals(val) === 0) return false - return true - }; - const encodeFloat = (val) => { - if(!isNumber(val)) throwError(val); - if (!BigNumber$1.isBigNumber(val)) val = new BigNumber$1(val); - - return {"__fixed__": val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, '$1$2')} - }; - const encodeNumber = (val) => { - if(!isNumber(val)) throwError(val); - if (isFloat(val)) { - if (!BigNumber$1.isBigNumber(val)) val = new BigNumber$1(val); - return {"__fixed__": val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, '$1$2')} - } - if (isInteger(val)) return parseInt(val) - }; - const encodeBigNumber = (val) => { - if (!BigNumber$1.isBigNumber(val)) val = new BigNumber$1(val); - return val - }; - - const encodeBool = (val) => { - if (isBoolean(val)) return val - if (val === 'true' || val === 1) return true - if (val === 'false' || val === 0) return false - throwError(val); - }; - const encodeStr = (val) => { - if (isString(val)) return val - if (isDate(val)) return val.toISOString() - return JSON.stringify(val) - }; - const encodeDateTime = (val) => { - val = !isDate(val) ? new Date(val) : val; - if (!isDate(val)) throwError(val); - return {'__time__': [ - val.getUTCFullYear(), - val.getUTCMonth(), - val.getUTCDate(), - val.getUTCHours(), - val.getUTCMinutes(), - val.getUTCSeconds(), - val.getUTCMilliseconds() - ]} - }; - const encodeTimeDelta = (val) => { - const time = isDate(val) ? val.getTime() : new Date(val).getTime(); - const days = parseInt(time / 1000 / 60 / 60 / 24); - const seconds = (time - (days * 24 * 60 * 60 * 1000)) / 1000; - return {'__delta__':[days, seconds]} - }; - - const encodeList = (val) => { - if (isArray(val)) return parseObject(val) - try{ - val = JSON.parse(val); - }catch(e){ - throwError(val); - } - if (isArray(val)) return parseObject(val) - throwError(val); - }; - - const encodeDict = (val) => { - if (isObject(val)) return parseObject(val) - try{ - val = JSON.parse(val); - }catch(e){ - throwError(val); - } - if (isObject(val)) return parseObject(val) - throwError(val); - }; - - const encodeObject = (val) => { - try { - return encodeList(val) - }catch(e){ - return encodeDict(val) - } - }; - - function parseObject (obj) { - const encode = (k, v) => { - if (k === "datetime" || k === "datetime.datetime" ) return Encoder("datetime.datetime", v) - if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v) - if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v) - return v - }; - - const fixDatetime = (k, v) => { - const isDatetimeObject = (val) => { - let datetimeTypes = ['datetime.datetime', 'datetime', 'datetime.timedelta', 'timedelta']; - return Object.keys(val).length === 1 && datetimeTypes.filter(f => f === Object.keys(val)[0]).length > 0 - - }; - - if (v.constructor === Array) { - v.map(val => { - if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]] - //if (isFloat(val)) return encodeFloat(val) - return val - }); - } - if (v.constructor === Object) { - if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]] - } - - //if (isFloat(v)) return encodeFloat(v) - - return v - }; - - let encodeValues = JSON.stringify(obj, encode); - return JSON.parse(encodeValues, fixDatetime) - } - - const encoder = { - str: encodeStr, - string: encodeStr, - float: encodeFloat, - int: encodeInt, - bool: encodeBool, - boolean: encodeBool, - dict: encodeDict, - list: encodeList, - Any: () => value, - "datetime.timedelta": encodeTimeDelta, - "datetime.datetime": encodeDateTime, - timedelta: encodeTimeDelta, - datetime: encodeDateTime, - number: encodeNumber, - object: encodeObject, - bigNumber: encodeBigNumber, - }; - - if (Object.keys(encoder).includes(type)) return encoder[type](value) - else throw new Error(`Error: ${type} is not a valid encoder type.`) -} - -Encoder.BigNumber = BigNumber$1; - -var encoder = { - Encoder -}; -var encoder_1 = encoder.Encoder; - -const { validateTypes: validateTypes$1 } = validators; -const fetch = require('node-fetch').default; - -class LamdenMasterNode_API{ - constructor(networkInfoObj){ - if (!validateTypes$1.isObjectWithKeys(networkInfoObj)) throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`) - if (!validateTypes$1.isArrayWithValues(networkInfoObj.hosts)) throw new Error(`HOSTS Required (Type: Array)`) - - this.hosts = this.validateHosts(networkInfoObj.hosts); - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host){ - let protocols = ['https://', 'http://']; - if (protocols.map(protocol => host.includes(protocol)).includes(true)) return host - throw new Error('Host String must include http:// or https://') - } - validateHosts(hosts){ - return hosts.map(host => this.vaidateProtocol(host.toLowerCase())) - } - - get host() {return this.hosts[Math.floor(Math.random() * this.hosts.length)]} - get url() {return this.host} - - send(method, path, data, overrideURL, callback){ - let parms = ''; - if (Object.keys(data).includes('parms')) { - parms = this.createParms(data.parms); - } - - let options = {}; - if (method === 'POST'){ - let headers = {'Content-Type': 'application/json'}; - options.method = method; - options.headers = headers; - options.body = data; - } - - return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) - .then(async (res) => { - if (res.status === 200){ - let json = await res.json(); - callback(json, undefined); - return json - }else{ - let error = validateTypes$1.isStringWithValue(res.statusText) ? res.statusText : false; - callback(undefined, error); - return error - } - }) - .catch(err => { - return callback(undefined, err.toString()) - }) - } - - createParms(parms){ - if (Object.keys(parms).length === 0) return '' - let parmString = '?'; - Object.keys(parms).forEach(key => { - parmString = `${parmString}${key}=${parms[key]}&`; - }); - return parmString.slice(0, -1); - } - - async getContractInfo(contractName){ - const returnInfo = (res) => { - try{ - if (res.name) return res - } catch (e){} - return null; - }; - let path = `/contracts/${contractName}`; - return this.send('GET', path, {}, undefined, (res, err) => returnInfo(res)) - .then(res => returnInfo(res)) - } - - async getVariable(contract, variable, key = ''){ - let parms = {}; - if (validateTypes$1.isStringWithValue(key)) parms.key = key; - - let path = `/contracts/${contract}/${variable}/`; - - const returnValue = (res) => { - try{ - if (res.value) return res.value - } catch (e){} - return null; - }; - return this.send('GET', path, {parms}, undefined, (res, err) => returnValue(res)) - .then(res => returnValue(res)) - } - - async getContractMethods(contract){ - const getMethods = (res) => { - try{ - if (res.methods) return res.methods - } catch (e){} - return []; - }; - let path = `/contracts/${contract}/methods`; - return this.send('GET', path, {}, undefined, (res, err) => getMethods(res)) - .then(res => getMethods(res)) - } - - async getContractVariables(contract){ - const getVariables = (res) => { - try{ - if (res.variables) return res - } catch (e){} - return {}; - }; - let path = `/contracts/${contract}/variables`; - return this.send('GET', path, {}, undefined, (res, err) => getVariables(res)) - .then(res => getVariables(res)) - } - - async pingServer(){ - const getStatus = (res) => { - try { - if (res.status) return true; - } catch (e) {} - return false - }; - let response = await this.send('GET', '/ping', {}, undefined, (res, err) => getStatus(res)); - return getStatus(response) - - } - - async getCurrencyBalance(vk){ - let balanceRes = await this.getVariable('currency', 'balances', vk); - if (!balanceRes) return encoder_1('bigNumber', 0); - if (balanceRes.__fixed__) return encoder_1('bigNumber', balanceRes.__fixed__) - return encoder_1('bigNumber', balanceRes.toString()); - } - - async contractExists(contractName){ - const exists = (res) => { - try { - if (res.name) return true; - } catch (e) {} - return false - }; - let path = `/contracts/${contractName}`; - return this.send('GET', path, {}, undefined, (res, err) => exists(res)) - .then(res => exists(res)) - } - - async sendTransaction(data, url = undefined, callback){ - return this.send('POST', '/', JSON.stringify(data), url, (res, err) => { - if (err){ - if (callback) { - callback(undefined, err); - return; - } - else return err - } - if (callback) { - callback(res, undefined); - return - } - return res; - }) - } - - async getNonce(sender, callback){ - if (!validateTypes$1.isStringHex(sender)) return `${sender} is not a hex string.` - let path = `/nonce/${sender}`; - let url = this.host; - return this.send('GET', path, {}, url, (res, err) => { - if (err){ - if (callback) { - callback(undefined, `Unable to get nonce for ${sender} on network ${url}`); - return - } - return `Unable to get nonce for ${sender} on network ${url}` - } - res.masternode = url; - if (callback) { - callback(res, undefined); - return - } - else return res; - }) - } - - async checkTransaction(hash, callback){ - const parms = {hash}; - return this.send('GET', '/tx', {parms}, undefined, (res, err) => { - if (err){ - if (callback) { - callback(undefined, err); - return; - } - else return err - } - if (callback) { - callback(res, undefined); - return - } - return res; - }) - } -} - -const { validateTypes: validateTypes$2 } = validators; - -class Network { - // Constructor needs an Object with the following information to build Class. - // - // networkInfo: { - // hosts: list of masternode hostname/ip urls, - // type: "testnet", "mainnet" or "custom" - // }, - constructor(networkInfoObj){ - //Reject undefined or missing info - if (!validateTypes$2.isObjectWithKeys(networkInfoObj)) throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`) - if (!validateTypes$2.isArrayWithValues(networkInfoObj.hosts)) throw new Error(`HOSTS Required (Type: Array)`) - - this.type = validateTypes$2.isStringWithValue(networkInfoObj.type) ? networkInfoObj.type.toLowerCase() : "custom"; - this.events = new EventEmitter(); - this.hosts = this.validateHosts(networkInfoObj.hosts); - this.currencySymbol = validateTypes$2.isStringWithValue(networkInfoObj.currencySymbol) ? networkInfoObj.currencySymbol : 'TAU'; - this.name = validateTypes$2.isStringWithValue(networkInfoObj.name) ? networkInfoObj.name : 'lamden network'; - this.lamden = validateTypes$2.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; - this.blockExplorer = validateTypes$2.isStringWithValue(networkInfoObj.blockExplorer) ? networkInfoObj.blockExplorer : undefined; - - this.online = false; - try{ - this.API = new LamdenMasterNode_API(networkInfoObj); - } catch (e) { - throw new Error(e) - } - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host){ - let protocols = ['https://', 'http://']; - if (protocols.map(protocol => host.includes(protocol)).includes(true)) return host - throw new Error('Host String must include http:// or https://') - } - validateHosts(hosts){ - return hosts.map(host => this.vaidateProtocol(host.toLowerCase())) - } - //Check if the network is online - //Emits boolean as 'online' event - //Also returns status as well as passes status to a callback - async ping(callback = undefined){ - this.online = await this.API.pingServer(); - this.events.emit('online', this.online); - if (validateTypes$2.isFunction(callback)) callback(this.online); - return this.online - } - get host() {return this.hosts[Math.floor(Math.random() * this.hosts.length)]} - get url() {return this.host} - getNetworkInfo(){ - return { - name: this.name, - lamden: this.lamden, - type: this.type, - hosts: this.hosts, - url: this.url, - online: this.online, - } - } -} - -const { validateTypes: validateTypes$3 } = validators; - -class TransactionBuilder extends Network { - // Constructor needs an Object with the following information to build Class. - // - // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" - // host: masternode webserver hostname/ip, - // type: "testnet", "mainnet" or "mockchain" - // } - // arg[1] (txInfo): { - // uid: [Optional] unique ID for tracking purposes, - // senderVk: public key of the transaction sender, - // contractName: name of lamden smart contract, - // methodName: name of method to call in contractName, - // kwargs: key/values of args to pass to methodName - // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" - // kwargs.amount = 1000 - // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. - // nonce: [Optional] send() will attempt to retrieve this info automatically - // processor [Optional] send() will attempt to retrieve this info automatically - // } - // arg[2] (txData): [Optional] state hydrating data - constructor(networkInfo, txInfo, txData) { - if (validateTypes$3.isSpecificClass(networkInfo, 'Network')) - super(networkInfo.getNetworkInfo()); - else super(networkInfo); - - //Validate arguments - if(!validateTypes$3.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`) - if(!validateTypes$3.isStringHex(txInfo.senderVk)) throw new Error(`Sender Public Key Required (Type: Hex String)`) - if(!validateTypes$3.isStringWithValue(txInfo.contractName)) throw new Error(`Contract Name Required (Type: String)`) - if(!validateTypes$3.isStringWithValue(txInfo.methodName)) throw new Error(`Method Required (Type: String)`) - if(!validateTypes$3.isInteger(txInfo.stampLimit)) throw new Error(`Stamps Limit Required (Type: Integer)`) - - //Store variables in self for reference - this.uid = validateTypes$3.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; - this.sender = txInfo.senderVk; - this.contract = txInfo.contractName; - this.method = txInfo.methodName; - this.kwargs = {}; - if(validateTypes$3.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; - this.stampLimit = txInfo.stampLimit; - - //validate and set nonce and processor if user provided them - if (typeof txInfo.nonce !== 'undefined'){ - if(!validateTypes$3.isInteger(txInfo.nonce)) throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`) - this.nonce = txInfo.nonce; - } - if (typeof txInfo.processor !== 'undefined'){ - if(!validateTypes$3.isStringWithValue(txInfo.processor)) throw new Error(`arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`) - this.processor = txInfo.processor; - } - - this.signature; - this.transactionSigned = false; - - //Transaction result information - this.nonceResult = {}; - this.txSendResult = {errors:[]}; - this.txBlockResult = {}; - this.txHash; - this.txCheckResult = {}; - this.txCheckAttempts = 0; - this.txCheckLimit = 10; - - //Hydrate other items if passed - if (txData){ - if (txData.uid) this.uid = txData.uid; - if (validateTypes$3.isObjectWithKeys(txData.txSendResult)) this.txSendResult = txData.txSendResult; - if (validateTypes$3.isObjectWithKeys(txData.nonceResult)){ - this.nonceResult = txData.nonceResult; - if (validateTypes$3.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; - if (validateTypes$3.isStringWithValue(this.nonceResult.processor)) this.processor = this.nonceResult.processor; - } - if (validateTypes$3.isObjectWithKeys(txData.txSendResult)){ - this.txSendResult = txData.txSendResult; - if (this.txSendResult.hash) this.txHash = this.txSendResult.hash; - } - if (validateTypes$3.isObjectWithKeys(txData.txBlockResult)) this.txBlockResult = txData.txBlockResult; - if (validateTypes$3.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; - } - //Create Capnp messages and transactionMessages - this.makePayload(); - } - makePayload(){ - this.payload = { - contract: this.contract, - function: this.method, - kwargs: this.kwargs, - nonce: this.nonce, - processor: this.processor, - sender: this.sender, - stamps_supplied: this.stampLimit - }; - this.sortedPayload = this.sortObject(this.payload); - } - makeTransaction(){ - this.tx = { - metadata: { - signature: this.signature, - timestamp: parseInt(+new Date / 1000), - }, - payload: this.sortedPayload.orderedObj - }; - } - verifySignature(){ - //Verify the signature is correct - if (!this.transactionSigned) throw new Error('Transaction has not be been signed. Use the sign() method first.') - const stringBuffer = Buffer.from(this.sortedPayload.json); - const stringArray = new Uint8Array(stringBuffer); - return verify(this.sender, stringArray, this.signature) - } - sign(sk = undefined, userWallet = undefined){ - const stringBuffer = Buffer.from(this.sortedPayload.json); - const stringArray = new Uint8Array(stringBuffer); - if (userWallet) this.signature = userWallet.sign(stringArray); - else this.signature = sign(sk, stringArray); - this.transactionSigned = true; - } - sortObject(object){ - const processObj = (obj) => { - const getType = (value) => { - return Object.prototype.toString.call(value) - }; - const isArray = (value) => { - if(getType(value) === "[object Array]") return true; - return false; - }; - const isObject = (value) => { - if(getType(value) === "[object Object]") return true; - return false; - }; - - const sortObjKeys = (unsorted) => { - const sorted = {}; - Object.keys(unsorted).sort().forEach(key => sorted[key] = unsorted[key]); - return sorted - }; - - const formatKeys = (unformatted) => { - Object.keys(unformatted).forEach(key => { - if (isArray(unformatted[key])) unformatted[key] = unformatted[key].map(item => { - if (isObject(item)) return formatKeys(item) - return item - }); - if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]); - }); - return sortObjKeys(unformatted) - }; - - if (!isObject(obj)) throw new TypeError('Not a valid Object') - try{ - obj = JSON.parse(JSON.stringify(obj)); - } catch (e) { - throw new TypeError('Not a valid JSON Object') - } - return formatKeys(obj) - }; - const orderedObj = processObj(object); - return { - orderedObj, - json: JSON.stringify(orderedObj) - } - } - async getNonce(callback = undefined) { - let timestamp = new Date().toUTCString(); - this.nonceResult = await this.API.getNonce(this.sender); - if (typeof this.nonceResult.nonce === 'undefined'){ - throw new Error(this.nonceResult) - } - this.nonceResult.timestamp = timestamp; - this.nonce = this.nonceResult.nonce; - this.processor = this.nonceResult.processor; - this.nonceMasternode = this.nonceResult.masternode; - //Create payload object - this.makePayload(); - - if (!callback) return this.nonceResult; - return callback(this.nonceResult) - } - async send(sk = undefined, masternode = undefined, callback = undefined) { - //Error if transaction is not signed and no sk provided to the send method to sign it before sending - if (!validateTypes$3.isStringWithValue(sk) && !this.transactionSigned){ - throw new Error(`Transation Not Signed: Private key needed or call sign() first`); - } - - let timestamp = new Date().toUTCString(); - - try{ - //If the nonce isn't set attempt to get it - if (isNaN(this.nonce) || !validateTypes$3.isStringWithValue(this.processor)) await this.getNonce(); - //if the sk is provided then sign the transaction - if (validateTypes$3.isStringWithValue(sk)) this.sign(sk); - //Serialize transaction - this.makeTransaction(); - //Send transaction to the masternode - let masternodeURL = masternode; - if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode; - let response = await this.API.sendTransaction(this.tx, masternodeURL); - //Set error if txSendResult doesn't exist - if (!response || validateTypes$3.isStringWithValue(response)){ - this.txSendResult.errors = [response || "Unknown Transaction Error"]; - }else{ - if (response.error) this.txSendResult.errors = [response.error]; - else this.txSendResult = response; - } - } catch (e){ - this.txSendResult.errors = [e.message]; - } - this.txSendResult.timestamp = timestamp; - return this.handleMasterNodeResponse(this.txSendResult, callback) - } - checkForTransactionResult(callback = undefined){ - return new Promise((resolve) => { - let timerId = setTimeout(async function checkTx() { - this.txCheckAttempts = this.txCheckAttempts + 1; - let res = await this.API.checkTransaction(this.txHash); - let checkAgain = false; - let timestamp = new Date().toUTCString(); - if (typeof res === 'string' || !res) { - if (this.txCheckAttempts < this.txCheckLimit){ - checkAgain = true; - }else{ - this.txCheckResult.errors = [ - `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, - res - ]; - } - }else{ - if (res.error){ - if (res.error === 'Transaction not found.'){ - if (this.txCheckAttempts < this.txCheckLimit){ - checkAgain = true; - }else{ - this.txCheckResult.errors = [res.error, `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`]; - } - }else{ - this.txCheckResult.errors = [res.error]; - } - }else{ - this.txCheckResult = res; - } - } - if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); - else{ - if (validateTypes$3.isNumber(this.txCheckResult.status)){ - if (this.txCheckResult.status > 0){ - if (!validateTypes$3.isArray(this.txCheckResult.errors)) this.txCheckResult.errors = []; - this.txCheckResult.errors.push('This transaction returned a non-zero status code'); - } - } - this.txCheckResult.timestamp = timestamp; - clearTimeout(timerId); - resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)); - } - }.bind(this), 1000); - }) - } - handleMasterNodeResponse(result, callback = undefined){ - //Check to see if this is a successful transacation submission - if (validateTypes$3.isStringWithValue(result.hash) && validateTypes$3.isStringWithValue(result.success)){ - this.txHash = result.hash; - this.setPendingBlockInfo(); - }else{ - this.setBlockResultInfo(result); - this.txBlockResult = result; - } - this.events.emit('response', result, this.resultInfo.subtitle); - if (validateTypes$3.isFunction(callback)) callback(result); - return result - } - setPendingBlockInfo(){ - this.resultInfo = { - title: 'Transaction Pending', - subtitle: 'Your transaction was submitted and is being processed', - message: `Tx Hash: ${this.txHash}`, - type: 'success', - }; - return this.resultInfo; - } - setBlockResultInfo(result){ - let erroredTx = false; - let errorText = `returned an error and `; - let statusCode = validateTypes$3.isNumber(result.status) ? result.status : undefined; - let stamps = (result.stampsUsed || result.stamps_used) || 0; - let message = ''; - if(validateTypes$3.isArrayWithValues(result.errors)){ - erroredTx = true; - message = `This transaction returned ${result.errors.length} errors.`; - if (result.result){ - if (result.result.includes('AssertionError')) result.errors.push(result.result); - } - } - if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `; - - this.resultInfo = { - title: `Transaction ${erroredTx ? 'Failed' : 'Successful'}`, - subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ''}used ${stamps} stamps`, - message, - type: `${erroredTx ? 'error' : 'success'}`, - errorInfo: erroredTx ? result.errors : undefined, - returnResult: result.result || "", - stampsUsed: stamps, - statusCode - }; - return this.resultInfo; - } - getResultInfo(){ - return this.resultInfo; - } - getTxInfo(){ - return { - senderVk: this.sender, - contractName: this.contract, - methodName: this.method, - kwargs: this.kwargs, - stampLimit: this.stampLimit - } - } - getAllInfo(){ - return { - uid: this.uid, - txHash: this.txHash, - signed: this.transactionSigned, - tx: this.tx, - signature: this.signature, - networkInfo: this.getNetworkInfo(), - txInfo: this.getTxInfo(), - txSendResult: this.txSendResult, - txBlockResult: this.txBlockResult, - resultInfo: this.getResultInfo(), - nonceResult: this.nonceResult - } - } -} - -const { validateTypes: validateTypes$4 } = validators; - -class TransactionBatcher extends Network { - constructor(networkInfo) { - if (validateTypes$4.isSpecificClass(networkInfo, 'Network')) - super(networkInfo.getNetworkInfo()); - else super(networkInfo); - - this.txBatches = {}; - this.overflow = []; - this.nonceResults = {}; - this.running = false; - } - addTransaction(txInfo){ - if (this.running) { - this.overflow.push(txInfo); - return - } - this.validateTransactionInfo(txInfo); - if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []; - this.txBatches[txInfo.senderVk].push(txInfo); - } - addTransactionList(txList){ - txList.forEach(txInfo => this.addTransaction(txInfo)); - } - processOverflow(){ - const overflow = this.overflow; - this.overflow = []; - overflow.forEach(txInfo => this.addTransaction(txInfo)); - } - hasTransactions(){ - let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length); - test.filter(f => f === 0); - if (test.length > 0 ) return true - return false - } - validateTransactionInfo(txInfo){ - try{ - new TransactionBuilder(txInfo); - }catch(e){ - return false - } - return true - } - async getStartingNonce(senderVk, callback = undefined){ - let timestamp = new Date().toUTCString(); - let response = await this.API.getNonce(senderVk); - if (typeof response.nonce === 'undefined'){ - throw new Error(response) - } - response.timestamp = timestamp; - this.nonceResults[senderVk] = response; - - if (callback) callback(response); - return response; - } - async sendAllBatches(keyDict){ - if (this.running) return - let sentTransactions = []; - this.running = true; - - await Promise.all(Object.keys(this.txBatches).map((senderVk) => { - const senderBatch = this.txBatches[senderVk].splice(0,15); - if (senderBatch.length <= 15) delete this.txBatches[senderVk]; - - return new Promise(async (resolver) => { - if (senderBatch.length === 0 ) resolver(); - - if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`) - let nonceResponse = await this.getStartingNonce(senderVk); - let txBatch = this.setBatchNonces(nonceResponse, senderBatch); - this.signBatch(txBatch, keyDict[senderVk]); - this.sendBatch(txBatch).then(sentList => { - sentTransactions = [...sentTransactions, ...sentList]; - resolver(); - }); - }) - })); - - try{ - return Promise.all(sentTransactions) - }catch (e){} - finally{ - this.running = false; - this.processOverflow(); - } - } - setBatchNonces(nonceResult, txList){ - return txList.map((txInfo, index) => { - txInfo.nonce = nonceResult.nonce + index; - txInfo.processor = nonceResult.processor; - return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo) - }).sort((a, b) => a.nonce - b.nonce) - } - signBatch(txBatch, key){ - txBatch.forEach(txBuilder => txBuilder.sign(key)); - } - sendBatch(txBatch){ - let resolvedTransactions = []; - return new Promise(resolver => { - const resolve = (index) => { - if ((index + 1) === txBatch.length) resolver(resolvedTransactions); - }; - txBatch.forEach((txBuilder, index) => { - const delayedSend = () => { - resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder}); - resolve(index); - }; - setTimeout(delayedSend, 1200 * index); - }); - }) - } -} - -const { validateTypes: validateTypes$5, assertTypes: assertTypes$1 } = validators; - -class Keystore { - /** - * Lamden Keystores - * - * This Class will create a lamden keystore instance - * - * @param {Object|undefined} arg constructor argument - * @param {String|undefined} arg.key Create an instance and load it with one private key - * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys - * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data - * @return {Keystore} - */ - constructor(arg = undefined) { - this.KEYSTORE_VERSION = "1.0"; - this.password = null; - this.encryptedData = null; - - this.keyList = (() => { - let keyList = []; - let outerClass = this; - let wallets = []; - - const addKey = (key) => { - keyList.push(key); - createWallets(); - }; - const deleteKey = (position) => { - keyList.splice(position, 1); - createWallets(); - }; - const clearKeys = () => { - keyList = []; - createWallets(); - }; - const numOfKeys = () => keyList.length; - const createWallets = () => { - wallets = []; - keyList.forEach(keyInfo => { - let newWallet = create_wallet({sk: keyInfo.sk, keepPrivate: true}); - newWallet = {...newWallet, ...keyInfo}; - delete newWallet.sk; - wallets.push(newWallet); - }); - }; - const createKeystore = (password, hint = undefined) => { - return JSON.stringify({ - data: encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}), - w: !hint ? "" : encryptStrHash('n1ahcKc0lb', hint), - }); - }; - const decryptKeystore = (password, data) => { - let decrypted = decryptObject(password, data); - if (decrypted) { - assertTypes$1.isArray(decrypted.keyList); - decrypted.keyList.forEach(keyInfo => assertTypes$1.isStringWithValue(keyInfo.sk)); - decrypted.keyList.forEach(keyInfo => addKey(keyInfo)); - outerClass.version = decrypted.version; - } else { - throw new Error("Incorrect Keystore Password.") - } - }; - - return { - getWallets: () => wallets, - getWallet: (vk) => wallets.find(wallet => wallet.vk === vk), - addKey, - clearKeys, - numOfKeys, - deleteKey, - createKeystore, - decryptKeystore - } - })(); - - if (arg){ - if (arg.key) this.addKey(arg.key); - if (arg.keyList) this.addKeys(arg.keyList); - if (arg.keystoreData) this.addKeystoreData(arg.keystoreData); - } - } - /** - * Add a list of keys to add to the keystore - * @param {Array.} keyList An array of 32 character long Lamden private keys - */ - addKeys(keyList){ - assertTypes$1.isArray(keyList); - keyList.forEach(key => this.addKey(key)); - } - /** - * Add a key to the keystore - * @param {string} key A 32 character long Lamden private key - */ - addKey(keyInfo){ - assertTypes$1.isObjectWithKeys(keyInfo); - assertTypes$1.isStringWithValue(keyInfo.sk); - if (validateTypes$5.isStringWithValue(keyInfo.vk)) delete keyInfo.vk; - this.keyList.addKey(keyInfo); - } - /** - * Load the keystore with the data from an existing keystore - * @param {string} keystoreData The contents of an existing encrypted keystore file - */ - addKeystoreData(keystoreData){ - if (validateTypes$5.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); - if(this.validateKeyStore(keystoreData)){ - this.encryptedData = keystoreData; - } - } - /** - * Returns the password hint in a keystore file - * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor - */ - getPasswordHint(keystoreData = undefined){ - if (!this.encryptedData && !keystoreData) throw new Error("No keystore data found.") - - if (keystoreData) { - if (validateTypes$5.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); - } - else keystoreData = this.encryptedData; - - if (keystoreData.w) return decryptStrHash('n1ahcKc0lb', keystoreData.w); - else return "" - } - /** - * Removes a specific key from the keyList - * @param {Number} keyIndex The index of the key you want to remove - */ - deleteKey(keyIndex){ - assertTypes$1.isInteger(keyIndex); - if (this.keyList.numOfKeys() === 0) return - if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error("Key index out of range.") - this.keyList.deleteKey(keyIndex); - } - /** - * Clears all keys from the keystore - */ - clearKeys(){ - this.keyList.clearKeys(); - } - /** - * Clears all keys from the keystore - * @return {Array.} An array of wallet objects - */ - get wallets() { - return this.keyList.getWallets() - } - /** - * Load the keystore with the data from an existing keystore - * @param {String} vk A 32 character long Lamden public key - * @return {Object} A wallet object - */ - getWallet(vk) { - return this.keyList.getWallet(vk) - } - /** - * Used to validate that a keystore is the proper Lamden Format (does not decrypt data) - * @param {String} keystoreData The contents of an existing encrypted keystore file - * @return {Boolean} valid - * @throws {Error} This is not a valid keystore file. - */ - validateKeyStore(keystoreData){ - assertTypes$1.isObjectWithKeys(keystoreData); - try{ - let encryptedData = JSON.parse(keystoreData.data); - if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){ - throw new Error("This is not a valid keystore file.") - } - } catch (e) { - throw new Error("This is not a valid keystore file.") - } - return true; - } - /** - * Create a Keystore text string from the keys contained in the Keystore instance - * @param {String} password A password to encrypt the data - * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password. - * @return {String} A JSON stringified object containing the encrypted data - * @throws {Error} Any errors from the encyption process - */ - createKeystore(password, hint = undefined) { - assertTypes$1.isStringWithValue(password); - if (hint){ - assertTypes$1.isStringWithValue(hint); - } - return this.keyList.createKeystore(password, hint) - } - /** - * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore. - * @param {String} password A password to encrypt the data - * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor. - * @throws {Error} Any errors from the encyption process - */ - decryptKeystore(password, keystoreData = undefined){ - if (keystoreData) this.addKeystoreData(keystoreData); - if (!this.encryptedData) throw new Error ("No keystoreData to decrypt.") - try{ - this.keyList.decryptKeystore(password, this.encryptedData.data); - }catch (e){ - throw new Error("Incorrect Keystore Password.") - } - } -} - -var index = { - TransactionBuilder, - TransactionBatcher, - Masternode_API: LamdenMasterNode_API, - Network, - wallet, - Keystore, - Encoder: encoder_1, - utils -}; - -module.exports = index; diff --git a/package-lock.json b/package-lock.json index df6e18a..0097f72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2453 +1,8 @@ { "name": "lamden-js", - "version": "1.6.1", - "lockfileVersion": 2, + "version": "2.0.0", + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "1.6.1", - "license": "MIT", - "dependencies": { - "assert": "1.4.1", - "bignumber.js": "^9.0.0", - "bip39": "^3.0.4", - "ed25519-hd-key": "^1.2.0", - "node-cryptojs-aes": "^0.4.0", - "node-fetch": "^2.6.1", - "tweetnacl": "1.0.1", - "types-validate-assert": "^1.0.1" - }, - "devDependencies": { - "@babel/core": "^7.8.4", - "dotenv": "^8.2.0", - "expect.js": "^0.3.1", - "mocha": "^7.2.0", - "rollup": "^1.31.1", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-builtins": "^2.0.0", - "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^5.2.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.8.3" - } - }, - "node_modules/@babel/core": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", - "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helpers": "^7.8.4", - "@babel/parser": "^7.8.4", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", - "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", - "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "node_modules/@babel/traverse": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", - "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.4", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.4", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@types/estree": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", - "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "13.7.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.2.tgz", - "integrity": "sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dependencies": { - "util": "0.10.3" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - }, - "node_modules/bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/buffer-es6": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", - "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ed25519-hd-key": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.2.0.tgz", - "integrity": "sha512-pwES3tQ4Z8g3sfIBZEgtuTwFtHq5AlB9L8k9a48k7qPn74q2OmgrrgkdwyJ+P2GVTOBVCClAC7w21Wpksso3gw==", - "dependencies": { - "bip39": "3.0.2", - "create-hmac": "1.1.7", - "tweetnacl": "1.0.3" - } - }, - "node_modules/ed25519-hd-key/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" - }, - "node_modules/ed25519-hd-key/node_modules/bip39": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", - "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/ed25519-hd-key/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/elliptic/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/expect.js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", - "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "deprecated": "Fixed a prototype pollution security issue in 4.1.0, please upgrade to ^4.1.1 or ^5.0.1.", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hash.js/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39" - } - }, - "node_modules/is-reference/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/magic-string": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", - "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/node-cryptojs-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-cryptojs-aes/-/node-cryptojs-aes-0.4.0.tgz", - "integrity": "sha1-ZM+6gMH7yfrDR8jrLCwSrb06igc=", - "engines": { - "node": "*" - } - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/process-es6": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", - "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.31.1.tgz", - "integrity": "sha512-2JREN1YdrS/kpPzEd33ZjtuNbOuBC3ePfuZBdKEybvqcEcszW1ckyVqzcEiEe0nE8sqHK+pbJg+PsAgRJ8+1dg==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - }, - "bin": { - "rollup": "dist/bin/rollup" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", - "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "7 || ^7.0.0-rc.2", - "rollup": ">=0.60.0 <2" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs.", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.12.0" - } - }, - "node_modules/rollup-plugin-node-builtins": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.0.0.tgz", - "integrity": "sha1-xvKR4WfpVg6+qH+/3Bq7RLCnweY=", - "dev": true, - "dependencies": { - "buffer-es6": "^4.9.2", - "crypto-browserify": "^3.11.0", - "process-es6": "^0.11.2" - } - }, - "node_modules/rollup-plugin-node-globals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz", - "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==", - "dev": true, - "dependencies": { - "acorn": "^5.7.3", - "buffer-es6": "^4.9.3", - "estree-walker": "^0.5.2", - "magic-string": "^0.22.5", - "process-es6": "^0.11.6", - "rollup-pluginutils": "^2.3.1" - } - }, - "node_modules/rollup-plugin-node-globals/node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/rollup-plugin-node-globals/node_modules/estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", - "dev": true - }, - "node_modules/rollup-plugin-node-globals/node_modules/magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "dependencies": { - "vlq": "^0.2.2" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.11.0" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tweetnacl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz", - "integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==" - }, - "node_modules/types-validate-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/types-validate-assert/-/types-validate-assert-1.0.1.tgz", - "integrity": "sha512-SyTxYwMbxwMtSxmkjbXaWAA+kHWMrZLg4Y72osVwXy3u8LjKvDpye6zrcR4ifj0V0pE7Qa/H0uH9LtmqL0NLew==" - }, - "node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - } - }, "dependencies": { "@babel/code-frame": { "version": "7.8.3", @@ -2684,10 +239,166 @@ "to-fast-properties": "^2.0.0" } }, + "@rollup/plugin-alias": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz", + "integrity": "sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==", + "dev": true, + "requires": { + "slash": "^3.0.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/plugin-inject": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.3.tgz", + "integrity": "sha512-lzMXmj0LZjd67MI+M8H9dk/oCxR0TYqYAdZ6ZOejWQLSUtud+FUPu4NCMAO8KyWWAalFo8ean7yFHCMvCNsCZw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@types/estree": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.42.tgz", - "integrity": "sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ==", + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/node": { @@ -2696,21 +407,6 @@ "integrity": "sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", - "dev": true - }, "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", @@ -2785,6 +481,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "bignumber.js": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", @@ -2940,6 +642,16 @@ } } }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-es6": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", @@ -3065,6 +777,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3157,6 +875,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -3526,6 +1250,12 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3562,6 +1292,15 @@ "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -3601,23 +1340,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-reference": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", - "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", - "dev": true, - "requires": { - "@types/estree": "0.0.39" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } - } - }, "is-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", @@ -3698,15 +1420,6 @@ "chalk": "^2.4.2" } }, - "magic-string": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.6.tgz", - "integrity": "sha512-3a5LOMSGoCTH5rbqobC2HuDNRtE2glHZ8J7pK+QZYppyWA36yuNpsX994rIY2nCuyP7CZYy7lQq/X2jygiZ89g==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4036,17 +1749,6 @@ "inherits": "^2.0.1" } }, - "rollup": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.31.1.tgz", - "integrity": "sha512-2JREN1YdrS/kpPzEd33ZjtuNbOuBC3ePfuZBdKEybvqcEcszW1ckyVqzcEiEe0nE8sqHK+pbJg+PsAgRJ8+1dg==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - } - }, "rollup-plugin-babel": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", @@ -4057,19 +1759,6 @@ "rollup-pluginutils": "^2.8.1" } }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, "rollup-plugin-node-builtins": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.0.0.tgz", @@ -4118,17 +1807,13 @@ } } }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", + "rollup-plugin-polyfill-node": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.7.0.tgz", + "integrity": "sha512-iJLZDfvxcQh3SpC0OiYlZG9ik26aRM29hiC2sARbAPXYunB8rzW8GtVaWuJgiCtX1hNAo/OaYvVXfPp15fMs7g==", "dev": true, "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" + "@rollup/plugin-inject": "^4.0.0" } }, "rollup-pluginutils": { @@ -4172,6 +1857,12 @@ "safe-buffer": "^5.0.1" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -4190,14 +1881,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4250,6 +1933,14 @@ "es-abstract": "^1.17.5" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", diff --git a/package.json b/package.json index 1c3119f..fbe73b9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "lamden-js", "version": "2.0.0", "description": "A javascript implementaion for creating wallets, submitting transactions and interacting with masternodes on the Lamden Blockchain.", - "main": "dist/lamden.js", + "main": "dist/cjs/lamden.js", + "module": "dist/esm/lamden.js", "scripts": { "test": "npm run build && mocha", "tests": "npm run test", @@ -44,14 +45,17 @@ }, "devDependencies": { "@babel/core": "^7.8.4", + "@rollup/plugin-alias": "^3.1.8", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-inject": "^4.0.3", + "@rollup/plugin-node-resolve": "^13.0.6", + "buffer": "^6.0.3", "dotenv": "^8.2.0", "expect.js": "^0.3.1", "mocha": "^7.2.0", - "rollup": "^1.31.1", "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-builtins": "^2.0.0", "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^5.2.0" + "rollup-plugin-polyfill-node": "^0.7.0" } } diff --git a/rollup.config.js b/rollup.config.js index a2853a8..45ce643 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,18 +1,35 @@ -import resolve from 'rollup-plugin-node-resolve'; -import builtins from 'rollup-plugin-node-builtins'; -import commonjs from 'rollup-plugin-commonjs'; -import globals from 'rollup-plugin-node-globals'; +import nodePolyfills from "rollup-plugin-polyfill-node"; +import { nodeResolve as resolve } from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import alias from "@rollup/plugin-alias"; -module.exports = { - input: 'src/index.js', +export default [ + { + input: "src/index.js", output: { - file: 'dist/lamden.js', - format: 'cjs' + file: "dist/esm/lamden.js", + format: "esm", + sourcemap: true, }, + plugins: [ - resolve({preferBuiltins: true}), - commonjs(), - globals(), - builtins() - ] -}; \ No newline at end of file + alias({ + entries: [{ find: "bip39", replacement: "../bip39.browser" }], + }), + resolve({ browser: true, preferBuiltins: false }), + commonjs(), + nodePolyfills(), + ], + }, + { + input: "src/index.js", + output: { + file: "dist/cjs/lamden.js", + format: "cjs", + exports: "default", + sourcemap: true, + }, + plugins: [resolve({ preferBuiltins: true }), commonjs()], + external: ["tweetnacl", "bip39", "ed25519-hd-key"], + }, +]; diff --git a/src/bip39.browser.js b/src/bip39.browser.js new file mode 100644 index 0000000..8c3e545 --- /dev/null +++ b/src/bip39.browser.js @@ -0,0 +1,16654 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bip39 = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],2:[function(require,module,exports){ + +},{}],3:[function(require,module,exports){ +(function (Buffer){(function (){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this)}).call(this,require("buffer").Buffer) +},{"base64-js":1,"buffer":3,"ieee754":5}],4:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + +},{}],5:[function(require,module,exports){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],6:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + +},{}],7:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + +},{}],8:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],9:[function(require,module,exports){ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":3}],10:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/lib/_stream_readable.js'); +Stream.Writable = require('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = require('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = require('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = require('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js') +Stream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js') + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":4,"inherits":6,"readable-stream/lib/_stream_duplex.js":12,"readable-stream/lib/_stream_passthrough.js":13,"readable-stream/lib/_stream_readable.js":14,"readable-stream/lib/_stream_transform.js":15,"readable-stream/lib/_stream_writable.js":16,"readable-stream/lib/internal/streams/end-of-stream.js":20,"readable-stream/lib/internal/streams/pipeline.js":22}],11:[function(require,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],12:[function(require,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = require('./_stream_readable'); + +var Writable = require('./_stream_writable'); + +require('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this)}).call(this,require('_process')) +},{"./_stream_readable":14,"./_stream_writable":16,"_process":8,"inherits":6}],13:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +require('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":15,"inherits":6}],14:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = require('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = require('./internal/streams/buffer_list'); + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +require('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + 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 + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + 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]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":11,"./_stream_duplex":12,"./internal/streams/async_iterator":17,"./internal/streams/buffer_list":18,"./internal/streams/destroy":19,"./internal/streams/from":21,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"events":4,"inherits":6,"string_decoder/":25,"util":2}],15:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = require('./_stream_duplex'); + +require('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":11,"./_stream_duplex":12,"inherits":6}],16:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +require('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + 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); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + 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); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":11,"./_stream_duplex":12,"./internal/streams/destroy":19,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"inherits":6,"util-deprecate":26}],17:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this)}).call(this,require('_process')) +},{"./end-of-stream":20,"_process":8}],18:[function(require,module,exports){ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); +},{"buffer":3,"util":2}],19:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this)}).call(this,require('_process')) +},{"_process":8}],20:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":11}],21:[function(require,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],22:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":11,"./end-of-stream":20}],23:[function(require,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":11}],24:[function(require,module,exports){ +module.exports = require('events').EventEmitter; + +},{"events":4}],25:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + 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; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":9}],26:[function(require,module,exports){ +(function (global){(function (){ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],27:[function(require,module,exports){ +var Buffer = require('safe-buffer').Buffer +var Transform = require('stream').Transform +var StringDecoder = require('string_decoder').StringDecoder +var inherits = require('inherits') + +function CipherBase (hashMode) { + Transform.call(this) + this.hashMode = typeof hashMode === 'string' + if (this.hashMode) { + this[hashMode] = this._finalOrDigest + } else { + this.final = this._finalOrDigest + } + if (this._final) { + this.__final = this._final + this._final = null + } + this._decoder = null + this._encoding = null +} +inherits(CipherBase, Transform) + +CipherBase.prototype.update = function (data, inputEnc, outputEnc) { + if (typeof data === 'string') { + data = Buffer.from(data, inputEnc) + } + + var outData = this._update(data) + if (this.hashMode) return this + + if (outputEnc) { + outData = this._toString(outData, outputEnc) + } + + return outData +} + +CipherBase.prototype.setAutoPadding = function () {} +CipherBase.prototype.getAuthTag = function () { + throw new Error('trying to get auth tag in unsupported state') +} + +CipherBase.prototype.setAuthTag = function () { + throw new Error('trying to set auth tag in unsupported state') +} + +CipherBase.prototype.setAAD = function () { + throw new Error('trying to set aad in unsupported state') +} + +CipherBase.prototype._transform = function (data, _, next) { + var err + try { + if (this.hashMode) { + this._update(data) + } else { + this.push(this._update(data)) + } + } catch (e) { + err = e + } finally { + next(err) + } +} +CipherBase.prototype._flush = function (done) { + var err + try { + this.push(this.__final()) + } catch (e) { + err = e + } + + done(err) +} +CipherBase.prototype._finalOrDigest = function (outputEnc) { + var outData = this.__final() || Buffer.alloc(0) + if (outputEnc) { + outData = this._toString(outData, outputEnc, true) + } + return outData +} + +CipherBase.prototype._toString = function (value, enc, fin) { + if (!this._decoder) { + this._decoder = new StringDecoder(enc) + this._encoding = enc + } + + if (this._encoding !== enc) throw new Error('can\'t switch encodings') + + var out = this._decoder.write(value) + if (fin) { + out += this._decoder.end() + } + + return out +} + +module.exports = CipherBase + +},{"inherits":31,"safe-buffer":40,"stream":10,"string_decoder":25}],28:[function(require,module,exports){ +'use strict' +var inherits = require('inherits') +var MD5 = require('md5.js') +var RIPEMD160 = require('ripemd160') +var sha = require('sha.js') +var Base = require('cipher-base') + +function Hash (hash) { + Base.call(this, 'digest') + + this._hash = hash +} + +inherits(Hash, Base) + +Hash.prototype._update = function (data) { + this._hash.update(data) +} + +Hash.prototype._final = function () { + return this._hash.digest() +} + +module.exports = function createHash (alg) { + alg = alg.toLowerCase() + if (alg === 'md5') return new MD5() + if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() + + return new Hash(sha(alg)) +} + +},{"cipher-base":27,"inherits":31,"md5.js":32,"ripemd160":39,"sha.js":42}],29:[function(require,module,exports){ +var MD5 = require('md5.js') + +module.exports = function (buffer) { + return new MD5().update(buffer).digest() +} + +},{"md5.js":32}],30:[function(require,module,exports){ +'use strict' +var Buffer = require('safe-buffer').Buffer +var Transform = require('stream').Transform +var inherits = require('inherits') + +function throwIfNotStringOrBuffer (val, prefix) { + if (!Buffer.isBuffer(val) && typeof val !== 'string') { + throw new TypeError(prefix + ' must be a string or a buffer') + } +} + +function HashBase (blockSize) { + Transform.call(this) + + this._block = Buffer.allocUnsafe(blockSize) + this._blockSize = blockSize + this._blockOffset = 0 + this._length = [0, 0, 0, 0] + + this._finalized = false +} + +inherits(HashBase, Transform) + +HashBase.prototype._transform = function (chunk, encoding, callback) { + var error = null + try { + this.update(chunk, encoding) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype._flush = function (callback) { + var error = null + try { + this.push(this.digest()) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype.update = function (data, encoding) { + throwIfNotStringOrBuffer(data, 'Data') + if (this._finalized) throw new Error('Digest already called') + if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding) + + // consume data + var block = this._block + var offset = 0 + while (this._blockOffset + data.length - offset >= this._blockSize) { + for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++] + this._update() + this._blockOffset = 0 + } + while (offset < data.length) block[this._blockOffset++] = data[offset++] + + // update length + for (var j = 0, carry = data.length * 8; carry > 0; ++j) { + this._length[j] += carry + carry = (this._length[j] / 0x0100000000) | 0 + if (carry > 0) this._length[j] -= 0x0100000000 * carry + } + + return this +} + +HashBase.prototype._update = function () { + throw new Error('_update is not implemented') +} + +HashBase.prototype.digest = function (encoding) { + if (this._finalized) throw new Error('Digest already called') + this._finalized = true + + var digest = this._digest() + if (encoding !== undefined) digest = digest.toString(encoding) + + // reset state + this._block.fill(0) + this._blockOffset = 0 + for (var i = 0; i < 4; ++i) this._length[i] = 0 + + return digest +} + +HashBase.prototype._digest = function () { + throw new Error('_digest is not implemented') +} + +module.exports = HashBase + +},{"inherits":31,"safe-buffer":40,"stream":10}],31:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],32:[function(require,module,exports){ +'use strict' +var inherits = require('inherits') +var HashBase = require('hash-base') +var Buffer = require('safe-buffer').Buffer + +var ARRAY16 = new Array(16) + +function MD5 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 +} + +inherits(MD5, HashBase) + +MD5.prototype._update = function () { + var M = ARRAY16 + for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4) + + var a = this._a + var b = this._b + var c = this._c + var d = this._d + + a = fnF(a, b, c, d, M[0], 0xd76aa478, 7) + d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12) + c = fnF(c, d, a, b, M[2], 0x242070db, 17) + b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22) + a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7) + d = fnF(d, a, b, c, M[5], 0x4787c62a, 12) + c = fnF(c, d, a, b, M[6], 0xa8304613, 17) + b = fnF(b, c, d, a, M[7], 0xfd469501, 22) + a = fnF(a, b, c, d, M[8], 0x698098d8, 7) + d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12) + c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17) + b = fnF(b, c, d, a, M[11], 0x895cd7be, 22) + a = fnF(a, b, c, d, M[12], 0x6b901122, 7) + d = fnF(d, a, b, c, M[13], 0xfd987193, 12) + c = fnF(c, d, a, b, M[14], 0xa679438e, 17) + b = fnF(b, c, d, a, M[15], 0x49b40821, 22) + + a = fnG(a, b, c, d, M[1], 0xf61e2562, 5) + d = fnG(d, a, b, c, M[6], 0xc040b340, 9) + c = fnG(c, d, a, b, M[11], 0x265e5a51, 14) + b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20) + a = fnG(a, b, c, d, M[5], 0xd62f105d, 5) + d = fnG(d, a, b, c, M[10], 0x02441453, 9) + c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14) + b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20) + a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5) + d = fnG(d, a, b, c, M[14], 0xc33707d6, 9) + c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14) + b = fnG(b, c, d, a, M[8], 0x455a14ed, 20) + a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5) + d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9) + c = fnG(c, d, a, b, M[7], 0x676f02d9, 14) + b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20) + + a = fnH(a, b, c, d, M[5], 0xfffa3942, 4) + d = fnH(d, a, b, c, M[8], 0x8771f681, 11) + c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16) + b = fnH(b, c, d, a, M[14], 0xfde5380c, 23) + a = fnH(a, b, c, d, M[1], 0xa4beea44, 4) + d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11) + c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16) + b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23) + a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4) + d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11) + c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16) + b = fnH(b, c, d, a, M[6], 0x04881d05, 23) + a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4) + d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11) + c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16) + b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23) + + a = fnI(a, b, c, d, M[0], 0xf4292244, 6) + d = fnI(d, a, b, c, M[7], 0x432aff97, 10) + c = fnI(c, d, a, b, M[14], 0xab9423a7, 15) + b = fnI(b, c, d, a, M[5], 0xfc93a039, 21) + a = fnI(a, b, c, d, M[12], 0x655b59c3, 6) + d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10) + c = fnI(c, d, a, b, M[10], 0xffeff47d, 15) + b = fnI(b, c, d, a, M[1], 0x85845dd1, 21) + a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6) + d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10) + c = fnI(c, d, a, b, M[6], 0xa3014314, 15) + b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21) + a = fnI(a, b, c, d, M[4], 0xf7537e82, 6) + d = fnI(d, a, b, c, M[11], 0xbd3af235, 10) + c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15) + b = fnI(b, c, d, a, M[9], 0xeb86d391, 21) + + this._a = (this._a + a) | 0 + this._b = (this._b + b) | 0 + this._c = (this._c + c) | 0 + this._d = (this._d + d) | 0 +} + +MD5.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = Buffer.allocUnsafe(16) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fnF (a, b, c, d, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 +} + +function fnG (a, b, c, d, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 +} + +function fnH (a, b, c, d, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 +} + +function fnI (a, b, c, d, m, k, s) { + return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 +} + +module.exports = MD5 + +},{"hash-base":30,"inherits":31,"safe-buffer":40}],33:[function(require,module,exports){ +exports.pbkdf2 = require('./lib/async') +exports.pbkdf2Sync = require('./lib/sync') + +},{"./lib/async":34,"./lib/sync":37}],34:[function(require,module,exports){ +(function (process,global){(function (){ +var checkParameters = require('./precondition') +var defaultEncoding = require('./default-encoding') +var sync = require('./sync') +var Buffer = require('safe-buffer').Buffer + +var ZERO_BUF +var subtle = global.crypto && global.crypto.subtle +var toBrowser = { + 'sha': 'SHA-1', + 'sha-1': 'SHA-1', + 'sha1': 'SHA-1', + 'sha256': 'SHA-256', + 'sha-256': 'SHA-256', + 'sha384': 'SHA-384', + 'sha-384': 'SHA-384', + 'sha-512': 'SHA-512', + 'sha512': 'SHA-512' +} +var checks = [] +function checkNative (algo) { + if (global.process && !global.process.browser) { + return Promise.resolve(false) + } + if (!subtle || !subtle.importKey || !subtle.deriveBits) { + return Promise.resolve(false) + } + if (checks[algo] !== undefined) { + return checks[algo] + } + ZERO_BUF = ZERO_BUF || Buffer.alloc(8) + var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) + .then(function () { + return true + }).catch(function () { + return false + }) + checks[algo] = prom + return prom +} + +function browserPbkdf2 (password, salt, iterations, length, algo) { + return subtle.importKey( + 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits'] + ).then(function (key) { + return subtle.deriveBits({ + name: 'PBKDF2', + salt: salt, + iterations: iterations, + hash: { + name: algo + } + }, key, length << 3) + }).then(function (res) { + return Buffer.from(res) + }) +} + +function resolvePromise (promise, callback) { + promise.then(function (out) { + process.nextTick(function () { + callback(null, out) + }) + }, function (e) { + process.nextTick(function () { + callback(e) + }) + }) +} +module.exports = function (password, salt, iterations, keylen, digest, callback) { + if (typeof digest === 'function') { + callback = digest + digest = undefined + } + + digest = digest || 'sha1' + var algo = toBrowser[digest.toLowerCase()] + + if (!algo || typeof global.Promise !== 'function') { + return process.nextTick(function () { + var out + try { + out = sync(password, salt, iterations, keylen, digest) + } catch (e) { + return callback(e) + } + callback(null, out) + }) + } + + checkParameters(password, salt, iterations, keylen) + if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') + if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) + + resolvePromise(checkNative(algo).then(function (resp) { + if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) + + return sync(password, salt, iterations, keylen, digest) + }), callback) +} + +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./default-encoding":35,"./precondition":36,"./sync":37,"_process":8,"safe-buffer":40}],35:[function(require,module,exports){ +(function (process){(function (){ +var defaultEncoding +/* istanbul ignore next */ +if (process.browser) { + defaultEncoding = 'utf-8' +} else { + var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10) + + defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary' +} +module.exports = defaultEncoding + +}).call(this)}).call(this,require('_process')) +},{"_process":8}],36:[function(require,module,exports){ +(function (Buffer){(function (){ +var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs + +function checkBuffer (buf, name) { + if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { + throw new TypeError(name + ' must be a buffer or string') + } +} + +module.exports = function (password, salt, iterations, keylen) { + checkBuffer(password, 'Password') + checkBuffer(salt, 'Salt') + + if (typeof iterations !== 'number') { + throw new TypeError('Iterations not a number') + } + + if (iterations < 0) { + throw new TypeError('Bad iterations') + } + + if (typeof keylen !== 'number') { + throw new TypeError('Key length not a number') + } + + if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ + throw new TypeError('Bad key length') + } +} + +}).call(this)}).call(this,{"isBuffer":require("../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js")}) +},{"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js":7}],37:[function(require,module,exports){ +var md5 = require('create-hash/md5') +var RIPEMD160 = require('ripemd160') +var sha = require('sha.js') + +var checkParameters = require('./precondition') +var defaultEncoding = require('./default-encoding') +var Buffer = require('safe-buffer').Buffer +var ZEROS = Buffer.alloc(128) +var sizes = { + md5: 16, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64, + rmd160: 20, + ripemd160: 20 +} + +function Hmac (alg, key, saltLen) { + var hash = getDigest(alg) + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 + + if (key.length > blocksize) { + key = hash(key) + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]) + var opad = Buffer.allocUnsafe(blocksize + sizes[alg]) + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4) + ipad.copy(ipad1, 0, 0, blocksize) + this.ipad1 = ipad1 + this.ipad2 = ipad + this.opad = opad + this.alg = alg + this.blocksize = blocksize + this.hash = hash + this.size = sizes[alg] +} + +Hmac.prototype.run = function (data, ipad) { + data.copy(ipad, this.blocksize) + var h = this.hash(ipad) + h.copy(this.opad, this.blocksize) + return this.hash(this.opad) +} + +function getDigest (alg) { + function shaFunc (data) { + return sha(alg).update(data).digest() + } + function rmd160Func (data) { + return new RIPEMD160().update(data).digest() + } + + if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func + if (alg === 'md5') return md5 + return shaFunc +} + +function pbkdf2 (password, salt, iterations, keylen, digest) { + checkParameters(password, salt, iterations, keylen) + + if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) + + digest = digest || 'sha1' + + var hmac = new Hmac(digest, password, salt.length) + + var DK = Buffer.allocUnsafe(keylen) + var block1 = Buffer.allocUnsafe(salt.length + 4) + salt.copy(block1, 0, 0, salt.length) + + var destPos = 0 + var hLen = sizes[digest] + var l = Math.ceil(keylen / hLen) + + for (var i = 1; i <= l; i++) { + block1.writeUInt32BE(i, salt.length) + + var T = hmac.run(block1, hmac.ipad1) + var U = T + + for (var j = 1; j < iterations; j++) { + U = hmac.run(U, hmac.ipad2) + for (var k = 0; k < hLen; k++) T[k] ^= U[k] + } + + T.copy(DK, destPos) + destPos += hLen + } + + return DK +} + +module.exports = pbkdf2 + +},{"./default-encoding":35,"./precondition":36,"create-hash/md5":29,"ripemd160":39,"safe-buffer":40,"sha.js":42}],38:[function(require,module,exports){ +(function (process,global){(function (){ +'use strict' + +// limit of Crypto.getRandomValues() +// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues +var MAX_BYTES = 65536 + +// Node supports requesting up to this number of bytes +// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 +var MAX_UINT32 = 4294967295 + +function oldBrowser () { + throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') +} + +var Buffer = require('safe-buffer').Buffer +var crypto = global.crypto || global.msCrypto + +if (crypto && crypto.getRandomValues) { + module.exports = randomBytes +} else { + module.exports = oldBrowser +} + +function randomBytes (size, cb) { + // phantomjs needs to throw + if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') + + var bytes = Buffer.allocUnsafe(size) + + if (size > 0) { // getRandomValues fails on IE if size == 0 + if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues + // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues + for (var generated = 0; generated < size; generated += MAX_BYTES) { + // buffer.slice automatically checks if the end is past the end of + // the buffer so we don't have to here + crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)) + } + } else { + crypto.getRandomValues(bytes) + } + } + + if (typeof cb === 'function') { + return process.nextTick(function () { + cb(null, bytes) + }) + } + + return bytes +} + +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"_process":8,"safe-buffer":40}],39:[function(require,module,exports){ +'use strict' +var Buffer = require('buffer').Buffer +var inherits = require('inherits') +var HashBase = require('hash-base') + +var ARRAY16 = new Array(16) + +var 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 +] + +var 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 +] + +var 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 +] + +var 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 +] + +var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] +var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000] + +function RIPEMD160 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 +} + +inherits(RIPEMD160, HashBase) + +RIPEMD160.prototype._update = function () { + var words = ARRAY16 + for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4) + + var al = this._a | 0 + var bl = this._b | 0 + var cl = this._c | 0 + var dl = this._d | 0 + var el = this._e | 0 + + var ar = this._a | 0 + var br = this._b | 0 + var cr = this._c | 0 + var dr = this._d | 0 + var er = this._e | 0 + + // computation + for (var i = 0; i < 80; i += 1) { + var tl + var tr + if (i < 16) { + tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]) + tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]) + } else if (i < 32) { + tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]) + tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]) + } else if (i < 48) { + tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]) + tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]) + } else if (i < 64) { + tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]) + tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]) + } else { // if (i<80) { + tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]) + tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]) + } + + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = tl + + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = tr + } + + // update state + var t = (this._b + cl + dr) | 0 + this._b = (this._c + dl + er) | 0 + this._c = (this._d + el + ar) | 0 + this._d = (this._e + al + br) | 0 + this._e = (this._a + bl + cr) | 0 + this._a = t +} + +RIPEMD160.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + buffer.writeInt32LE(this._e, 16) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fn1 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn2 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 +} + +function fn3 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn4 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 +} + +function fn5 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 +} + +module.exports = RIPEMD160 + +},{"buffer":3,"hash-base":30,"inherits":31}],40:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":3}],41:[function(require,module,exports){ +var Buffer = require('safe-buffer').Buffer + +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = Buffer.alloc(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 +} + +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = Buffer.from(data, enc) + } + + var block = this._block + var blockSize = this._blockSize + var length = data.length + var accum = this._len + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize + var remainder = Math.min(length - offset, blockSize - assigned) + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i] + } + + accum += remainder + offset += remainder + + if ((accum % blockSize) === 0) { + this._update(block) + } + } + + this._len += length + return this +} + +Hash.prototype.digest = function (enc) { + var rem = this._len % this._blockSize + + this._block[rem] = 0x80 + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1) + + if (rem >= this._finalSize) { + this._update(this._block) + this._block.fill(0) + } + + var bits = this._len * 8 + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4) + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0 + var highBits = (bits - lowBits) / 0x100000000 + + this._block.writeUInt32BE(highBits, this._blockSize - 8) + this._block.writeUInt32BE(lowBits, this._blockSize - 4) + } + + this._update(this._block) + var hash = this._hash() + + return enc ? hash.toString(enc) : hash +} + +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} + +module.exports = Hash + +},{"safe-buffer":40}],42:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() + + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +} + +exports.sha = require('./sha') +exports.sha1 = require('./sha1') +exports.sha224 = require('./sha224') +exports.sha256 = require('./sha256') +exports.sha384 = require('./sha384') +exports.sha512 = require('./sha512') + +},{"./sha":43,"./sha1":44,"./sha224":45,"./sha256":46,"./sha384":47,"./sha512":48}],43:[function(require,module,exports){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ + +var inherits = require('inherits') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha, Hash) + +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha + +},{"./hash":41,"inherits":31,"safe-buffer":40}],44:[function(require,module,exports){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var inherits = require('inherits') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] + +var W = new Array(80) + +function Sha1 () { + this.init() + this._w = W + + Hash.call(this, 64, 56) +} + +inherits(Sha1, Hash) + +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this +} + +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} + +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} + +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} + +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} + +Sha1.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} + +Sha1.prototype._hash = function () { + var H = Buffer.allocUnsafe(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H +} + +module.exports = Sha1 + +},{"./hash":41,"inherits":31,"safe-buffer":40}],45:[function(require,module,exports){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = require('inherits') +var Sha256 = require('./sha256') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var W = new Array(64) + +function Sha224 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha224, Sha256) + +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 + + return this +} + +Sha224.prototype._hash = function () { + var H = Buffer.allocUnsafe(28) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + + return H +} + +module.exports = Sha224 + +},{"./hash":41,"./sha256":46,"inherits":31,"safe-buffer":40}],46:[function(require,module,exports){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = require('inherits') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] + +var W = new Array(64) + +function Sha256 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha256, Hash) + +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 + + return this +} + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 + + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} + +Sha256.prototype._hash = function () { + var H = Buffer.allocUnsafe(32) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) + + return H +} + +module.exports = Sha256 + +},{"./hash":41,"inherits":31,"safe-buffer":40}],47:[function(require,module,exports){ +var inherits = require('inherits') +var SHA512 = require('./sha512') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var W = new Array(160) + +function Sha384 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha384, SHA512) + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d + + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 + + return this +} + +Sha384.prototype._hash = function () { + var H = Buffer.allocUnsafe(48) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + + return H +} + +module.exports = Sha384 + +},{"./hash":41,"./sha512":48,"inherits":31,"safe-buffer":40}],48:[function(require,module,exports){ +var inherits = require('inherits') +var Hash = require('./hash') +var Buffer = require('safe-buffer').Buffer + +var 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 +] + +var W = new Array(160) + +function Sha512 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha512, Hash) + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 + + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this +} + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) + + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] + + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + + W[i] = Wih + W[i + 1] = Wil + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] + + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) + + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] + + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) + + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } + + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} + +Sha512.prototype._hash = function () { + var H = Buffer.allocUnsafe(64) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) + + return H +} + +module.exports = Sha512 + +},{"./hash":41,"inherits":31,"safe-buffer":40}],49:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +// browserify by default only pulls in files that are hard coded in requires +// In order of last to first in this file, the default wordlist will be chosen +// based on what is present. (Bundles may remove wordlists they don't need) +const wordlists = {}; +exports.wordlists = wordlists; +let _default; +exports._default = _default; +try { + exports._default = _default = require('./wordlists/czech.json'); + wordlists.czech = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/chinese_simplified.json'); + wordlists.chinese_simplified = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/chinese_traditional.json'); + wordlists.chinese_traditional = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/korean.json'); + wordlists.korean = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/french.json'); + wordlists.french = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/italian.json'); + wordlists.italian = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/spanish.json'); + wordlists.spanish = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/japanese.json'); + wordlists.japanese = _default; + wordlists.JA = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/portuguese.json'); + wordlists.portuguese = _default; +} +catch (err) { } +try { + exports._default = _default = require('./wordlists/english.json'); + wordlists.english = _default; + wordlists.EN = _default; +} +catch (err) { } + +},{"./wordlists/chinese_simplified.json":51,"./wordlists/chinese_traditional.json":undefined,"./wordlists/czech.json":undefined,"./wordlists/english.json":52,"./wordlists/french.json":undefined,"./wordlists/italian.json":undefined,"./wordlists/japanese.json":53,"./wordlists/korean.json":undefined,"./wordlists/portuguese.json":54,"./wordlists/spanish.json":undefined}],50:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const createHash = require("create-hash"); +const pbkdf2_1 = require("pbkdf2"); +const randomBytes = require("randombytes"); +const _wordlists_1 = require("./_wordlists"); +let DEFAULT_WORDLIST = _wordlists_1._default; +const INVALID_MNEMONIC = 'Invalid mnemonic'; +const INVALID_ENTROPY = 'Invalid entropy'; +const INVALID_CHECKSUM = 'Invalid mnemonic checksum'; +const WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\n' + + 'Please pass a 2048 word array explicitly.'; +function pbkdf2Promise(password, saltMixin, iterations, keylen, digest) { + return Promise.resolve().then(() => new Promise((resolve, reject) => { + const callback = (err, derivedKey) => { + if (err) { + return reject(err); + } + else { + return resolve(derivedKey); + } + }; + pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback); + })); +} +function normalize(str) { + return (str || '').normalize('NFKD'); +} +function lpad(str, padString, length) { + while (str.length < length) { + str = padString + str; + } + return str; +} +function binaryToByte(bin) { + return parseInt(bin, 2); +} +function bytesToBinary(bytes) { + return bytes.map((x) => lpad(x.toString(2), '0', 8)).join(''); +} +function deriveChecksumBits(entropyBuffer) { + const ENT = entropyBuffer.length * 8; + const CS = ENT / 32; + const hash = createHash('sha256') + .update(entropyBuffer) + .digest(); + return bytesToBinary(Array.from(hash)).slice(0, CS); +} +function salt(password) { + return 'mnemonic' + (password || ''); +} +function mnemonicToSeedSync(mnemonic, password) { + const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); + const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); + return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); +} +exports.mnemonicToSeedSync = mnemonicToSeedSync; +function mnemonicToSeed(mnemonic, password) { + return Promise.resolve().then(() => { + const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); + const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); + return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); + }); +} +exports.mnemonicToSeed = mnemonicToSeed; +function mnemonicToEntropy(mnemonic, wordlist) { + wordlist = wordlist || DEFAULT_WORDLIST; + if (!wordlist) { + throw new Error(WORDLIST_REQUIRED); + } + const words = normalize(mnemonic).split(' '); + if (words.length % 3 !== 0) { + throw new Error(INVALID_MNEMONIC); + } + // convert word indices to 11 bit binary strings + const bits = words + .map((word) => { + const index = wordlist.indexOf(word); + if (index === -1) { + throw new Error(INVALID_MNEMONIC); + } + return lpad(index.toString(2), '0', 11); + }) + .join(''); + // split the binary string into ENT/CS + const dividerIndex = Math.floor(bits.length / 33) * 32; + const entropyBits = bits.slice(0, dividerIndex); + const checksumBits = bits.slice(dividerIndex); + // calculate the checksum and compare + const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte); + if (entropyBytes.length < 16) { + throw new Error(INVALID_ENTROPY); + } + if (entropyBytes.length > 32) { + throw new Error(INVALID_ENTROPY); + } + if (entropyBytes.length % 4 !== 0) { + throw new Error(INVALID_ENTROPY); + } + const entropy = Buffer.from(entropyBytes); + const newChecksum = deriveChecksumBits(entropy); + if (newChecksum !== checksumBits) { + throw new Error(INVALID_CHECKSUM); + } + return entropy.toString('hex'); +} +exports.mnemonicToEntropy = mnemonicToEntropy; +function entropyToMnemonic(entropy, wordlist) { + if (!Buffer.isBuffer(entropy)) { + entropy = Buffer.from(entropy, 'hex'); + } + wordlist = wordlist || DEFAULT_WORDLIST; + if (!wordlist) { + throw new Error(WORDLIST_REQUIRED); + } + // 128 <= ENT <= 256 + if (entropy.length < 16) { + throw new TypeError(INVALID_ENTROPY); + } + if (entropy.length > 32) { + throw new TypeError(INVALID_ENTROPY); + } + if (entropy.length % 4 !== 0) { + throw new TypeError(INVALID_ENTROPY); + } + const entropyBits = bytesToBinary(Array.from(entropy)); + const checksumBits = deriveChecksumBits(entropy); + const bits = entropyBits + checksumBits; + const chunks = bits.match(/(.{1,11})/g); + const words = chunks.map((binary) => { + const index = binaryToByte(binary); + return wordlist[index]; + }); + return wordlist[0] === '\u3042\u3044\u3053\u304f\u3057\u3093' // Japanese wordlist + ? words.join('\u3000') + : words.join(' '); +} +exports.entropyToMnemonic = entropyToMnemonic; +function generateMnemonic(strength, rng, wordlist) { + strength = strength || 128; + if (strength % 32 !== 0) { + throw new TypeError(INVALID_ENTROPY); + } + rng = rng || randomBytes; + return entropyToMnemonic(rng(strength / 8), wordlist); +} +exports.generateMnemonic = generateMnemonic; +function validateMnemonic(mnemonic, wordlist) { + try { + mnemonicToEntropy(mnemonic, wordlist); + } + catch (e) { + return false; + } + return true; +} +exports.validateMnemonic = validateMnemonic; +function setDefaultWordlist(language) { + const result = _wordlists_1.wordlists[language]; + if (result) { + DEFAULT_WORDLIST = result; + } + else { + throw new Error('Could not find wordlist for language "' + language + '"'); + } +} +exports.setDefaultWordlist = setDefaultWordlist; +function getDefaultWordlist() { + if (!DEFAULT_WORDLIST) { + throw new Error('No Default Wordlist set'); + } + return Object.keys(_wordlists_1.wordlists).filter((lang) => { + if (lang === 'JA' || lang === 'EN') { + return false; + } + return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]); + })[0]; +} +exports.getDefaultWordlist = getDefaultWordlist; +var _wordlists_2 = require("./_wordlists"); +exports.wordlists = _wordlists_2.wordlists; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"./_wordlists":49,"buffer":3,"create-hash":28,"pbkdf2":33,"randombytes":38}],51:[function(require,module,exports){ +module.exports=[ + "的", + "一", + "是", + "在", + "不", + "了", + "有", + "和", + "人", + "这", + "中", + "大", + "为", + "上", + "个", + "国", + "我", + "以", + "要", + "他", + "时", + "来", + "用", + "们", + "生", + "到", + "作", + "地", + "于", + "出", + "就", + "分", + "对", + "成", + "会", + "可", + "主", + "发", + "年", + "动", + "同", + "工", + "也", + "能", + "下", + "过", + "子", + "说", + "产", + "种", + "面", + "而", + "方", + "后", + "多", + "定", + "行", + "学", + "法", + "所", + "民", + "得", + "经", + "十", + "三", + "之", + "进", + "着", + "等", + "部", + "度", + "家", + "电", + "力", + "里", + "如", + "水", + "化", + "高", + "自", + "二", + "理", + "起", + "小", + "物", + "现", + "实", + "加", + "量", + "都", + "两", + "体", + "制", + "机", + "当", + "使", + "点", + "从", + "业", + "本", + "去", + "把", + "性", + "好", + "应", + "开", + "它", + "合", + "还", + "因", + "由", + "其", + "些", + "然", + "前", + "外", + "天", + "政", + "四", + "日", + "那", + "社", + "义", + "事", + "平", + "形", + "相", + "全", + "表", + "间", + "样", + "与", + "关", + "各", + "重", + "新", + "线", + "内", + "数", + "正", + "心", + "反", + "你", + "明", + "看", + "原", + "又", + "么", + "利", + "比", + "或", + "但", + "质", + "气", + "第", + "向", + "道", + "命", + "此", + "变", + "条", + "只", + "没", + "结", + "解", + "问", + "意", + "建", + "月", + "公", + "无", + "系", + "军", + "很", + "情", + "者", + "最", + "立", + "代", + "想", + "已", + "通", + "并", + "提", + "直", + "题", + "党", + "程", + "展", + "五", + "果", + "料", + "象", + "员", + "革", + "位", + "入", + "常", + "文", + "总", + "次", + "品", + "式", + "活", + "设", + "及", + "管", + "特", + "件", + "长", + "求", + "老", + "头", + "基", + "资", + "边", + "流", + "路", + "级", + "少", + "图", + "山", + "统", + "接", + "知", + "较", + "将", + "组", + "见", + "计", + "别", + "她", + "手", + "角", + "期", + "根", + "论", + "运", + "农", + "指", + "几", + "九", + "区", + "强", + "放", + "决", + "西", + "被", + "干", + "做", + "必", + "战", + "先", + "回", + "则", + "任", + "取", + "据", + "处", + "队", + "南", + "给", + "色", + "光", + "门", + "即", + "保", + "治", + "北", + "造", + "百", + "规", + "热", + "领", + "七", + "海", + "口", + "东", + "导", + "器", + "压", + "志", + "世", + "金", + "增", + "争", + "济", + "阶", + "油", + "思", + "术", + "极", + "交", + "受", + "联", + "什", + "认", + "六", + "共", + "权", + "收", + "证", + "改", + "清", + "美", + "再", + "采", + "转", + "更", + "单", + "风", + "切", + "打", + "白", + "教", + "速", + "花", + "带", + "安", + "场", + "身", + "车", + "例", + "真", + "务", + "具", + "万", + "每", + "目", + "至", + "达", + "走", + "积", + "示", + "议", + "声", + "报", + "斗", + "完", + "类", + "八", + "离", + "华", + "名", + "确", + "才", + "科", + "张", + "信", + "马", + "节", + "话", + "米", + "整", + "空", + "元", + "况", + "今", + "集", + "温", + "传", + "土", + "许", + "步", + "群", + "广", + "石", + "记", + "需", + "段", + "研", + "界", + "拉", + "林", + "律", + "叫", + "且", + "究", + "观", + "越", + "织", + "装", + "影", + "算", + "低", + "持", + "音", + "众", + "书", + "布", + "复", + "容", + "儿", + "须", + "际", + "商", + "非", + "验", + "连", + "断", + "深", + "难", + "近", + "矿", + "千", + "周", + "委", + "素", + "技", + "备", + "半", + "办", + "青", + "省", + "列", + "习", + "响", + "约", + "支", + "般", + "史", + "感", + "劳", + "便", + "团", + "往", + "酸", + "历", + "市", + "克", + "何", + "除", + "消", + "构", + "府", + "称", + "太", + "准", + "精", + "值", + "号", + "率", + "族", + "维", + "划", + "选", + "标", + "写", + "存", + "候", + "毛", + "亲", + "快", + "效", + "斯", + "院", + "查", + "江", + "型", + "眼", + "王", + "按", + "格", + "养", + "易", + "置", + "派", + "层", + "片", + "始", + "却", + "专", + "状", + "育", + "厂", + "京", + "识", + "适", + "属", + "圆", + "包", + "火", + "住", + "调", + "满", + "县", + "局", + "照", + "参", + "红", + "细", + "引", + "听", + "该", + "铁", + "价", + "严", + "首", + "底", + "液", + "官", + "德", + "随", + "病", + "苏", + "失", + "尔", + "死", + "讲", + "配", + "女", + "黄", + "推", + "显", + "谈", + "罪", + "神", + "艺", + "呢", + "席", + "含", + "企", + "望", + "密", + "批", + "营", + "项", + "防", + "举", + "球", + "英", + "氧", + "势", + "告", + "李", + "台", + "落", + "木", + "帮", + "轮", + "破", + "亚", + "师", + "围", + "注", + "远", + "字", + "材", + "排", + "供", + "河", + "态", + "封", + "另", + "施", + "减", + "树", + "溶", + "怎", + "止", + "案", + "言", + "士", + "均", + "武", + "固", + "叶", + "鱼", + "波", + "视", + "仅", + "费", + "紧", + "爱", + "左", + "章", + "早", + "朝", + "害", + "续", + "轻", + "服", + "试", + "食", + "充", + "兵", + "源", + "判", + "护", + "司", + "足", + "某", + "练", + "差", + "致", + "板", + "田", + "降", + "黑", + "犯", + "负", + "击", + "范", + "继", + "兴", + "似", + "余", + "坚", + "曲", + "输", + "修", + "故", + "城", + "夫", + "够", + "送", + "笔", + "船", + "占", + "右", + "财", + "吃", + "富", + "春", + "职", + "觉", + "汉", + "画", + "功", + "巴", + "跟", + "虽", + "杂", + "飞", + "检", + "吸", + "助", + "升", + "阳", + "互", + "初", + "创", + "抗", + "考", + "投", + "坏", + "策", + "古", + "径", + "换", + "未", + "跑", + "留", + "钢", + "曾", + "端", + "责", + "站", + "简", + "述", + "钱", + "副", + "尽", + "帝", + "射", + "草", + "冲", + "承", + "独", + "令", + "限", + "阿", + "宣", + "环", + "双", + "请", + "超", + "微", + "让", + "控", + "州", + "良", + "轴", + "找", + "否", + "纪", + "益", + "依", + "优", + "顶", + "础", + "载", + "倒", + "房", + "突", + "坐", + "粉", + "敌", + "略", + "客", + "袁", + "冷", + "胜", + "绝", + "析", + "块", + "剂", + "测", + "丝", + "协", + "诉", + "念", + "陈", + "仍", + "罗", + "盐", + "友", + "洋", + "错", + "苦", + "夜", + "刑", + "移", + "频", + "逐", + "靠", + "混", + "母", + "短", + "皮", + "终", + "聚", + "汽", + "村", + "云", + "哪", + "既", + "距", + "卫", + "停", + "烈", + "央", + "察", + "烧", + "迅", + "境", + "若", + "印", + "洲", + "刻", + "括", + "激", + "孔", + "搞", + "甚", + "室", + "待", + "核", + "校", + "散", + "侵", + "吧", + "甲", + "游", + "久", + "菜", + "味", + "旧", + "模", + "湖", + "货", + "损", + "预", + "阻", + "毫", + "普", + "稳", + "乙", + "妈", + "植", + "息", + "扩", + "银", + "语", + "挥", + "酒", + "守", + "拿", + "序", + "纸", + "医", + "缺", + "雨", + "吗", + "针", + "刘", + "啊", + "急", + "唱", + "误", + "训", + "愿", + "审", + "附", + "获", + "茶", + "鲜", + "粮", + "斤", + "孩", + "脱", + "硫", + "肥", + "善", + "龙", + "演", + "父", + "渐", + "血", + "欢", + "械", + "掌", + "歌", + "沙", + "刚", + "攻", + "谓", + "盾", + "讨", + "晚", + "粒", + "乱", + "燃", + "矛", + "乎", + "杀", + "药", + "宁", + "鲁", + "贵", + "钟", + "煤", + "读", + "班", + "伯", + "香", + "介", + "迫", + "句", + "丰", + "培", + "握", + "兰", + "担", + "弦", + "蛋", + "沉", + "假", + "穿", + "执", + "答", + "乐", + "谁", + "顺", + "烟", + "缩", + "征", + "脸", + "喜", + "松", + "脚", + "困", + "异", + "免", + "背", + "星", + "福", + "买", + "染", + "井", + "概", + "慢", + "怕", + "磁", + "倍", + "祖", + "皇", + "促", + "静", + "补", + "评", + "翻", + "肉", + "践", + "尼", + "衣", + "宽", + "扬", + "棉", + "希", + "伤", + "操", + "垂", + "秋", + "宜", + "氢", + "套", + "督", + "振", + "架", + "亮", + "末", + "宪", + "庆", + "编", + "牛", + "触", + "映", + "雷", + "销", + "诗", + "座", + "居", + "抓", + "裂", + "胞", + "呼", + "娘", + "景", + "威", + "绿", + "晶", + "厚", + "盟", + "衡", + "鸡", + "孙", + "延", + "危", + "胶", + "屋", + "乡", + "临", + "陆", + "顾", + "掉", + "呀", + "灯", + "岁", + "措", + "束", + "耐", + "剧", + "玉", + "赵", + "跳", + "哥", + "季", + "课", + "凯", + "胡", + "额", + "款", + "绍", + "卷", + "齐", + "伟", + "蒸", + "殖", + "永", + "宗", + "苗", + "川", + "炉", + "岩", + "弱", + "零", + "杨", + "奏", + "沿", + "露", + "杆", + "探", + "滑", + "镇", + "饭", + "浓", + "航", + "怀", + "赶", + "库", + "夺", + "伊", + "灵", + "税", + "途", + "灭", + "赛", + "归", + "召", + "鼓", + "播", + "盘", + "裁", + "险", + "康", + "唯", + "录", + "菌", + "纯", + "借", + "糖", + "盖", + "横", + "符", + "私", + "努", + "堂", + "域", + "枪", + "润", + "幅", + "哈", + "竟", + "熟", + "虫", + "泽", + "脑", + "壤", + "碳", + "欧", + "遍", + "侧", + "寨", + "敢", + "彻", + "虑", + "斜", + "薄", + "庭", + "纳", + "弹", + "饲", + "伸", + "折", + "麦", + "湿", + "暗", + "荷", + "瓦", + "塞", + "床", + "筑", + "恶", + "户", + "访", + "塔", + "奇", + "透", + "梁", + "刀", + "旋", + "迹", + "卡", + "氯", + "遇", + "份", + "毒", + "泥", + "退", + "洗", + "摆", + "灰", + "彩", + "卖", + "耗", + "夏", + "择", + "忙", + "铜", + "献", + "硬", + "予", + "繁", + "圈", + "雪", + "函", + "亦", + "抽", + "篇", + "阵", + "阴", + "丁", + "尺", + "追", + "堆", + "雄", + "迎", + "泛", + "爸", + "楼", + "避", + "谋", + "吨", + "野", + "猪", + "旗", + "累", + "偏", + "典", + "馆", + "索", + "秦", + "脂", + "潮", + "爷", + "豆", + "忽", + "托", + "惊", + "塑", + "遗", + "愈", + "朱", + "替", + "纤", + "粗", + "倾", + "尚", + "痛", + "楚", + "谢", + "奋", + "购", + "磨", + "君", + "池", + "旁", + "碎", + "骨", + "监", + "捕", + "弟", + "暴", + "割", + "贯", + "殊", + "释", + "词", + "亡", + "壁", + "顿", + "宝", + "午", + "尘", + "闻", + "揭", + "炮", + "残", + "冬", + "桥", + "妇", + "警", + "综", + "招", + "吴", + "付", + "浮", + "遭", + "徐", + "您", + "摇", + "谷", + "赞", + "箱", + "隔", + "订", + "男", + "吹", + "园", + "纷", + "唐", + "败", + "宋", + "玻", + "巨", + "耕", + "坦", + "荣", + "闭", + "湾", + "键", + "凡", + "驻", + "锅", + "救", + "恩", + "剥", + "凝", + "碱", + "齿", + "截", + "炼", + "麻", + "纺", + "禁", + "废", + "盛", + "版", + "缓", + "净", + "睛", + "昌", + "婚", + "涉", + "筒", + "嘴", + "插", + "岸", + "朗", + "庄", + "街", + "藏", + "姑", + "贸", + "腐", + "奴", + "啦", + "惯", + "乘", + "伙", + "恢", + "匀", + "纱", + "扎", + "辩", + "耳", + "彪", + "臣", + "亿", + "璃", + "抵", + "脉", + "秀", + "萨", + "俄", + "网", + "舞", + "店", + "喷", + "纵", + "寸", + "汗", + "挂", + "洪", + "贺", + "闪", + "柬", + "爆", + "烯", + "津", + "稻", + "墙", + "软", + "勇", + "像", + "滚", + "厘", + "蒙", + "芳", + "肯", + "坡", + "柱", + "荡", + "腿", + "仪", + "旅", + "尾", + "轧", + "冰", + "贡", + "登", + "黎", + "削", + "钻", + "勒", + "逃", + "障", + "氨", + "郭", + "峰", + "币", + "港", + "伏", + "轨", + "亩", + "毕", + "擦", + "莫", + "刺", + "浪", + "秘", + "援", + "株", + "健", + "售", + "股", + "岛", + "甘", + "泡", + "睡", + "童", + "铸", + "汤", + "阀", + "休", + "汇", + "舍", + "牧", + "绕", + "炸", + "哲", + "磷", + "绩", + "朋", + "淡", + "尖", + "启", + "陷", + "柴", + "呈", + "徒", + "颜", + "泪", + "稍", + "忘", + "泵", + "蓝", + "拖", + "洞", + "授", + "镜", + "辛", + "壮", + "锋", + "贫", + "虚", + "弯", + "摩", + "泰", + "幼", + "廷", + "尊", + "窗", + "纲", + "弄", + "隶", + "疑", + "氏", + "宫", + "姐", + "震", + "瑞", + "怪", + "尤", + "琴", + "循", + "描", + "膜", + "违", + "夹", + "腰", + "缘", + "珠", + "穷", + "森", + "枝", + "竹", + "沟", + "催", + "绳", + "忆", + "邦", + "剩", + "幸", + "浆", + "栏", + "拥", + "牙", + "贮", + "礼", + "滤", + "钠", + "纹", + "罢", + "拍", + "咱", + "喊", + "袖", + "埃", + "勤", + "罚", + "焦", + "潜", + "伍", + "墨", + "欲", + "缝", + "姓", + "刊", + "饱", + "仿", + "奖", + "铝", + "鬼", + "丽", + "跨", + "默", + "挖", + "链", + "扫", + "喝", + "袋", + "炭", + "污", + "幕", + "诸", + "弧", + "励", + "梅", + "奶", + "洁", + "灾", + "舟", + "鉴", + "苯", + "讼", + "抱", + "毁", + "懂", + "寒", + "智", + "埔", + "寄", + "届", + "跃", + "渡", + "挑", + "丹", + "艰", + "贝", + "碰", + "拔", + "爹", + "戴", + "码", + "梦", + "芽", + "熔", + "赤", + "渔", + "哭", + "敬", + "颗", + "奔", + "铅", + "仲", + "虎", + "稀", + "妹", + "乏", + "珍", + "申", + "桌", + "遵", + "允", + "隆", + "螺", + "仓", + "魏", + "锐", + "晓", + "氮", + "兼", + "隐", + "碍", + "赫", + "拨", + "忠", + "肃", + "缸", + "牵", + "抢", + "博", + "巧", + "壳", + "兄", + "杜", + "讯", + "诚", + "碧", + "祥", + "柯", + "页", + "巡", + "矩", + "悲", + "灌", + "龄", + "伦", + "票", + "寻", + "桂", + "铺", + "圣", + "恐", + "恰", + "郑", + "趣", + "抬", + "荒", + "腾", + "贴", + "柔", + "滴", + "猛", + "阔", + "辆", + "妻", + "填", + "撤", + "储", + "签", + "闹", + "扰", + "紫", + "砂", + "递", + "戏", + "吊", + "陶", + "伐", + "喂", + "疗", + "瓶", + "婆", + "抚", + "臂", + "摸", + "忍", + "虾", + "蜡", + "邻", + "胸", + "巩", + "挤", + "偶", + "弃", + "槽", + "劲", + "乳", + "邓", + "吉", + "仁", + "烂", + "砖", + "租", + "乌", + "舰", + "伴", + "瓜", + "浅", + "丙", + "暂", + "燥", + "橡", + "柳", + "迷", + "暖", + "牌", + "秧", + "胆", + "详", + "簧", + "踏", + "瓷", + "谱", + "呆", + "宾", + "糊", + "洛", + "辉", + "愤", + "竞", + "隙", + "怒", + "粘", + "乃", + "绪", + "肩", + "籍", + "敏", + "涂", + "熙", + "皆", + "侦", + "悬", + "掘", + "享", + "纠", + "醒", + "狂", + "锁", + "淀", + "恨", + "牲", + "霸", + "爬", + "赏", + "逆", + "玩", + "陵", + "祝", + "秒", + "浙", + "貌", + "役", + "彼", + "悉", + "鸭", + "趋", + "凤", + "晨", + "畜", + "辈", + "秩", + "卵", + "署", + "梯", + "炎", + "滩", + "棋", + "驱", + "筛", + "峡", + "冒", + "啥", + "寿", + "译", + "浸", + "泉", + "帽", + "迟", + "硅", + "疆", + "贷", + "漏", + "稿", + "冠", + "嫩", + "胁", + "芯", + "牢", + "叛", + "蚀", + "奥", + "鸣", + "岭", + "羊", + "凭", + "串", + "塘", + "绘", + "酵", + "融", + "盆", + "锡", + "庙", + "筹", + "冻", + "辅", + "摄", + "袭", + "筋", + "拒", + "僚", + "旱", + "钾", + "鸟", + "漆", + "沈", + "眉", + "疏", + "添", + "棒", + "穗", + "硝", + "韩", + "逼", + "扭", + "侨", + "凉", + "挺", + "碗", + "栽", + "炒", + "杯", + "患", + "馏", + "劝", + "豪", + "辽", + "勃", + "鸿", + "旦", + "吏", + "拜", + "狗", + "埋", + "辊", + "掩", + "饮", + "搬", + "骂", + "辞", + "勾", + "扣", + "估", + "蒋", + "绒", + "雾", + "丈", + "朵", + "姆", + "拟", + "宇", + "辑", + "陕", + "雕", + "偿", + "蓄", + "崇", + "剪", + "倡", + "厅", + "咬", + "驶", + "薯", + "刷", + "斥", + "番", + "赋", + "奉", + "佛", + "浇", + "漫", + "曼", + "扇", + "钙", + "桃", + "扶", + "仔", + "返", + "俗", + "亏", + "腔", + "鞋", + "棱", + "覆", + "框", + "悄", + "叔", + "撞", + "骗", + "勘", + "旺", + "沸", + "孤", + "吐", + "孟", + "渠", + "屈", + "疾", + "妙", + "惜", + "仰", + "狠", + "胀", + "谐", + "抛", + "霉", + "桑", + "岗", + "嘛", + "衰", + "盗", + "渗", + "脏", + "赖", + "涌", + "甜", + "曹", + "阅", + "肌", + "哩", + "厉", + "烃", + "纬", + "毅", + "昨", + "伪", + "症", + "煮", + "叹", + "钉", + "搭", + "茎", + "笼", + "酷", + "偷", + "弓", + "锥", + "恒", + "杰", + "坑", + "鼻", + "翼", + "纶", + "叙", + "狱", + "逮", + "罐", + "络", + "棚", + "抑", + "膨", + "蔬", + "寺", + "骤", + "穆", + "冶", + "枯", + "册", + "尸", + "凸", + "绅", + "坯", + "牺", + "焰", + "轰", + "欣", + "晋", + "瘦", + "御", + "锭", + "锦", + "丧", + "旬", + "锻", + "垄", + "搜", + "扑", + "邀", + "亭", + "酯", + "迈", + "舒", + "脆", + "酶", + "闲", + "忧", + "酚", + "顽", + "羽", + "涨", + "卸", + "仗", + "陪", + "辟", + "惩", + "杭", + "姚", + "肚", + "捉", + "飘", + "漂", + "昆", + "欺", + "吾", + "郎", + "烷", + "汁", + "呵", + "饰", + "萧", + "雅", + "邮", + "迁", + "燕", + "撒", + "姻", + "赴", + "宴", + "烦", + "债", + "帐", + "斑", + "铃", + "旨", + "醇", + "董", + "饼", + "雏", + "姿", + "拌", + "傅", + "腹", + "妥", + "揉", + "贤", + "拆", + "歪", + "葡", + "胺", + "丢", + "浩", + "徽", + "昂", + "垫", + "挡", + "览", + "贪", + "慰", + "缴", + "汪", + "慌", + "冯", + "诺", + "姜", + "谊", + "凶", + "劣", + "诬", + "耀", + "昏", + "躺", + "盈", + "骑", + "乔", + "溪", + "丛", + "卢", + "抹", + "闷", + "咨", + "刮", + "驾", + "缆", + "悟", + "摘", + "铒", + "掷", + "颇", + "幻", + "柄", + "惠", + "惨", + "佳", + "仇", + "腊", + "窝", + "涤", + "剑", + "瞧", + "堡", + "泼", + "葱", + "罩", + "霍", + "捞", + "胎", + "苍", + "滨", + "俩", + "捅", + "湘", + "砍", + "霞", + "邵", + "萄", + "疯", + "淮", + "遂", + "熊", + "粪", + "烘", + "宿", + "档", + "戈", + "驳", + "嫂", + "裕", + "徙", + "箭", + "捐", + "肠", + "撑", + "晒", + "辨", + "殿", + "莲", + "摊", + "搅", + "酱", + "屏", + "疫", + "哀", + "蔡", + "堵", + "沫", + "皱", + "畅", + "叠", + "阁", + "莱", + "敲", + "辖", + "钩", + "痕", + "坝", + "巷", + "饿", + "祸", + "丘", + "玄", + "溜", + "曰", + "逻", + "彭", + "尝", + "卿", + "妨", + "艇", + "吞", + "韦", + "怨", + "矮", + "歇" +] + +},{}],52:[function(require,module,exports){ +module.exports=[ + "abandon", + "ability", + "able", + "about", + "above", + "absent", + "absorb", + "abstract", + "absurd", + "abuse", + "access", + "accident", + "account", + "accuse", + "achieve", + "acid", + "acoustic", + "acquire", + "across", + "act", + "action", + "actor", + "actress", + "actual", + "adapt", + "add", + "addict", + "address", + "adjust", + "admit", + "adult", + "advance", + "advice", + "aerobic", + "affair", + "afford", + "afraid", + "again", + "age", + "agent", + "agree", + "ahead", + "aim", + "air", + "airport", + "aisle", + "alarm", + "album", + "alcohol", + "alert", + "alien", + "all", + "alley", + "allow", + "almost", + "alone", + "alpha", + "already", + "also", + "alter", + "always", + "amateur", + "amazing", + "among", + "amount", + "amused", + "analyst", + "anchor", + "ancient", + "anger", + "angle", + "angry", + "animal", + "ankle", + "announce", + "annual", + "another", + "answer", + "antenna", + "antique", + "anxiety", + "any", + "apart", + "apology", + "appear", + "apple", + "approve", + "april", + "arch", + "arctic", + "area", + "arena", + "argue", + "arm", + "armed", + "armor", + "army", + "around", + "arrange", + "arrest", + "arrive", + "arrow", + "art", + "artefact", + "artist", + "artwork", + "ask", + "aspect", + "assault", + "asset", + "assist", + "assume", + "asthma", + "athlete", + "atom", + "attack", + "attend", + "attitude", + "attract", + "auction", + "audit", + "august", + "aunt", + "author", + "auto", + "autumn", + "average", + "avocado", + "avoid", + "awake", + "aware", + "away", + "awesome", + "awful", + "awkward", + "axis", + "baby", + "bachelor", + "bacon", + "badge", + "bag", + "balance", + "balcony", + "ball", + "bamboo", + "banana", + "banner", + "bar", + "barely", + "bargain", + "barrel", + "base", + "basic", + "basket", + "battle", + "beach", + "bean", + "beauty", + "because", + "become", + "beef", + "before", + "begin", + "behave", + "behind", + "believe", + "below", + "belt", + "bench", + "benefit", + "best", + "betray", + "better", + "between", + "beyond", + "bicycle", + "bid", + "bike", + "bind", + "biology", + "bird", + "birth", + "bitter", + "black", + "blade", + "blame", + "blanket", + "blast", + "bleak", + "bless", + "blind", + "blood", + "blossom", + "blouse", + "blue", + "blur", + "blush", + "board", + "boat", + "body", + "boil", + "bomb", + "bone", + "bonus", + "book", + "boost", + "border", + "boring", + "borrow", + "boss", + "bottom", + "bounce", + "box", + "boy", + "bracket", + "brain", + "brand", + "brass", + "brave", + "bread", + "breeze", + "brick", + "bridge", + "brief", + "bright", + "bring", + "brisk", + "broccoli", + "broken", + "bronze", + "broom", + "brother", + "brown", + "brush", + "bubble", + "buddy", + "budget", + "buffalo", + "build", + "bulb", + "bulk", + "bullet", + "bundle", + "bunker", + "burden", + "burger", + "burst", + "bus", + "business", + "busy", + "butter", + "buyer", + "buzz", + "cabbage", + "cabin", + "cable", + "cactus", + "cage", + "cake", + "call", + "calm", + "camera", + "camp", + "can", + "canal", + "cancel", + "candy", + "cannon", + "canoe", + "canvas", + "canyon", + "capable", + "capital", + "captain", + "car", + "carbon", + "card", + "cargo", + "carpet", + "carry", + "cart", + "case", + "cash", + "casino", + "castle", + "casual", + "cat", + "catalog", + "catch", + "category", + "cattle", + "caught", + "cause", + "caution", + "cave", + "ceiling", + "celery", + "cement", + "census", + "century", + "cereal", + "certain", + "chair", + "chalk", + "champion", + "change", + "chaos", + "chapter", + "charge", + "chase", + "chat", + "cheap", + "check", + "cheese", + "chef", + "cherry", + "chest", + "chicken", + "chief", + "child", + "chimney", + "choice", + "choose", + "chronic", + "chuckle", + "chunk", + "churn", + "cigar", + "cinnamon", + "circle", + "citizen", + "city", + "civil", + "claim", + "clap", + "clarify", + "claw", + "clay", + "clean", + "clerk", + "clever", + "click", + "client", + "cliff", + "climb", + "clinic", + "clip", + "clock", + "clog", + "close", + "cloth", + "cloud", + "clown", + "club", + "clump", + "cluster", + "clutch", + "coach", + "coast", + "coconut", + "code", + "coffee", + "coil", + "coin", + "collect", + "color", + "column", + "combine", + "come", + "comfort", + "comic", + "common", + "company", + "concert", + "conduct", + "confirm", + "congress", + "connect", + "consider", + "control", + "convince", + "cook", + "cool", + "copper", + "copy", + "coral", + "core", + "corn", + "correct", + "cost", + "cotton", + "couch", + "country", + "couple", + "course", + "cousin", + "cover", + "coyote", + "crack", + "cradle", + "craft", + "cram", + "crane", + "crash", + "crater", + "crawl", + "crazy", + "cream", + "credit", + "creek", + "crew", + "cricket", + "crime", + "crisp", + "critic", + "crop", + "cross", + "crouch", + "crowd", + "crucial", + "cruel", + "cruise", + "crumble", + "crunch", + "crush", + "cry", + "crystal", + "cube", + "culture", + "cup", + "cupboard", + "curious", + "current", + "curtain", + "curve", + "cushion", + "custom", + "cute", + "cycle", + "dad", + "damage", + "damp", + "dance", + "danger", + "daring", + "dash", + "daughter", + "dawn", + "day", + "deal", + "debate", + "debris", + "decade", + "december", + "decide", + "decline", + "decorate", + "decrease", + "deer", + "defense", + "define", + "defy", + "degree", + "delay", + "deliver", + "demand", + "demise", + "denial", + "dentist", + "deny", + "depart", + "depend", + "deposit", + "depth", + "deputy", + "derive", + "describe", + "desert", + "design", + "desk", + "despair", + "destroy", + "detail", + "detect", + "develop", + "device", + "devote", + "diagram", + "dial", + "diamond", + "diary", + "dice", + "diesel", + "diet", + "differ", + "digital", + "dignity", + "dilemma", + "dinner", + "dinosaur", + "direct", + "dirt", + "disagree", + "discover", + "disease", + "dish", + "dismiss", + "disorder", + "display", + "distance", + "divert", + "divide", + "divorce", + "dizzy", + "doctor", + "document", + "dog", + "doll", + "dolphin", + "domain", + "donate", + "donkey", + "donor", + "door", + "dose", + "double", + "dove", + "draft", + "dragon", + "drama", + "drastic", + "draw", + "dream", + "dress", + "drift", + "drill", + "drink", + "drip", + "drive", + "drop", + "drum", + "dry", + "duck", + "dumb", + "dune", + "during", + "dust", + "dutch", + "duty", + "dwarf", + "dynamic", + "eager", + "eagle", + "early", + "earn", + "earth", + "easily", + "east", + "easy", + "echo", + "ecology", + "economy", + "edge", + "edit", + "educate", + "effort", + "egg", + "eight", + "either", + "elbow", + "elder", + "electric", + "elegant", + "element", + "elephant", + "elevator", + "elite", + "else", + "embark", + "embody", + "embrace", + "emerge", + "emotion", + "employ", + "empower", + "empty", + "enable", + "enact", + "end", + "endless", + "endorse", + "enemy", + "energy", + "enforce", + "engage", + "engine", + "enhance", + "enjoy", + "enlist", + "enough", + "enrich", + "enroll", + "ensure", + "enter", + "entire", + "entry", + "envelope", + "episode", + "equal", + "equip", + "era", + "erase", + "erode", + "erosion", + "error", + "erupt", + "escape", + "essay", + "essence", + "estate", + "eternal", + "ethics", + "evidence", + "evil", + "evoke", + "evolve", + "exact", + "example", + "excess", + "exchange", + "excite", + "exclude", + "excuse", + "execute", + "exercise", + "exhaust", + "exhibit", + "exile", + "exist", + "exit", + "exotic", + "expand", + "expect", + "expire", + "explain", + "expose", + "express", + "extend", + "extra", + "eye", + "eyebrow", + "fabric", + "face", + "faculty", + "fade", + "faint", + "faith", + "fall", + "false", + "fame", + "family", + "famous", + "fan", + "fancy", + "fantasy", + "farm", + "fashion", + "fat", + "fatal", + "father", + "fatigue", + "fault", + "favorite", + "feature", + "february", + "federal", + "fee", + "feed", + "feel", + "female", + "fence", + "festival", + "fetch", + "fever", + "few", + "fiber", + "fiction", + "field", + "figure", + "file", + "film", + "filter", + "final", + "find", + "fine", + "finger", + "finish", + "fire", + "firm", + "first", + "fiscal", + "fish", + "fit", + "fitness", + "fix", + "flag", + "flame", + "flash", + "flat", + "flavor", + "flee", + "flight", + "flip", + "float", + "flock", + "floor", + "flower", + "fluid", + "flush", + "fly", + "foam", + "focus", + "fog", + "foil", + "fold", + "follow", + "food", + "foot", + "force", + "forest", + "forget", + "fork", + "fortune", + "forum", + "forward", + "fossil", + "foster", + "found", + "fox", + "fragile", + "frame", + "frequent", + "fresh", + "friend", + "fringe", + "frog", + "front", + "frost", + "frown", + "frozen", + "fruit", + "fuel", + "fun", + "funny", + "furnace", + "fury", + "future", + "gadget", + "gain", + "galaxy", + "gallery", + "game", + "gap", + "garage", + "garbage", + "garden", + "garlic", + "garment", + "gas", + "gasp", + "gate", + "gather", + "gauge", + "gaze", + "general", + "genius", + "genre", + "gentle", + "genuine", + "gesture", + "ghost", + "giant", + "gift", + "giggle", + "ginger", + "giraffe", + "girl", + "give", + "glad", + "glance", + "glare", + "glass", + "glide", + "glimpse", + "globe", + "gloom", + "glory", + "glove", + "glow", + "glue", + "goat", + "goddess", + "gold", + "good", + "goose", + "gorilla", + "gospel", + "gossip", + "govern", + "gown", + "grab", + "grace", + "grain", + "grant", + "grape", + "grass", + "gravity", + "great", + "green", + "grid", + "grief", + "grit", + "grocery", + "group", + "grow", + "grunt", + "guard", + "guess", + "guide", + "guilt", + "guitar", + "gun", + "gym", + "habit", + "hair", + "half", + "hammer", + "hamster", + "hand", + "happy", + "harbor", + "hard", + "harsh", + "harvest", + "hat", + "have", + "hawk", + "hazard", + "head", + "health", + "heart", + "heavy", + "hedgehog", + "height", + "hello", + "helmet", + "help", + "hen", + "hero", + "hidden", + "high", + "hill", + "hint", + "hip", + "hire", + "history", + "hobby", + "hockey", + "hold", + "hole", + "holiday", + "hollow", + "home", + "honey", + "hood", + "hope", + "horn", + "horror", + "horse", + "hospital", + "host", + "hotel", + "hour", + "hover", + "hub", + "huge", + "human", + "humble", + "humor", + "hundred", + "hungry", + "hunt", + "hurdle", + "hurry", + "hurt", + "husband", + "hybrid", + "ice", + "icon", + "idea", + "identify", + "idle", + "ignore", + "ill", + "illegal", + "illness", + "image", + "imitate", + "immense", + "immune", + "impact", + "impose", + "improve", + "impulse", + "inch", + "include", + "income", + "increase", + "index", + "indicate", + "indoor", + "industry", + "infant", + "inflict", + "inform", + "inhale", + "inherit", + "initial", + "inject", + "injury", + "inmate", + "inner", + "innocent", + "input", + "inquiry", + "insane", + "insect", + "inside", + "inspire", + "install", + "intact", + "interest", + "into", + "invest", + "invite", + "involve", + "iron", + "island", + "isolate", + "issue", + "item", + "ivory", + "jacket", + "jaguar", + "jar", + "jazz", + "jealous", + "jeans", + "jelly", + "jewel", + "job", + "join", + "joke", + "journey", + "joy", + "judge", + "juice", + "jump", + "jungle", + "junior", + "junk", + "just", + "kangaroo", + "keen", + "keep", + "ketchup", + "key", + "kick", + "kid", + "kidney", + "kind", + "kingdom", + "kiss", + "kit", + "kitchen", + "kite", + "kitten", + "kiwi", + "knee", + "knife", + "knock", + "know", + "lab", + "label", + "labor", + "ladder", + "lady", + "lake", + "lamp", + "language", + "laptop", + "large", + "later", + "latin", + "laugh", + "laundry", + "lava", + "law", + "lawn", + "lawsuit", + "layer", + "lazy", + "leader", + "leaf", + "learn", + "leave", + "lecture", + "left", + "leg", + "legal", + "legend", + "leisure", + "lemon", + "lend", + "length", + "lens", + "leopard", + "lesson", + "letter", + "level", + "liar", + "liberty", + "library", + "license", + "life", + "lift", + "light", + "like", + "limb", + "limit", + "link", + "lion", + "liquid", + "list", + "little", + "live", + "lizard", + "load", + "loan", + "lobster", + "local", + "lock", + "logic", + "lonely", + "long", + "loop", + "lottery", + "loud", + "lounge", + "love", + "loyal", + "lucky", + "luggage", + "lumber", + "lunar", + "lunch", + "luxury", + "lyrics", + "machine", + "mad", + "magic", + "magnet", + "maid", + "mail", + "main", + "major", + "make", + "mammal", + "man", + "manage", + "mandate", + "mango", + "mansion", + "manual", + "maple", + "marble", + "march", + "margin", + "marine", + "market", + "marriage", + "mask", + "mass", + "master", + "match", + "material", + "math", + "matrix", + "matter", + "maximum", + "maze", + "meadow", + "mean", + "measure", + "meat", + "mechanic", + "medal", + "media", + "melody", + "melt", + "member", + "memory", + "mention", + "menu", + "mercy", + "merge", + "merit", + "merry", + "mesh", + "message", + "metal", + "method", + "middle", + "midnight", + "milk", + "million", + "mimic", + "mind", + "minimum", + "minor", + "minute", + "miracle", + "mirror", + "misery", + "miss", + "mistake", + "mix", + "mixed", + "mixture", + "mobile", + "model", + "modify", + "mom", + "moment", + "monitor", + "monkey", + "monster", + "month", + "moon", + "moral", + "more", + "morning", + "mosquito", + "mother", + "motion", + "motor", + "mountain", + "mouse", + "move", + "movie", + "much", + "muffin", + "mule", + "multiply", + "muscle", + "museum", + "mushroom", + "music", + "must", + "mutual", + "myself", + "mystery", + "myth", + "naive", + "name", + "napkin", + "narrow", + "nasty", + "nation", + "nature", + "near", + "neck", + "need", + "negative", + "neglect", + "neither", + "nephew", + "nerve", + "nest", + "net", + "network", + "neutral", + "never", + "news", + "next", + "nice", + "night", + "noble", + "noise", + "nominee", + "noodle", + "normal", + "north", + "nose", + "notable", + "note", + "nothing", + "notice", + "novel", + "now", + "nuclear", + "number", + "nurse", + "nut", + "oak", + "obey", + "object", + "oblige", + "obscure", + "observe", + "obtain", + "obvious", + "occur", + "ocean", + "october", + "odor", + "off", + "offer", + "office", + "often", + "oil", + "okay", + "old", + "olive", + "olympic", + "omit", + "once", + "one", + "onion", + "online", + "only", + "open", + "opera", + "opinion", + "oppose", + "option", + "orange", + "orbit", + "orchard", + "order", + "ordinary", + "organ", + "orient", + "original", + "orphan", + "ostrich", + "other", + "outdoor", + "outer", + "output", + "outside", + "oval", + "oven", + "over", + "own", + "owner", + "oxygen", + "oyster", + "ozone", + "pact", + "paddle", + "page", + "pair", + "palace", + "palm", + "panda", + "panel", + "panic", + "panther", + "paper", + "parade", + "parent", + "park", + "parrot", + "party", + "pass", + "patch", + "path", + "patient", + "patrol", + "pattern", + "pause", + "pave", + "payment", + "peace", + "peanut", + "pear", + "peasant", + "pelican", + "pen", + "penalty", + "pencil", + "people", + "pepper", + "perfect", + "permit", + "person", + "pet", + "phone", + "photo", + "phrase", + "physical", + "piano", + "picnic", + "picture", + "piece", + "pig", + "pigeon", + "pill", + "pilot", + "pink", + "pioneer", + "pipe", + "pistol", + "pitch", + "pizza", + "place", + "planet", + "plastic", + "plate", + "play", + "please", + "pledge", + "pluck", + "plug", + "plunge", + "poem", + "poet", + "point", + "polar", + "pole", + "police", + "pond", + "pony", + "pool", + "popular", + "portion", + "position", + "possible", + "post", + "potato", + "pottery", + "poverty", + "powder", + "power", + "practice", + "praise", + "predict", + "prefer", + "prepare", + "present", + "pretty", + "prevent", + "price", + "pride", + "primary", + "print", + "priority", + "prison", + "private", + "prize", + "problem", + "process", + "produce", + "profit", + "program", + "project", + "promote", + "proof", + "property", + "prosper", + "protect", + "proud", + "provide", + "public", + "pudding", + "pull", + "pulp", + "pulse", + "pumpkin", + "punch", + "pupil", + "puppy", + "purchase", + "purity", + "purpose", + "purse", + "push", + "put", + "puzzle", + "pyramid", + "quality", + "quantum", + "quarter", + "question", + "quick", + "quit", + "quiz", + "quote", + "rabbit", + "raccoon", + "race", + "rack", + "radar", + "radio", + "rail", + "rain", + "raise", + "rally", + "ramp", + "ranch", + "random", + "range", + "rapid", + "rare", + "rate", + "rather", + "raven", + "raw", + "razor", + "ready", + "real", + "reason", + "rebel", + "rebuild", + "recall", + "receive", + "recipe", + "record", + "recycle", + "reduce", + "reflect", + "reform", + "refuse", + "region", + "regret", + "regular", + "reject", + "relax", + "release", + "relief", + "rely", + "remain", + "remember", + "remind", + "remove", + "render", + "renew", + "rent", + "reopen", + "repair", + "repeat", + "replace", + "report", + "require", + "rescue", + "resemble", + "resist", + "resource", + "response", + "result", + "retire", + "retreat", + "return", + "reunion", + "reveal", + "review", + "reward", + "rhythm", + "rib", + "ribbon", + "rice", + "rich", + "ride", + "ridge", + "rifle", + "right", + "rigid", + "ring", + "riot", + "ripple", + "risk", + "ritual", + "rival", + "river", + "road", + "roast", + "robot", + "robust", + "rocket", + "romance", + "roof", + "rookie", + "room", + "rose", + "rotate", + "rough", + "round", + "route", + "royal", + "rubber", + "rude", + "rug", + "rule", + "run", + "runway", + "rural", + "sad", + "saddle", + "sadness", + "safe", + "sail", + "salad", + "salmon", + "salon", + "salt", + "salute", + "same", + "sample", + "sand", + "satisfy", + "satoshi", + "sauce", + "sausage", + "save", + "say", + "scale", + "scan", + "scare", + "scatter", + "scene", + "scheme", + "school", + "science", + "scissors", + "scorpion", + "scout", + "scrap", + "screen", + "script", + "scrub", + "sea", + "search", + "season", + "seat", + "second", + "secret", + "section", + "security", + "seed", + "seek", + "segment", + "select", + "sell", + "seminar", + "senior", + "sense", + "sentence", + "series", + "service", + "session", + "settle", + "setup", + "seven", + "shadow", + "shaft", + "shallow", + "share", + "shed", + "shell", + "sheriff", + "shield", + "shift", + "shine", + "ship", + "shiver", + "shock", + "shoe", + "shoot", + "shop", + "short", + "shoulder", + "shove", + "shrimp", + "shrug", + "shuffle", + "shy", + "sibling", + "sick", + "side", + "siege", + "sight", + "sign", + "silent", + "silk", + "silly", + "silver", + "similar", + "simple", + "since", + "sing", + "siren", + "sister", + "situate", + "six", + "size", + "skate", + "sketch", + "ski", + "skill", + "skin", + "skirt", + "skull", + "slab", + "slam", + "sleep", + "slender", + "slice", + "slide", + "slight", + "slim", + "slogan", + "slot", + "slow", + "slush", + "small", + "smart", + "smile", + "smoke", + "smooth", + "snack", + "snake", + "snap", + "sniff", + "snow", + "soap", + "soccer", + "social", + "sock", + "soda", + "soft", + "solar", + "soldier", + "solid", + "solution", + "solve", + "someone", + "song", + "soon", + "sorry", + "sort", + "soul", + "sound", + "soup", + "source", + "south", + "space", + "spare", + "spatial", + "spawn", + "speak", + "special", + "speed", + "spell", + "spend", + "sphere", + "spice", + "spider", + "spike", + "spin", + "spirit", + "split", + "spoil", + "sponsor", + "spoon", + "sport", + "spot", + "spray", + "spread", + "spring", + "spy", + "square", + "squeeze", + "squirrel", + "stable", + "stadium", + "staff", + "stage", + "stairs", + "stamp", + "stand", + "start", + "state", + "stay", + "steak", + "steel", + "stem", + "step", + "stereo", + "stick", + "still", + "sting", + "stock", + "stomach", + "stone", + "stool", + "story", + "stove", + "strategy", + "street", + "strike", + "strong", + "struggle", + "student", + "stuff", + "stumble", + "style", + "subject", + "submit", + "subway", + "success", + "such", + "sudden", + "suffer", + "sugar", + "suggest", + "suit", + "summer", + "sun", + "sunny", + "sunset", + "super", + "supply", + "supreme", + "sure", + "surface", + "surge", + "surprise", + "surround", + "survey", + "suspect", + "sustain", + "swallow", + "swamp", + "swap", + "swarm", + "swear", + "sweet", + "swift", + "swim", + "swing", + "switch", + "sword", + "symbol", + "symptom", + "syrup", + "system", + "table", + "tackle", + "tag", + "tail", + "talent", + "talk", + "tank", + "tape", + "target", + "task", + "taste", + "tattoo", + "taxi", + "teach", + "team", + "tell", + "ten", + "tenant", + "tennis", + "tent", + "term", + "test", + "text", + "thank", + "that", + "theme", + "then", + "theory", + "there", + "they", + "thing", + "this", + "thought", + "three", + "thrive", + "throw", + "thumb", + "thunder", + "ticket", + "tide", + "tiger", + "tilt", + "timber", + "time", + "tiny", + "tip", + "tired", + "tissue", + "title", + "toast", + "tobacco", + "today", + "toddler", + "toe", + "together", + "toilet", + "token", + "tomato", + "tomorrow", + "tone", + "tongue", + "tonight", + "tool", + "tooth", + "top", + "topic", + "topple", + "torch", + "tornado", + "tortoise", + "toss", + "total", + "tourist", + "toward", + "tower", + "town", + "toy", + "track", + "trade", + "traffic", + "tragic", + "train", + "transfer", + "trap", + "trash", + "travel", + "tray", + "treat", + "tree", + "trend", + "trial", + "tribe", + "trick", + "trigger", + "trim", + "trip", + "trophy", + "trouble", + "truck", + "true", + "truly", + "trumpet", + "trust", + "truth", + "try", + "tube", + "tuition", + "tumble", + "tuna", + "tunnel", + "turkey", + "turn", + "turtle", + "twelve", + "twenty", + "twice", + "twin", + "twist", + "two", + "type", + "typical", + "ugly", + "umbrella", + "unable", + "unaware", + "uncle", + "uncover", + "under", + "undo", + "unfair", + "unfold", + "unhappy", + "uniform", + "unique", + "unit", + "universe", + "unknown", + "unlock", + "until", + "unusual", + "unveil", + "update", + "upgrade", + "uphold", + "upon", + "upper", + "upset", + "urban", + "urge", + "usage", + "use", + "used", + "useful", + "useless", + "usual", + "utility", + "vacant", + "vacuum", + "vague", + "valid", + "valley", + "valve", + "van", + "vanish", + "vapor", + "various", + "vast", + "vault", + "vehicle", + "velvet", + "vendor", + "venture", + "venue", + "verb", + "verify", + "version", + "very", + "vessel", + "veteran", + "viable", + "vibrant", + "vicious", + "victory", + "video", + "view", + "village", + "vintage", + "violin", + "virtual", + "virus", + "visa", + "visit", + "visual", + "vital", + "vivid", + "vocal", + "voice", + "void", + "volcano", + "volume", + "vote", + "voyage", + "wage", + "wagon", + "wait", + "walk", + "wall", + "walnut", + "want", + "warfare", + "warm", + "warrior", + "wash", + "wasp", + "waste", + "water", + "wave", + "way", + "wealth", + "weapon", + "wear", + "weasel", + "weather", + "web", + "wedding", + "weekend", + "weird", + "welcome", + "west", + "wet", + "whale", + "what", + "wheat", + "wheel", + "when", + "where", + "whip", + "whisper", + "wide", + "width", + "wife", + "wild", + "will", + "win", + "window", + "wine", + "wing", + "wink", + "winner", + "winter", + "wire", + "wisdom", + "wise", + "wish", + "witness", + "wolf", + "woman", + "wonder", + "wood", + "wool", + "word", + "work", + "world", + "worry", + "worth", + "wrap", + "wreck", + "wrestle", + "wrist", + "write", + "wrong", + "yard", + "year", + "yellow", + "you", + "young", + "youth", + "zebra", + "zero", + "zone", + "zoo" +] + +},{}],53:[function(require,module,exports){ +module.exports=[ + "あいこくしん", + "あいさつ", + "あいだ", + "あおぞら", + "あかちゃん", + "あきる", + "あけがた", + "あける", + "あこがれる", + "あさい", + "あさひ", + "あしあと", + "あじわう", + "あずかる", + "あずき", + "あそぶ", + "あたえる", + "あたためる", + "あたりまえ", + "あたる", + "あつい", + "あつかう", + "あっしゅく", + "あつまり", + "あつめる", + "あてな", + "あてはまる", + "あひる", + "あぶら", + "あぶる", + "あふれる", + "あまい", + "あまど", + "あまやかす", + "あまり", + "あみもの", + "あめりか", + "あやまる", + "あゆむ", + "あらいぐま", + "あらし", + "あらすじ", + "あらためる", + "あらゆる", + "あらわす", + "ありがとう", + "あわせる", + "あわてる", + "あんい", + "あんがい", + "あんこ", + "あんぜん", + "あんてい", + "あんない", + "あんまり", + "いいだす", + "いおん", + "いがい", + "いがく", + "いきおい", + "いきなり", + "いきもの", + "いきる", + "いくじ", + "いくぶん", + "いけばな", + "いけん", + "いこう", + "いこく", + "いこつ", + "いさましい", + "いさん", + "いしき", + "いじゅう", + "いじょう", + "いじわる", + "いずみ", + "いずれ", + "いせい", + "いせえび", + "いせかい", + "いせき", + "いぜん", + "いそうろう", + "いそがしい", + "いだい", + "いだく", + "いたずら", + "いたみ", + "いたりあ", + "いちおう", + "いちじ", + "いちど", + "いちば", + "いちぶ", + "いちりゅう", + "いつか", + "いっしゅん", + "いっせい", + "いっそう", + "いったん", + "いっち", + "いってい", + "いっぽう", + "いてざ", + "いてん", + "いどう", + "いとこ", + "いない", + "いなか", + "いねむり", + "いのち", + "いのる", + "いはつ", + "いばる", + "いはん", + "いびき", + "いひん", + "いふく", + "いへん", + "いほう", + "いみん", + "いもうと", + "いもたれ", + "いもり", + "いやがる", + "いやす", + "いよかん", + "いよく", + "いらい", + "いらすと", + "いりぐち", + "いりょう", + "いれい", + "いれもの", + "いれる", + "いろえんぴつ", + "いわい", + "いわう", + "いわかん", + "いわば", + "いわゆる", + "いんげんまめ", + "いんさつ", + "いんしょう", + "いんよう", + "うえき", + "うえる", + "うおざ", + "うがい", + "うかぶ", + "うかべる", + "うきわ", + "うくらいな", + "うくれれ", + "うけたまわる", + "うけつけ", + "うけとる", + "うけもつ", + "うける", + "うごかす", + "うごく", + "うこん", + "うさぎ", + "うしなう", + "うしろがみ", + "うすい", + "うすぎ", + "うすぐらい", + "うすめる", + "うせつ", + "うちあわせ", + "うちがわ", + "うちき", + "うちゅう", + "うっかり", + "うつくしい", + "うったえる", + "うつる", + "うどん", + "うなぎ", + "うなじ", + "うなずく", + "うなる", + "うねる", + "うのう", + "うぶげ", + "うぶごえ", + "うまれる", + "うめる", + "うもう", + "うやまう", + "うよく", + "うらがえす", + "うらぐち", + "うらない", + "うりあげ", + "うりきれ", + "うるさい", + "うれしい", + "うれゆき", + "うれる", + "うろこ", + "うわき", + "うわさ", + "うんこう", + "うんちん", + "うんてん", + "うんどう", + "えいえん", + "えいが", + "えいきょう", + "えいご", + "えいせい", + "えいぶん", + "えいよう", + "えいわ", + "えおり", + "えがお", + "えがく", + "えきたい", + "えくせる", + "えしゃく", + "えすて", + "えつらん", + "えのぐ", + "えほうまき", + "えほん", + "えまき", + "えもじ", + "えもの", + "えらい", + "えらぶ", + "えりあ", + "えんえん", + "えんかい", + "えんぎ", + "えんげき", + "えんしゅう", + "えんぜつ", + "えんそく", + "えんちょう", + "えんとつ", + "おいかける", + "おいこす", + "おいしい", + "おいつく", + "おうえん", + "おうさま", + "おうじ", + "おうせつ", + "おうたい", + "おうふく", + "おうべい", + "おうよう", + "おえる", + "おおい", + "おおう", + "おおどおり", + "おおや", + "おおよそ", + "おかえり", + "おかず", + "おがむ", + "おかわり", + "おぎなう", + "おきる", + "おくさま", + "おくじょう", + "おくりがな", + "おくる", + "おくれる", + "おこす", + "おこなう", + "おこる", + "おさえる", + "おさない", + "おさめる", + "おしいれ", + "おしえる", + "おじぎ", + "おじさん", + "おしゃれ", + "おそらく", + "おそわる", + "おたがい", + "おたく", + "おだやか", + "おちつく", + "おっと", + "おつり", + "おでかけ", + "おとしもの", + "おとなしい", + "おどり", + "おどろかす", + "おばさん", + "おまいり", + "おめでとう", + "おもいで", + "おもう", + "おもたい", + "おもちゃ", + "おやつ", + "おやゆび", + "およぼす", + "おらんだ", + "おろす", + "おんがく", + "おんけい", + "おんしゃ", + "おんせん", + "おんだん", + "おんちゅう", + "おんどけい", + "かあつ", + "かいが", + "がいき", + "がいけん", + "がいこう", + "かいさつ", + "かいしゃ", + "かいすいよく", + "かいぜん", + "かいぞうど", + "かいつう", + "かいてん", + "かいとう", + "かいふく", + "がいへき", + "かいほう", + "かいよう", + "がいらい", + "かいわ", + "かえる", + "かおり", + "かかえる", + "かがく", + "かがし", + "かがみ", + "かくご", + "かくとく", + "かざる", + "がぞう", + "かたい", + "かたち", + "がちょう", + "がっきゅう", + "がっこう", + "がっさん", + "がっしょう", + "かなざわし", + "かのう", + "がはく", + "かぶか", + "かほう", + "かほご", + "かまう", + "かまぼこ", + "かめれおん", + "かゆい", + "かようび", + "からい", + "かるい", + "かろう", + "かわく", + "かわら", + "がんか", + "かんけい", + "かんこう", + "かんしゃ", + "かんそう", + "かんたん", + "かんち", + "がんばる", + "きあい", + "きあつ", + "きいろ", + "ぎいん", + "きうい", + "きうん", + "きえる", + "きおう", + "きおく", + "きおち", + "きおん", + "きかい", + "きかく", + "きかんしゃ", + "ききて", + "きくばり", + "きくらげ", + "きけんせい", + "きこう", + "きこえる", + "きこく", + "きさい", + "きさく", + "きさま", + "きさらぎ", + "ぎじかがく", + "ぎしき", + "ぎじたいけん", + "ぎじにってい", + "ぎじゅつしゃ", + "きすう", + "きせい", + "きせき", + "きせつ", + "きそう", + "きぞく", + "きぞん", + "きたえる", + "きちょう", + "きつえん", + "ぎっちり", + "きつつき", + "きつね", + "きてい", + "きどう", + "きどく", + "きない", + "きなが", + "きなこ", + "きぬごし", + "きねん", + "きのう", + "きのした", + "きはく", + "きびしい", + "きひん", + "きふく", + "きぶん", + "きぼう", + "きほん", + "きまる", + "きみつ", + "きむずかしい", + "きめる", + "きもだめし", + "きもち", + "きもの", + "きゃく", + "きやく", + "ぎゅうにく", + "きよう", + "きょうりゅう", + "きらい", + "きらく", + "きりん", + "きれい", + "きれつ", + "きろく", + "ぎろん", + "きわめる", + "ぎんいろ", + "きんかくじ", + "きんじょ", + "きんようび", + "ぐあい", + "くいず", + "くうかん", + "くうき", + "くうぐん", + "くうこう", + "ぐうせい", + "くうそう", + "ぐうたら", + "くうふく", + "くうぼ", + "くかん", + "くきょう", + "くげん", + "ぐこう", + "くさい", + "くさき", + "くさばな", + "くさる", + "くしゃみ", + "くしょう", + "くすのき", + "くすりゆび", + "くせげ", + "くせん", + "ぐたいてき", + "くださる", + "くたびれる", + "くちこみ", + "くちさき", + "くつした", + "ぐっすり", + "くつろぐ", + "くとうてん", + "くどく", + "くなん", + "くねくね", + "くのう", + "くふう", + "くみあわせ", + "くみたてる", + "くめる", + "くやくしょ", + "くらす", + "くらべる", + "くるま", + "くれる", + "くろう", + "くわしい", + "ぐんかん", + "ぐんしょく", + "ぐんたい", + "ぐんて", + "けあな", + "けいかく", + "けいけん", + "けいこ", + "けいさつ", + "げいじゅつ", + "けいたい", + "げいのうじん", + "けいれき", + "けいろ", + "けおとす", + "けおりもの", + "げきか", + "げきげん", + "げきだん", + "げきちん", + "げきとつ", + "げきは", + "げきやく", + "げこう", + "げこくじょう", + "げざい", + "けさき", + "げざん", + "けしき", + "けしごむ", + "けしょう", + "げすと", + "けたば", + "けちゃっぷ", + "けちらす", + "けつあつ", + "けつい", + "けつえき", + "けっこん", + "けつじょ", + "けっせき", + "けってい", + "けつまつ", + "げつようび", + "げつれい", + "けつろん", + "げどく", + "けとばす", + "けとる", + "けなげ", + "けなす", + "けなみ", + "けぬき", + "げねつ", + "けねん", + "けはい", + "げひん", + "けぶかい", + "げぼく", + "けまり", + "けみかる", + "けむし", + "けむり", + "けもの", + "けらい", + "けろけろ", + "けわしい", + "けんい", + "けんえつ", + "けんお", + "けんか", + "げんき", + "けんげん", + "けんこう", + "けんさく", + "けんしゅう", + "けんすう", + "げんそう", + "けんちく", + "けんてい", + "けんとう", + "けんない", + "けんにん", + "げんぶつ", + "けんま", + "けんみん", + "けんめい", + "けんらん", + "けんり", + "こあくま", + "こいぬ", + "こいびと", + "ごうい", + "こうえん", + "こうおん", + "こうかん", + "ごうきゅう", + "ごうけい", + "こうこう", + "こうさい", + "こうじ", + "こうすい", + "ごうせい", + "こうそく", + "こうたい", + "こうちゃ", + "こうつう", + "こうてい", + "こうどう", + "こうない", + "こうはい", + "ごうほう", + "ごうまん", + "こうもく", + "こうりつ", + "こえる", + "こおり", + "ごかい", + "ごがつ", + "ごかん", + "こくご", + "こくさい", + "こくとう", + "こくない", + "こくはく", + "こぐま", + "こけい", + "こける", + "ここのか", + "こころ", + "こさめ", + "こしつ", + "こすう", + "こせい", + "こせき", + "こぜん", + "こそだて", + "こたい", + "こたえる", + "こたつ", + "こちょう", + "こっか", + "こつこつ", + "こつばん", + "こつぶ", + "こてい", + "こてん", + "ことがら", + "ことし", + "ことば", + "ことり", + "こなごな", + "こねこね", + "このまま", + "このみ", + "このよ", + "ごはん", + "こひつじ", + "こふう", + "こふん", + "こぼれる", + "ごまあぶら", + "こまかい", + "ごますり", + "こまつな", + "こまる", + "こむぎこ", + "こもじ", + "こもち", + "こもの", + "こもん", + "こやく", + "こやま", + "こゆう", + "こゆび", + "こよい", + "こよう", + "こりる", + "これくしょん", + "ころっけ", + "こわもて", + "こわれる", + "こんいん", + "こんかい", + "こんき", + "こんしゅう", + "こんすい", + "こんだて", + "こんとん", + "こんなん", + "こんびに", + "こんぽん", + "こんまけ", + "こんや", + "こんれい", + "こんわく", + "ざいえき", + "さいかい", + "さいきん", + "ざいげん", + "ざいこ", + "さいしょ", + "さいせい", + "ざいたく", + "ざいちゅう", + "さいてき", + "ざいりょう", + "さうな", + "さかいし", + "さがす", + "さかな", + "さかみち", + "さがる", + "さぎょう", + "さくし", + "さくひん", + "さくら", + "さこく", + "さこつ", + "さずかる", + "ざせき", + "さたん", + "さつえい", + "ざつおん", + "ざっか", + "ざつがく", + "さっきょく", + "ざっし", + "さつじん", + "ざっそう", + "さつたば", + "さつまいも", + "さてい", + "さといも", + "さとう", + "さとおや", + "さとし", + "さとる", + "さのう", + "さばく", + "さびしい", + "さべつ", + "さほう", + "さほど", + "さます", + "さみしい", + "さみだれ", + "さむけ", + "さめる", + "さやえんどう", + "さゆう", + "さよう", + "さよく", + "さらだ", + "ざるそば", + "さわやか", + "さわる", + "さんいん", + "さんか", + "さんきゃく", + "さんこう", + "さんさい", + "ざんしょ", + "さんすう", + "さんせい", + "さんそ", + "さんち", + "さんま", + "さんみ", + "さんらん", + "しあい", + "しあげ", + "しあさって", + "しあわせ", + "しいく", + "しいん", + "しうち", + "しえい", + "しおけ", + "しかい", + "しかく", + "じかん", + "しごと", + "しすう", + "じだい", + "したうけ", + "したぎ", + "したて", + "したみ", + "しちょう", + "しちりん", + "しっかり", + "しつじ", + "しつもん", + "してい", + "してき", + "してつ", + "じてん", + "じどう", + "しなぎれ", + "しなもの", + "しなん", + "しねま", + "しねん", + "しのぐ", + "しのぶ", + "しはい", + "しばかり", + "しはつ", + "しはらい", + "しはん", + "しひょう", + "しふく", + "じぶん", + "しへい", + "しほう", + "しほん", + "しまう", + "しまる", + "しみん", + "しむける", + "じむしょ", + "しめい", + "しめる", + "しもん", + "しゃいん", + "しゃうん", + "しゃおん", + "じゃがいも", + "しやくしょ", + "しゃくほう", + "しゃけん", + "しゃこ", + "しゃざい", + "しゃしん", + "しゃせん", + "しゃそう", + "しゃたい", + "しゃちょう", + "しゃっきん", + "じゃま", + "しゃりん", + "しゃれい", + "じゆう", + "じゅうしょ", + "しゅくはく", + "じゅしん", + "しゅっせき", + "しゅみ", + "しゅらば", + "じゅんばん", + "しょうかい", + "しょくたく", + "しょっけん", + "しょどう", + "しょもつ", + "しらせる", + "しらべる", + "しんか", + "しんこう", + "じんじゃ", + "しんせいじ", + "しんちく", + "しんりん", + "すあげ", + "すあし", + "すあな", + "ずあん", + "すいえい", + "すいか", + "すいとう", + "ずいぶん", + "すいようび", + "すうがく", + "すうじつ", + "すうせん", + "すおどり", + "すきま", + "すくう", + "すくない", + "すける", + "すごい", + "すこし", + "ずさん", + "すずしい", + "すすむ", + "すすめる", + "すっかり", + "ずっしり", + "ずっと", + "すてき", + "すてる", + "すねる", + "すのこ", + "すはだ", + "すばらしい", + "ずひょう", + "ずぶぬれ", + "すぶり", + "すふれ", + "すべて", + "すべる", + "ずほう", + "すぼん", + "すまい", + "すめし", + "すもう", + "すやき", + "すらすら", + "するめ", + "すれちがう", + "すろっと", + "すわる", + "すんぜん", + "すんぽう", + "せあぶら", + "せいかつ", + "せいげん", + "せいじ", + "せいよう", + "せおう", + "せかいかん", + "せきにん", + "せきむ", + "せきゆ", + "せきらんうん", + "せけん", + "せこう", + "せすじ", + "せたい", + "せたけ", + "せっかく", + "せっきゃく", + "ぜっく", + "せっけん", + "せっこつ", + "せっさたくま", + "せつぞく", + "せつだん", + "せつでん", + "せっぱん", + "せつび", + "せつぶん", + "せつめい", + "せつりつ", + "せなか", + "せのび", + "せはば", + "せびろ", + "せぼね", + "せまい", + "せまる", + "せめる", + "せもたれ", + "せりふ", + "ぜんあく", + "せんい", + "せんえい", + "せんか", + "せんきょ", + "せんく", + "せんげん", + "ぜんご", + "せんさい", + "せんしゅ", + "せんすい", + "せんせい", + "せんぞ", + "せんたく", + "せんちょう", + "せんてい", + "せんとう", + "せんぬき", + "せんねん", + "せんぱい", + "ぜんぶ", + "ぜんぽう", + "せんむ", + "せんめんじょ", + "せんもん", + "せんやく", + "せんゆう", + "せんよう", + "ぜんら", + "ぜんりゃく", + "せんれい", + "せんろ", + "そあく", + "そいとげる", + "そいね", + "そうがんきょう", + "そうき", + "そうご", + "そうしん", + "そうだん", + "そうなん", + "そうび", + "そうめん", + "そうり", + "そえもの", + "そえん", + "そがい", + "そげき", + "そこう", + "そこそこ", + "そざい", + "そしな", + "そせい", + "そせん", + "そそぐ", + "そだてる", + "そつう", + "そつえん", + "そっかん", + "そつぎょう", + "そっけつ", + "そっこう", + "そっせん", + "そっと", + "そとがわ", + "そとづら", + "そなえる", + "そなた", + "そふぼ", + "そぼく", + "そぼろ", + "そまつ", + "そまる", + "そむく", + "そむりえ", + "そめる", + "そもそも", + "そよかぜ", + "そらまめ", + "そろう", + "そんかい", + "そんけい", + "そんざい", + "そんしつ", + "そんぞく", + "そんちょう", + "ぞんび", + "ぞんぶん", + "そんみん", + "たあい", + "たいいん", + "たいうん", + "たいえき", + "たいおう", + "だいがく", + "たいき", + "たいぐう", + "たいけん", + "たいこ", + "たいざい", + "だいじょうぶ", + "だいすき", + "たいせつ", + "たいそう", + "だいたい", + "たいちょう", + "たいてい", + "だいどころ", + "たいない", + "たいねつ", + "たいのう", + "たいはん", + "だいひょう", + "たいふう", + "たいへん", + "たいほ", + "たいまつばな", + "たいみんぐ", + "たいむ", + "たいめん", + "たいやき", + "たいよう", + "たいら", + "たいりょく", + "たいる", + "たいわん", + "たうえ", + "たえる", + "たおす", + "たおる", + "たおれる", + "たかい", + "たかね", + "たきび", + "たくさん", + "たこく", + "たこやき", + "たさい", + "たしざん", + "だじゃれ", + "たすける", + "たずさわる", + "たそがれ", + "たたかう", + "たたく", + "ただしい", + "たたみ", + "たちばな", + "だっかい", + "だっきゃく", + "だっこ", + "だっしゅつ", + "だったい", + "たてる", + "たとえる", + "たなばた", + "たにん", + "たぬき", + "たのしみ", + "たはつ", + "たぶん", + "たべる", + "たぼう", + "たまご", + "たまる", + "だむる", + "ためいき", + "ためす", + "ためる", + "たもつ", + "たやすい", + "たよる", + "たらす", + "たりきほんがん", + "たりょう", + "たりる", + "たると", + "たれる", + "たれんと", + "たろっと", + "たわむれる", + "だんあつ", + "たんい", + "たんおん", + "たんか", + "たんき", + "たんけん", + "たんご", + "たんさん", + "たんじょうび", + "だんせい", + "たんそく", + "たんたい", + "だんち", + "たんてい", + "たんとう", + "だんな", + "たんにん", + "だんねつ", + "たんのう", + "たんぴん", + "だんぼう", + "たんまつ", + "たんめい", + "だんれつ", + "だんろ", + "だんわ", + "ちあい", + "ちあん", + "ちいき", + "ちいさい", + "ちえん", + "ちかい", + "ちから", + "ちきゅう", + "ちきん", + "ちけいず", + "ちけん", + "ちこく", + "ちさい", + "ちしき", + "ちしりょう", + "ちせい", + "ちそう", + "ちたい", + "ちたん", + "ちちおや", + "ちつじょ", + "ちてき", + "ちてん", + "ちぬき", + "ちぬり", + "ちのう", + "ちひょう", + "ちへいせん", + "ちほう", + "ちまた", + "ちみつ", + "ちみどろ", + "ちめいど", + "ちゃんこなべ", + "ちゅうい", + "ちゆりょく", + "ちょうし", + "ちょさくけん", + "ちらし", + "ちらみ", + "ちりがみ", + "ちりょう", + "ちるど", + "ちわわ", + "ちんたい", + "ちんもく", + "ついか", + "ついたち", + "つうか", + "つうじょう", + "つうはん", + "つうわ", + "つかう", + "つかれる", + "つくね", + "つくる", + "つけね", + "つける", + "つごう", + "つたえる", + "つづく", + "つつじ", + "つつむ", + "つとめる", + "つながる", + "つなみ", + "つねづね", + "つのる", + "つぶす", + "つまらない", + "つまる", + "つみき", + "つめたい", + "つもり", + "つもる", + "つよい", + "つるぼ", + "つるみく", + "つわもの", + "つわり", + "てあし", + "てあて", + "てあみ", + "ていおん", + "ていか", + "ていき", + "ていけい", + "ていこく", + "ていさつ", + "ていし", + "ていせい", + "ていたい", + "ていど", + "ていねい", + "ていひょう", + "ていへん", + "ていぼう", + "てうち", + "ておくれ", + "てきとう", + "てくび", + "でこぼこ", + "てさぎょう", + "てさげ", + "てすり", + "てそう", + "てちがい", + "てちょう", + "てつがく", + "てつづき", + "でっぱ", + "てつぼう", + "てつや", + "でぬかえ", + "てぬき", + "てぬぐい", + "てのひら", + "てはい", + "てぶくろ", + "てふだ", + "てほどき", + "てほん", + "てまえ", + "てまきずし", + "てみじか", + "てみやげ", + "てらす", + "てれび", + "てわけ", + "てわたし", + "でんあつ", + "てんいん", + "てんかい", + "てんき", + "てんぐ", + "てんけん", + "てんごく", + "てんさい", + "てんし", + "てんすう", + "でんち", + "てんてき", + "てんとう", + "てんない", + "てんぷら", + "てんぼうだい", + "てんめつ", + "てんらんかい", + "でんりょく", + "でんわ", + "どあい", + "といれ", + "どうかん", + "とうきゅう", + "どうぐ", + "とうし", + "とうむぎ", + "とおい", + "とおか", + "とおく", + "とおす", + "とおる", + "とかい", + "とかす", + "ときおり", + "ときどき", + "とくい", + "とくしゅう", + "とくてん", + "とくに", + "とくべつ", + "とけい", + "とける", + "とこや", + "とさか", + "としょかん", + "とそう", + "とたん", + "とちゅう", + "とっきゅう", + "とっくん", + "とつぜん", + "とつにゅう", + "とどける", + "ととのえる", + "とない", + "となえる", + "となり", + "とのさま", + "とばす", + "どぶがわ", + "とほう", + "とまる", + "とめる", + "ともだち", + "ともる", + "どようび", + "とらえる", + "とんかつ", + "どんぶり", + "ないかく", + "ないこう", + "ないしょ", + "ないす", + "ないせん", + "ないそう", + "なおす", + "ながい", + "なくす", + "なげる", + "なこうど", + "なさけ", + "なたでここ", + "なっとう", + "なつやすみ", + "ななおし", + "なにごと", + "なにもの", + "なにわ", + "なのか", + "なふだ", + "なまいき", + "なまえ", + "なまみ", + "なみだ", + "なめらか", + "なめる", + "なやむ", + "ならう", + "ならび", + "ならぶ", + "なれる", + "なわとび", + "なわばり", + "にあう", + "にいがた", + "にうけ", + "におい", + "にかい", + "にがて", + "にきび", + "にくしみ", + "にくまん", + "にげる", + "にさんかたんそ", + "にしき", + "にせもの", + "にちじょう", + "にちようび", + "にっか", + "にっき", + "にっけい", + "にっこう", + "にっさん", + "にっしょく", + "にっすう", + "にっせき", + "にってい", + "になう", + "にほん", + "にまめ", + "にもつ", + "にやり", + "にゅういん", + "にりんしゃ", + "にわとり", + "にんい", + "にんか", + "にんき", + "にんげん", + "にんしき", + "にんずう", + "にんそう", + "にんたい", + "にんち", + "にんてい", + "にんにく", + "にんぷ", + "にんまり", + "にんむ", + "にんめい", + "にんよう", + "ぬいくぎ", + "ぬかす", + "ぬぐいとる", + "ぬぐう", + "ぬくもり", + "ぬすむ", + "ぬまえび", + "ぬめり", + "ぬらす", + "ぬんちゃく", + "ねあげ", + "ねいき", + "ねいる", + "ねいろ", + "ねぐせ", + "ねくたい", + "ねくら", + "ねこぜ", + "ねこむ", + "ねさげ", + "ねすごす", + "ねそべる", + "ねだん", + "ねつい", + "ねっしん", + "ねつぞう", + "ねったいぎょ", + "ねぶそく", + "ねふだ", + "ねぼう", + "ねほりはほり", + "ねまき", + "ねまわし", + "ねみみ", + "ねむい", + "ねむたい", + "ねもと", + "ねらう", + "ねわざ", + "ねんいり", + "ねんおし", + "ねんかん", + "ねんきん", + "ねんぐ", + "ねんざ", + "ねんし", + "ねんちゃく", + "ねんど", + "ねんぴ", + "ねんぶつ", + "ねんまつ", + "ねんりょう", + "ねんれい", + "のいず", + "のおづま", + "のがす", + "のきなみ", + "のこぎり", + "のこす", + "のこる", + "のせる", + "のぞく", + "のぞむ", + "のたまう", + "のちほど", + "のっく", + "のばす", + "のはら", + "のべる", + "のぼる", + "のみもの", + "のやま", + "のらいぬ", + "のらねこ", + "のりもの", + "のりゆき", + "のれん", + "のんき", + "ばあい", + "はあく", + "ばあさん", + "ばいか", + "ばいく", + "はいけん", + "はいご", + "はいしん", + "はいすい", + "はいせん", + "はいそう", + "はいち", + "ばいばい", + "はいれつ", + "はえる", + "はおる", + "はかい", + "ばかり", + "はかる", + "はくしゅ", + "はけん", + "はこぶ", + "はさみ", + "はさん", + "はしご", + "ばしょ", + "はしる", + "はせる", + "ぱそこん", + "はそん", + "はたん", + "はちみつ", + "はつおん", + "はっかく", + "はづき", + "はっきり", + "はっくつ", + "はっけん", + "はっこう", + "はっさん", + "はっしん", + "はったつ", + "はっちゅう", + "はってん", + "はっぴょう", + "はっぽう", + "はなす", + "はなび", + "はにかむ", + "はぶらし", + "はみがき", + "はむかう", + "はめつ", + "はやい", + "はやし", + "はらう", + "はろうぃん", + "はわい", + "はんい", + "はんえい", + "はんおん", + "はんかく", + "はんきょう", + "ばんぐみ", + "はんこ", + "はんしゃ", + "はんすう", + "はんだん", + "ぱんち", + "ぱんつ", + "はんてい", + "はんとし", + "はんのう", + "はんぱ", + "はんぶん", + "はんぺん", + "はんぼうき", + "はんめい", + "はんらん", + "はんろん", + "ひいき", + "ひうん", + "ひえる", + "ひかく", + "ひかり", + "ひかる", + "ひかん", + "ひくい", + "ひけつ", + "ひこうき", + "ひこく", + "ひさい", + "ひさしぶり", + "ひさん", + "びじゅつかん", + "ひしょ", + "ひそか", + "ひそむ", + "ひたむき", + "ひだり", + "ひたる", + "ひつぎ", + "ひっこし", + "ひっし", + "ひつじゅひん", + "ひっす", + "ひつぜん", + "ぴったり", + "ぴっちり", + "ひつよう", + "ひてい", + "ひとごみ", + "ひなまつり", + "ひなん", + "ひねる", + "ひはん", + "ひびく", + "ひひょう", + "ひほう", + "ひまわり", + "ひまん", + "ひみつ", + "ひめい", + "ひめじし", + "ひやけ", + "ひやす", + "ひよう", + "びょうき", + "ひらがな", + "ひらく", + "ひりつ", + "ひりょう", + "ひるま", + "ひるやすみ", + "ひれい", + "ひろい", + "ひろう", + "ひろき", + "ひろゆき", + "ひんかく", + "ひんけつ", + "ひんこん", + "ひんしゅ", + "ひんそう", + "ぴんち", + "ひんぱん", + "びんぼう", + "ふあん", + "ふいうち", + "ふうけい", + "ふうせん", + "ぷうたろう", + "ふうとう", + "ふうふ", + "ふえる", + "ふおん", + "ふかい", + "ふきん", + "ふくざつ", + "ふくぶくろ", + "ふこう", + "ふさい", + "ふしぎ", + "ふじみ", + "ふすま", + "ふせい", + "ふせぐ", + "ふそく", + "ぶたにく", + "ふたん", + "ふちょう", + "ふつう", + "ふつか", + "ふっかつ", + "ふっき", + "ふっこく", + "ぶどう", + "ふとる", + "ふとん", + "ふのう", + "ふはい", + "ふひょう", + "ふへん", + "ふまん", + "ふみん", + "ふめつ", + "ふめん", + "ふよう", + "ふりこ", + "ふりる", + "ふるい", + "ふんいき", + "ぶんがく", + "ぶんぐ", + "ふんしつ", + "ぶんせき", + "ふんそう", + "ぶんぽう", + "へいあん", + "へいおん", + "へいがい", + "へいき", + "へいげん", + "へいこう", + "へいさ", + "へいしゃ", + "へいせつ", + "へいそ", + "へいたく", + "へいてん", + "へいねつ", + "へいわ", + "へきが", + "へこむ", + "べにいろ", + "べにしょうが", + "へらす", + "へんかん", + "べんきょう", + "べんごし", + "へんさい", + "へんたい", + "べんり", + "ほあん", + "ほいく", + "ぼうぎょ", + "ほうこく", + "ほうそう", + "ほうほう", + "ほうもん", + "ほうりつ", + "ほえる", + "ほおん", + "ほかん", + "ほきょう", + "ぼきん", + "ほくろ", + "ほけつ", + "ほけん", + "ほこう", + "ほこる", + "ほしい", + "ほしつ", + "ほしゅ", + "ほしょう", + "ほせい", + "ほそい", + "ほそく", + "ほたて", + "ほたる", + "ぽちぶくろ", + "ほっきょく", + "ほっさ", + "ほったん", + "ほとんど", + "ほめる", + "ほんい", + "ほんき", + "ほんけ", + "ほんしつ", + "ほんやく", + "まいにち", + "まかい", + "まかせる", + "まがる", + "まける", + "まこと", + "まさつ", + "まじめ", + "ますく", + "まぜる", + "まつり", + "まとめ", + "まなぶ", + "まぬけ", + "まねく", + "まほう", + "まもる", + "まゆげ", + "まよう", + "まろやか", + "まわす", + "まわり", + "まわる", + "まんが", + "まんきつ", + "まんぞく", + "まんなか", + "みいら", + "みうち", + "みえる", + "みがく", + "みかた", + "みかん", + "みけん", + "みこん", + "みじかい", + "みすい", + "みすえる", + "みせる", + "みっか", + "みつかる", + "みつける", + "みてい", + "みとめる", + "みなと", + "みなみかさい", + "みねらる", + "みのう", + "みのがす", + "みほん", + "みもと", + "みやげ", + "みらい", + "みりょく", + "みわく", + "みんか", + "みんぞく", + "むいか", + "むえき", + "むえん", + "むかい", + "むかう", + "むかえ", + "むかし", + "むぎちゃ", + "むける", + "むげん", + "むさぼる", + "むしあつい", + "むしば", + "むじゅん", + "むしろ", + "むすう", + "むすこ", + "むすぶ", + "むすめ", + "むせる", + "むせん", + "むちゅう", + "むなしい", + "むのう", + "むやみ", + "むよう", + "むらさき", + "むりょう", + "むろん", + "めいあん", + "めいうん", + "めいえん", + "めいかく", + "めいきょく", + "めいさい", + "めいし", + "めいそう", + "めいぶつ", + "めいれい", + "めいわく", + "めぐまれる", + "めざす", + "めした", + "めずらしい", + "めだつ", + "めまい", + "めやす", + "めんきょ", + "めんせき", + "めんどう", + "もうしあげる", + "もうどうけん", + "もえる", + "もくし", + "もくてき", + "もくようび", + "もちろん", + "もどる", + "もらう", + "もんく", + "もんだい", + "やおや", + "やける", + "やさい", + "やさしい", + "やすい", + "やすたろう", + "やすみ", + "やせる", + "やそう", + "やたい", + "やちん", + "やっと", + "やっぱり", + "やぶる", + "やめる", + "ややこしい", + "やよい", + "やわらかい", + "ゆうき", + "ゆうびんきょく", + "ゆうべ", + "ゆうめい", + "ゆけつ", + "ゆしゅつ", + "ゆせん", + "ゆそう", + "ゆたか", + "ゆちゃく", + "ゆでる", + "ゆにゅう", + "ゆびわ", + "ゆらい", + "ゆれる", + "ようい", + "ようか", + "ようきゅう", + "ようじ", + "ようす", + "ようちえん", + "よかぜ", + "よかん", + "よきん", + "よくせい", + "よくぼう", + "よけい", + "よごれる", + "よさん", + "よしゅう", + "よそう", + "よそく", + "よっか", + "よてい", + "よどがわく", + "よねつ", + "よやく", + "よゆう", + "よろこぶ", + "よろしい", + "らいう", + "らくがき", + "らくご", + "らくさつ", + "らくだ", + "らしんばん", + "らせん", + "らぞく", + "らたい", + "らっか", + "られつ", + "りえき", + "りかい", + "りきさく", + "りきせつ", + "りくぐん", + "りくつ", + "りけん", + "りこう", + "りせい", + "りそう", + "りそく", + "りてん", + "りねん", + "りゆう", + "りゅうがく", + "りよう", + "りょうり", + "りょかん", + "りょくちゃ", + "りょこう", + "りりく", + "りれき", + "りろん", + "りんご", + "るいけい", + "るいさい", + "るいじ", + "るいせき", + "るすばん", + "るりがわら", + "れいかん", + "れいぎ", + "れいせい", + "れいぞうこ", + "れいとう", + "れいぼう", + "れきし", + "れきだい", + "れんあい", + "れんけい", + "れんこん", + "れんさい", + "れんしゅう", + "れんぞく", + "れんらく", + "ろうか", + "ろうご", + "ろうじん", + "ろうそく", + "ろくが", + "ろこつ", + "ろじうら", + "ろしゅつ", + "ろせん", + "ろてん", + "ろめん", + "ろれつ", + "ろんぎ", + "ろんぱ", + "ろんぶん", + "ろんり", + "わかす", + "わかめ", + "わかやま", + "わかれる", + "わしつ", + "わじまし", + "わすれもの", + "わらう", + "われる" +] + +},{}],54:[function(require,module,exports){ +module.exports=[ + "abacate", + "abaixo", + "abalar", + "abater", + "abduzir", + "abelha", + "aberto", + "abismo", + "abotoar", + "abranger", + "abreviar", + "abrigar", + "abrupto", + "absinto", + "absoluto", + "absurdo", + "abutre", + "acabado", + "acalmar", + "acampar", + "acanhar", + "acaso", + "aceitar", + "acelerar", + "acenar", + "acervo", + "acessar", + "acetona", + "achatar", + "acidez", + "acima", + "acionado", + "acirrar", + "aclamar", + "aclive", + "acolhida", + "acomodar", + "acoplar", + "acordar", + "acumular", + "acusador", + "adaptar", + "adega", + "adentro", + "adepto", + "adequar", + "aderente", + "adesivo", + "adeus", + "adiante", + "aditivo", + "adjetivo", + "adjunto", + "admirar", + "adorar", + "adquirir", + "adubo", + "adverso", + "advogado", + "aeronave", + "afastar", + "aferir", + "afetivo", + "afinador", + "afivelar", + "aflito", + "afluente", + "afrontar", + "agachar", + "agarrar", + "agasalho", + "agenciar", + "agilizar", + "agiota", + "agitado", + "agora", + "agradar", + "agreste", + "agrupar", + "aguardar", + "agulha", + "ajoelhar", + "ajudar", + "ajustar", + "alameda", + "alarme", + "alastrar", + "alavanca", + "albergue", + "albino", + "alcatra", + "aldeia", + "alecrim", + "alegria", + "alertar", + "alface", + "alfinete", + "algum", + "alheio", + "aliar", + "alicate", + "alienar", + "alinhar", + "aliviar", + "almofada", + "alocar", + "alpiste", + "alterar", + "altitude", + "alucinar", + "alugar", + "aluno", + "alusivo", + "alvo", + "amaciar", + "amador", + "amarelo", + "amassar", + "ambas", + "ambiente", + "ameixa", + "amenizar", + "amido", + "amistoso", + "amizade", + "amolador", + "amontoar", + "amoroso", + "amostra", + "amparar", + "ampliar", + "ampola", + "anagrama", + "analisar", + "anarquia", + "anatomia", + "andaime", + "anel", + "anexo", + "angular", + "animar", + "anjo", + "anomalia", + "anotado", + "ansioso", + "anterior", + "anuidade", + "anunciar", + "anzol", + "apagador", + "apalpar", + "apanhado", + "apego", + "apelido", + "apertada", + "apesar", + "apetite", + "apito", + "aplauso", + "aplicada", + "apoio", + "apontar", + "aposta", + "aprendiz", + "aprovar", + "aquecer", + "arame", + "aranha", + "arara", + "arcada", + "ardente", + "areia", + "arejar", + "arenito", + "aresta", + "argiloso", + "argola", + "arma", + "arquivo", + "arraial", + "arrebate", + "arriscar", + "arroba", + "arrumar", + "arsenal", + "arterial", + "artigo", + "arvoredo", + "asfaltar", + "asilado", + "aspirar", + "assador", + "assinar", + "assoalho", + "assunto", + "astral", + "atacado", + "atadura", + "atalho", + "atarefar", + "atear", + "atender", + "aterro", + "ateu", + "atingir", + "atirador", + "ativo", + "atoleiro", + "atracar", + "atrevido", + "atriz", + "atual", + "atum", + "auditor", + "aumentar", + "aura", + "aurora", + "autismo", + "autoria", + "autuar", + "avaliar", + "avante", + "avaria", + "avental", + "avesso", + "aviador", + "avisar", + "avulso", + "axila", + "azarar", + "azedo", + "azeite", + "azulejo", + "babar", + "babosa", + "bacalhau", + "bacharel", + "bacia", + "bagagem", + "baiano", + "bailar", + "baioneta", + "bairro", + "baixista", + "bajular", + "baleia", + "baliza", + "balsa", + "banal", + "bandeira", + "banho", + "banir", + "banquete", + "barato", + "barbado", + "baronesa", + "barraca", + "barulho", + "baseado", + "bastante", + "batata", + "batedor", + "batida", + "batom", + "batucar", + "baunilha", + "beber", + "beijo", + "beirada", + "beisebol", + "beldade", + "beleza", + "belga", + "beliscar", + "bendito", + "bengala", + "benzer", + "berimbau", + "berlinda", + "berro", + "besouro", + "bexiga", + "bezerro", + "bico", + "bicudo", + "bienal", + "bifocal", + "bifurcar", + "bigorna", + "bilhete", + "bimestre", + "bimotor", + "biologia", + "biombo", + "biosfera", + "bipolar", + "birrento", + "biscoito", + "bisneto", + "bispo", + "bissexto", + "bitola", + "bizarro", + "blindado", + "bloco", + "bloquear", + "boato", + "bobagem", + "bocado", + "bocejo", + "bochecha", + "boicotar", + "bolada", + "boletim", + "bolha", + "bolo", + "bombeiro", + "bonde", + "boneco", + "bonita", + "borbulha", + "borda", + "boreal", + "borracha", + "bovino", + "boxeador", + "branco", + "brasa", + "braveza", + "breu", + "briga", + "brilho", + "brincar", + "broa", + "brochura", + "bronzear", + "broto", + "bruxo", + "bucha", + "budismo", + "bufar", + "bule", + "buraco", + "busca", + "busto", + "buzina", + "cabana", + "cabelo", + "cabide", + "cabo", + "cabrito", + "cacau", + "cacetada", + "cachorro", + "cacique", + "cadastro", + "cadeado", + "cafezal", + "caiaque", + "caipira", + "caixote", + "cajado", + "caju", + "calafrio", + "calcular", + "caldeira", + "calibrar", + "calmante", + "calota", + "camada", + "cambista", + "camisa", + "camomila", + "campanha", + "camuflar", + "canavial", + "cancelar", + "caneta", + "canguru", + "canhoto", + "canivete", + "canoa", + "cansado", + "cantar", + "canudo", + "capacho", + "capela", + "capinar", + "capotar", + "capricho", + "captador", + "capuz", + "caracol", + "carbono", + "cardeal", + "careca", + "carimbar", + "carneiro", + "carpete", + "carreira", + "cartaz", + "carvalho", + "casaco", + "casca", + "casebre", + "castelo", + "casulo", + "catarata", + "cativar", + "caule", + "causador", + "cautelar", + "cavalo", + "caverna", + "cebola", + "cedilha", + "cegonha", + "celebrar", + "celular", + "cenoura", + "censo", + "centeio", + "cercar", + "cerrado", + "certeiro", + "cerveja", + "cetim", + "cevada", + "chacota", + "chaleira", + "chamado", + "chapada", + "charme", + "chatice", + "chave", + "chefe", + "chegada", + "cheiro", + "cheque", + "chicote", + "chifre", + "chinelo", + "chocalho", + "chover", + "chumbo", + "chutar", + "chuva", + "cicatriz", + "ciclone", + "cidade", + "cidreira", + "ciente", + "cigana", + "cimento", + "cinto", + "cinza", + "ciranda", + "circuito", + "cirurgia", + "citar", + "clareza", + "clero", + "clicar", + "clone", + "clube", + "coado", + "coagir", + "cobaia", + "cobertor", + "cobrar", + "cocada", + "coelho", + "coentro", + "coeso", + "cogumelo", + "coibir", + "coifa", + "coiote", + "colar", + "coleira", + "colher", + "colidir", + "colmeia", + "colono", + "coluna", + "comando", + "combinar", + "comentar", + "comitiva", + "comover", + "complexo", + "comum", + "concha", + "condor", + "conectar", + "confuso", + "congelar", + "conhecer", + "conjugar", + "consumir", + "contrato", + "convite", + "cooperar", + "copeiro", + "copiador", + "copo", + "coquetel", + "coragem", + "cordial", + "corneta", + "coronha", + "corporal", + "correio", + "cortejo", + "coruja", + "corvo", + "cosseno", + "costela", + "cotonete", + "couro", + "couve", + "covil", + "cozinha", + "cratera", + "cravo", + "creche", + "credor", + "creme", + "crer", + "crespo", + "criada", + "criminal", + "crioulo", + "crise", + "criticar", + "crosta", + "crua", + "cruzeiro", + "cubano", + "cueca", + "cuidado", + "cujo", + "culatra", + "culminar", + "culpar", + "cultura", + "cumprir", + "cunhado", + "cupido", + "curativo", + "curral", + "cursar", + "curto", + "cuspir", + "custear", + "cutelo", + "damasco", + "datar", + "debater", + "debitar", + "deboche", + "debulhar", + "decalque", + "decimal", + "declive", + "decote", + "decretar", + "dedal", + "dedicado", + "deduzir", + "defesa", + "defumar", + "degelo", + "degrau", + "degustar", + "deitado", + "deixar", + "delator", + "delegado", + "delinear", + "delonga", + "demanda", + "demitir", + "demolido", + "dentista", + "depenado", + "depilar", + "depois", + "depressa", + "depurar", + "deriva", + "derramar", + "desafio", + "desbotar", + "descanso", + "desenho", + "desfiado", + "desgaste", + "desigual", + "deslize", + "desmamar", + "desova", + "despesa", + "destaque", + "desviar", + "detalhar", + "detentor", + "detonar", + "detrito", + "deusa", + "dever", + "devido", + "devotado", + "dezena", + "diagrama", + "dialeto", + "didata", + "difuso", + "digitar", + "dilatado", + "diluente", + "diminuir", + "dinastia", + "dinheiro", + "diocese", + "direto", + "discreta", + "disfarce", + "disparo", + "disquete", + "dissipar", + "distante", + "ditador", + "diurno", + "diverso", + "divisor", + "divulgar", + "dizer", + "dobrador", + "dolorido", + "domador", + "dominado", + "donativo", + "donzela", + "dormente", + "dorsal", + "dosagem", + "dourado", + "doutor", + "drenagem", + "drible", + "drogaria", + "duelar", + "duende", + "dueto", + "duplo", + "duquesa", + "durante", + "duvidoso", + "eclodir", + "ecoar", + "ecologia", + "edificar", + "edital", + "educado", + "efeito", + "efetivar", + "ejetar", + "elaborar", + "eleger", + "eleitor", + "elenco", + "elevador", + "eliminar", + "elogiar", + "embargo", + "embolado", + "embrulho", + "embutido", + "emenda", + "emergir", + "emissor", + "empatia", + "empenho", + "empinado", + "empolgar", + "emprego", + "empurrar", + "emulador", + "encaixe", + "encenado", + "enchente", + "encontro", + "endeusar", + "endossar", + "enfaixar", + "enfeite", + "enfim", + "engajado", + "engenho", + "englobar", + "engomado", + "engraxar", + "enguia", + "enjoar", + "enlatar", + "enquanto", + "enraizar", + "enrolado", + "enrugar", + "ensaio", + "enseada", + "ensino", + "ensopado", + "entanto", + "enteado", + "entidade", + "entortar", + "entrada", + "entulho", + "envergar", + "enviado", + "envolver", + "enxame", + "enxerto", + "enxofre", + "enxuto", + "epiderme", + "equipar", + "ereto", + "erguido", + "errata", + "erva", + "ervilha", + "esbanjar", + "esbelto", + "escama", + "escola", + "escrita", + "escuta", + "esfinge", + "esfolar", + "esfregar", + "esfumado", + "esgrima", + "esmalte", + "espanto", + "espelho", + "espiga", + "esponja", + "espreita", + "espumar", + "esquerda", + "estaca", + "esteira", + "esticar", + "estofado", + "estrela", + "estudo", + "esvaziar", + "etanol", + "etiqueta", + "euforia", + "europeu", + "evacuar", + "evaporar", + "evasivo", + "eventual", + "evidente", + "evoluir", + "exagero", + "exalar", + "examinar", + "exato", + "exausto", + "excesso", + "excitar", + "exclamar", + "executar", + "exemplo", + "exibir", + "exigente", + "exonerar", + "expandir", + "expelir", + "expirar", + "explanar", + "exposto", + "expresso", + "expulsar", + "externo", + "extinto", + "extrato", + "fabricar", + "fabuloso", + "faceta", + "facial", + "fada", + "fadiga", + "faixa", + "falar", + "falta", + "familiar", + "fandango", + "fanfarra", + "fantoche", + "fardado", + "farelo", + "farinha", + "farofa", + "farpa", + "fartura", + "fatia", + "fator", + "favorita", + "faxina", + "fazenda", + "fechado", + "feijoada", + "feirante", + "felino", + "feminino", + "fenda", + "feno", + "fera", + "feriado", + "ferrugem", + "ferver", + "festejar", + "fetal", + "feudal", + "fiapo", + "fibrose", + "ficar", + "ficheiro", + "figurado", + "fileira", + "filho", + "filme", + "filtrar", + "firmeza", + "fisgada", + "fissura", + "fita", + "fivela", + "fixador", + "fixo", + "flacidez", + "flamingo", + "flanela", + "flechada", + "flora", + "flutuar", + "fluxo", + "focal", + "focinho", + "fofocar", + "fogo", + "foguete", + "foice", + "folgado", + "folheto", + "forjar", + "formiga", + "forno", + "forte", + "fosco", + "fossa", + "fragata", + "fralda", + "frango", + "frasco", + "fraterno", + "freira", + "frente", + "fretar", + "frieza", + "friso", + "fritura", + "fronha", + "frustrar", + "fruteira", + "fugir", + "fulano", + "fuligem", + "fundar", + "fungo", + "funil", + "furador", + "furioso", + "futebol", + "gabarito", + "gabinete", + "gado", + "gaiato", + "gaiola", + "gaivota", + "galega", + "galho", + "galinha", + "galocha", + "ganhar", + "garagem", + "garfo", + "gargalo", + "garimpo", + "garoupa", + "garrafa", + "gasoduto", + "gasto", + "gata", + "gatilho", + "gaveta", + "gazela", + "gelado", + "geleia", + "gelo", + "gemada", + "gemer", + "gemido", + "generoso", + "gengiva", + "genial", + "genoma", + "genro", + "geologia", + "gerador", + "germinar", + "gesso", + "gestor", + "ginasta", + "gincana", + "gingado", + "girafa", + "girino", + "glacial", + "glicose", + "global", + "glorioso", + "goela", + "goiaba", + "golfe", + "golpear", + "gordura", + "gorjeta", + "gorro", + "gostoso", + "goteira", + "governar", + "gracejo", + "gradual", + "grafite", + "gralha", + "grampo", + "granada", + "gratuito", + "graveto", + "graxa", + "grego", + "grelhar", + "greve", + "grilo", + "grisalho", + "gritaria", + "grosso", + "grotesco", + "grudado", + "grunhido", + "gruta", + "guache", + "guarani", + "guaxinim", + "guerrear", + "guiar", + "guincho", + "guisado", + "gula", + "guloso", + "guru", + "habitar", + "harmonia", + "haste", + "haver", + "hectare", + "herdar", + "heresia", + "hesitar", + "hiato", + "hibernar", + "hidratar", + "hiena", + "hino", + "hipismo", + "hipnose", + "hipoteca", + "hoje", + "holofote", + "homem", + "honesto", + "honrado", + "hormonal", + "hospedar", + "humorado", + "iate", + "ideia", + "idoso", + "ignorado", + "igreja", + "iguana", + "ileso", + "ilha", + "iludido", + "iluminar", + "ilustrar", + "imagem", + "imediato", + "imenso", + "imersivo", + "iminente", + "imitador", + "imortal", + "impacto", + "impedir", + "implante", + "impor", + "imprensa", + "impune", + "imunizar", + "inalador", + "inapto", + "inativo", + "incenso", + "inchar", + "incidir", + "incluir", + "incolor", + "indeciso", + "indireto", + "indutor", + "ineficaz", + "inerente", + "infantil", + "infestar", + "infinito", + "inflamar", + "informal", + "infrator", + "ingerir", + "inibido", + "inicial", + "inimigo", + "injetar", + "inocente", + "inodoro", + "inovador", + "inox", + "inquieto", + "inscrito", + "inseto", + "insistir", + "inspetor", + "instalar", + "insulto", + "intacto", + "integral", + "intimar", + "intocado", + "intriga", + "invasor", + "inverno", + "invicto", + "invocar", + "iogurte", + "iraniano", + "ironizar", + "irreal", + "irritado", + "isca", + "isento", + "isolado", + "isqueiro", + "italiano", + "janeiro", + "jangada", + "janta", + "jararaca", + "jardim", + "jarro", + "jasmim", + "jato", + "javali", + "jazida", + "jejum", + "joaninha", + "joelhada", + "jogador", + "joia", + "jornal", + "jorrar", + "jovem", + "juba", + "judeu", + "judoca", + "juiz", + "julgador", + "julho", + "jurado", + "jurista", + "juro", + "justa", + "labareda", + "laboral", + "lacre", + "lactante", + "ladrilho", + "lagarta", + "lagoa", + "laje", + "lamber", + "lamentar", + "laminar", + "lampejo", + "lanche", + "lapidar", + "lapso", + "laranja", + "lareira", + "largura", + "lasanha", + "lastro", + "lateral", + "latido", + "lavanda", + "lavoura", + "lavrador", + "laxante", + "lazer", + "lealdade", + "lebre", + "legado", + "legendar", + "legista", + "leigo", + "leiloar", + "leitura", + "lembrete", + "leme", + "lenhador", + "lentilha", + "leoa", + "lesma", + "leste", + "letivo", + "letreiro", + "levar", + "leveza", + "levitar", + "liberal", + "libido", + "liderar", + "ligar", + "ligeiro", + "limitar", + "limoeiro", + "limpador", + "linda", + "linear", + "linhagem", + "liquidez", + "listagem", + "lisura", + "litoral", + "livro", + "lixa", + "lixeira", + "locador", + "locutor", + "lojista", + "lombo", + "lona", + "longe", + "lontra", + "lorde", + "lotado", + "loteria", + "loucura", + "lousa", + "louvar", + "luar", + "lucidez", + "lucro", + "luneta", + "lustre", + "lutador", + "luva", + "macaco", + "macete", + "machado", + "macio", + "madeira", + "madrinha", + "magnata", + "magreza", + "maior", + "mais", + "malandro", + "malha", + "malote", + "maluco", + "mamilo", + "mamoeiro", + "mamute", + "manada", + "mancha", + "mandato", + "manequim", + "manhoso", + "manivela", + "manobrar", + "mansa", + "manter", + "manusear", + "mapeado", + "maquinar", + "marcador", + "maresia", + "marfim", + "margem", + "marinho", + "marmita", + "maroto", + "marquise", + "marreco", + "martelo", + "marujo", + "mascote", + "masmorra", + "massagem", + "mastigar", + "matagal", + "materno", + "matinal", + "matutar", + "maxilar", + "medalha", + "medida", + "medusa", + "megafone", + "meiga", + "melancia", + "melhor", + "membro", + "memorial", + "menino", + "menos", + "mensagem", + "mental", + "merecer", + "mergulho", + "mesada", + "mesclar", + "mesmo", + "mesquita", + "mestre", + "metade", + "meteoro", + "metragem", + "mexer", + "mexicano", + "micro", + "migalha", + "migrar", + "milagre", + "milenar", + "milhar", + "mimado", + "minerar", + "minhoca", + "ministro", + "minoria", + "miolo", + "mirante", + "mirtilo", + "misturar", + "mocidade", + "moderno", + "modular", + "moeda", + "moer", + "moinho", + "moita", + "moldura", + "moleza", + "molho", + "molinete", + "molusco", + "montanha", + "moqueca", + "morango", + "morcego", + "mordomo", + "morena", + "mosaico", + "mosquete", + "mostarda", + "motel", + "motim", + "moto", + "motriz", + "muda", + "muito", + "mulata", + "mulher", + "multar", + "mundial", + "munido", + "muralha", + "murcho", + "muscular", + "museu", + "musical", + "nacional", + "nadador", + "naja", + "namoro", + "narina", + "narrado", + "nascer", + "nativa", + "natureza", + "navalha", + "navegar", + "navio", + "neblina", + "nebuloso", + "negativa", + "negociar", + "negrito", + "nervoso", + "neta", + "neural", + "nevasca", + "nevoeiro", + "ninar", + "ninho", + "nitidez", + "nivelar", + "nobreza", + "noite", + "noiva", + "nomear", + "nominal", + "nordeste", + "nortear", + "notar", + "noticiar", + "noturno", + "novelo", + "novilho", + "novo", + "nublado", + "nudez", + "numeral", + "nupcial", + "nutrir", + "nuvem", + "obcecado", + "obedecer", + "objetivo", + "obrigado", + "obscuro", + "obstetra", + "obter", + "obturar", + "ocidente", + "ocioso", + "ocorrer", + "oculista", + "ocupado", + "ofegante", + "ofensiva", + "oferenda", + "oficina", + "ofuscado", + "ogiva", + "olaria", + "oleoso", + "olhar", + "oliveira", + "ombro", + "omelete", + "omisso", + "omitir", + "ondulado", + "oneroso", + "ontem", + "opcional", + "operador", + "oponente", + "oportuno", + "oposto", + "orar", + "orbitar", + "ordem", + "ordinal", + "orfanato", + "orgasmo", + "orgulho", + "oriental", + "origem", + "oriundo", + "orla", + "ortodoxo", + "orvalho", + "oscilar", + "ossada", + "osso", + "ostentar", + "otimismo", + "ousadia", + "outono", + "outubro", + "ouvido", + "ovelha", + "ovular", + "oxidar", + "oxigenar", + "pacato", + "paciente", + "pacote", + "pactuar", + "padaria", + "padrinho", + "pagar", + "pagode", + "painel", + "pairar", + "paisagem", + "palavra", + "palestra", + "palheta", + "palito", + "palmada", + "palpitar", + "pancada", + "panela", + "panfleto", + "panqueca", + "pantanal", + "papagaio", + "papelada", + "papiro", + "parafina", + "parcial", + "pardal", + "parede", + "partida", + "pasmo", + "passado", + "pastel", + "patamar", + "patente", + "patinar", + "patrono", + "paulada", + "pausar", + "peculiar", + "pedalar", + "pedestre", + "pediatra", + "pedra", + "pegada", + "peitoral", + "peixe", + "pele", + "pelicano", + "penca", + "pendurar", + "peneira", + "penhasco", + "pensador", + "pente", + "perceber", + "perfeito", + "pergunta", + "perito", + "permitir", + "perna", + "perplexo", + "persiana", + "pertence", + "peruca", + "pescado", + "pesquisa", + "pessoa", + "petiscar", + "piada", + "picado", + "piedade", + "pigmento", + "pilastra", + "pilhado", + "pilotar", + "pimenta", + "pincel", + "pinguim", + "pinha", + "pinote", + "pintar", + "pioneiro", + "pipoca", + "piquete", + "piranha", + "pires", + "pirueta", + "piscar", + "pistola", + "pitanga", + "pivete", + "planta", + "plaqueta", + "platina", + "plebeu", + "plumagem", + "pluvial", + "pneu", + "poda", + "poeira", + "poetisa", + "polegada", + "policiar", + "poluente", + "polvilho", + "pomar", + "pomba", + "ponderar", + "pontaria", + "populoso", + "porta", + "possuir", + "postal", + "pote", + "poupar", + "pouso", + "povoar", + "praia", + "prancha", + "prato", + "praxe", + "prece", + "predador", + "prefeito", + "premiar", + "prensar", + "preparar", + "presilha", + "pretexto", + "prevenir", + "prezar", + "primata", + "princesa", + "prisma", + "privado", + "processo", + "produto", + "profeta", + "proibido", + "projeto", + "prometer", + "propagar", + "prosa", + "protetor", + "provador", + "publicar", + "pudim", + "pular", + "pulmonar", + "pulseira", + "punhal", + "punir", + "pupilo", + "pureza", + "puxador", + "quadra", + "quantia", + "quarto", + "quase", + "quebrar", + "queda", + "queijo", + "quente", + "querido", + "quimono", + "quina", + "quiosque", + "rabanada", + "rabisco", + "rachar", + "racionar", + "radial", + "raiar", + "rainha", + "raio", + "raiva", + "rajada", + "ralado", + "ramal", + "ranger", + "ranhura", + "rapadura", + "rapel", + "rapidez", + "raposa", + "raquete", + "raridade", + "rasante", + "rascunho", + "rasgar", + "raspador", + "rasteira", + "rasurar", + "ratazana", + "ratoeira", + "realeza", + "reanimar", + "reaver", + "rebaixar", + "rebelde", + "rebolar", + "recado", + "recente", + "recheio", + "recibo", + "recordar", + "recrutar", + "recuar", + "rede", + "redimir", + "redonda", + "reduzida", + "reenvio", + "refinar", + "refletir", + "refogar", + "refresco", + "refugiar", + "regalia", + "regime", + "regra", + "reinado", + "reitor", + "rejeitar", + "relativo", + "remador", + "remendo", + "remorso", + "renovado", + "reparo", + "repelir", + "repleto", + "repolho", + "represa", + "repudiar", + "requerer", + "resenha", + "resfriar", + "resgatar", + "residir", + "resolver", + "respeito", + "ressaca", + "restante", + "resumir", + "retalho", + "reter", + "retirar", + "retomada", + "retratar", + "revelar", + "revisor", + "revolta", + "riacho", + "rica", + "rigidez", + "rigoroso", + "rimar", + "ringue", + "risada", + "risco", + "risonho", + "robalo", + "rochedo", + "rodada", + "rodeio", + "rodovia", + "roedor", + "roleta", + "romano", + "roncar", + "rosado", + "roseira", + "rosto", + "rota", + "roteiro", + "rotina", + "rotular", + "rouco", + "roupa", + "roxo", + "rubro", + "rugido", + "rugoso", + "ruivo", + "rumo", + "rupestre", + "russo", + "sabor", + "saciar", + "sacola", + "sacudir", + "sadio", + "safira", + "saga", + "sagrada", + "saibro", + "salada", + "saleiro", + "salgado", + "saliva", + "salpicar", + "salsicha", + "saltar", + "salvador", + "sambar", + "samurai", + "sanar", + "sanfona", + "sangue", + "sanidade", + "sapato", + "sarda", + "sargento", + "sarjeta", + "saturar", + "saudade", + "saxofone", + "sazonal", + "secar", + "secular", + "seda", + "sedento", + "sediado", + "sedoso", + "sedutor", + "segmento", + "segredo", + "segundo", + "seiva", + "seleto", + "selvagem", + "semanal", + "semente", + "senador", + "senhor", + "sensual", + "sentado", + "separado", + "sereia", + "seringa", + "serra", + "servo", + "setembro", + "setor", + "sigilo", + "silhueta", + "silicone", + "simetria", + "simpatia", + "simular", + "sinal", + "sincero", + "singular", + "sinopse", + "sintonia", + "sirene", + "siri", + "situado", + "soberano", + "sobra", + "socorro", + "sogro", + "soja", + "solda", + "soletrar", + "solteiro", + "sombrio", + "sonata", + "sondar", + "sonegar", + "sonhador", + "sono", + "soprano", + "soquete", + "sorrir", + "sorteio", + "sossego", + "sotaque", + "soterrar", + "sovado", + "sozinho", + "suavizar", + "subida", + "submerso", + "subsolo", + "subtrair", + "sucata", + "sucesso", + "suco", + "sudeste", + "sufixo", + "sugador", + "sugerir", + "sujeito", + "sulfato", + "sumir", + "suor", + "superior", + "suplicar", + "suposto", + "suprimir", + "surdina", + "surfista", + "surpresa", + "surreal", + "surtir", + "suspiro", + "sustento", + "tabela", + "tablete", + "tabuada", + "tacho", + "tagarela", + "talher", + "talo", + "talvez", + "tamanho", + "tamborim", + "tampa", + "tangente", + "tanto", + "tapar", + "tapioca", + "tardio", + "tarefa", + "tarja", + "tarraxa", + "tatuagem", + "taurino", + "taxativo", + "taxista", + "teatral", + "tecer", + "tecido", + "teclado", + "tedioso", + "teia", + "teimar", + "telefone", + "telhado", + "tempero", + "tenente", + "tensor", + "tentar", + "termal", + "terno", + "terreno", + "tese", + "tesoura", + "testado", + "teto", + "textura", + "texugo", + "tiara", + "tigela", + "tijolo", + "timbrar", + "timidez", + "tingido", + "tinteiro", + "tiragem", + "titular", + "toalha", + "tocha", + "tolerar", + "tolice", + "tomada", + "tomilho", + "tonel", + "tontura", + "topete", + "tora", + "torcido", + "torneio", + "torque", + "torrada", + "torto", + "tostar", + "touca", + "toupeira", + "toxina", + "trabalho", + "tracejar", + "tradutor", + "trafegar", + "trajeto", + "trama", + "trancar", + "trapo", + "traseiro", + "tratador", + "travar", + "treino", + "tremer", + "trepidar", + "trevo", + "triagem", + "tribo", + "triciclo", + "tridente", + "trilogia", + "trindade", + "triplo", + "triturar", + "triunfal", + "trocar", + "trombeta", + "trova", + "trunfo", + "truque", + "tubular", + "tucano", + "tudo", + "tulipa", + "tupi", + "turbo", + "turma", + "turquesa", + "tutelar", + "tutorial", + "uivar", + "umbigo", + "unha", + "unidade", + "uniforme", + "urologia", + "urso", + "urtiga", + "urubu", + "usado", + "usina", + "usufruir", + "vacina", + "vadiar", + "vagaroso", + "vaidoso", + "vala", + "valente", + "validade", + "valores", + "vantagem", + "vaqueiro", + "varanda", + "vareta", + "varrer", + "vascular", + "vasilha", + "vassoura", + "vazar", + "vazio", + "veado", + "vedar", + "vegetar", + "veicular", + "veleiro", + "velhice", + "veludo", + "vencedor", + "vendaval", + "venerar", + "ventre", + "verbal", + "verdade", + "vereador", + "vergonha", + "vermelho", + "verniz", + "versar", + "vertente", + "vespa", + "vestido", + "vetorial", + "viaduto", + "viagem", + "viajar", + "viatura", + "vibrador", + "videira", + "vidraria", + "viela", + "viga", + "vigente", + "vigiar", + "vigorar", + "vilarejo", + "vinco", + "vinheta", + "vinil", + "violeta", + "virada", + "virtude", + "visitar", + "visto", + "vitral", + "viveiro", + "vizinho", + "voador", + "voar", + "vogal", + "volante", + "voleibol", + "voltagem", + "volumoso", + "vontade", + "vulto", + "vuvuzela", + "xadrez", + "xarope", + "xeque", + "xeretar", + "xerife", + "xingar", + "zangado", + "zarpar", + "zebu", + "zelador", + "zombar", + "zoologia", + "zumbido" +] + +},{}]},{},[50])(50) +}); diff --git a/src/index.js b/src/index.js index d5389d1..7230328 100644 --- a/src/index.js +++ b/src/index.js @@ -1,19 +1,22 @@ -import { TransactionBuilder } from './js/transactionBuilder'; -import { TransactionBatcher } from './js/transactionBatcher'; -import { Network } from './js/network'; -import { Encoder } from './js/encoder'; -import { Keystore } from './js/keystore'; -import { LamdenMasterNode_API as Masternode_API } from './js/masternode-api'; -import * as wallet from './js/wallet'; -import * as utils from './js/helpers'; +import { TransactionBuilder } from "./js/transactionBuilder"; +import { TransactionBatcher } from "./js/transactionBatcher"; +import { Network } from "./js/network"; +import { Encoder } from "./js/encoder"; +import { Keystore } from "./js/keystore"; +import { LamdenMasterNode_API as Masternode_API } from "./js/masternode-api"; +import * as wallet from "./js/wallet"; +import * as utils from "./js/helpers"; +import { Buffer } from "buffer"; + +globalThis.Buffer = Buffer; export default { - TransactionBuilder, - TransactionBatcher, - Masternode_API, - Network, - wallet, - Keystore, - Encoder, - utils -}; \ No newline at end of file + TransactionBuilder, + TransactionBatcher, + Masternode_API, + Network, + wallet, + Keystore, + Encoder, + utils, +}; diff --git a/src/js/encoder.js b/src/js/encoder.js index 442c24d..8939d95 100644 --- a/src/js/encoder.js +++ b/src/js/encoder.js @@ -1,184 +1,186 @@ -const BigNumber = require('bignumber.js'); -BigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e+9 }) -BigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }) // equivalent - -function Encoder (type, value) { - const throwError = (val) => { - throw new Error(`Error encoding ${val} to ${type}`) - } - const countDecimals = (n) => { - if(Math.floor(n) === n) return 0; - try{ - return n.toString().split(".")[1].length - }catch (e){ - return 0 - } - } - const isString = (val) => typeof val === 'string' || val instanceof String; - const isArray = (val) => val && typeof val === 'object' && val.constructor === Array; - const isObject = (val) => val && typeof val === 'object' && val.constructor === Object; - const isDate = (val) => val instanceof Date; - const isBoolean = (val) => typeof val === 'boolean'; - - const isNumber = (val) => { - if (isArray(val)) return false - return !isNaN(encodeBigNumber(val).toNumber()) - } - - const isInteger = (val) => { - if (!isNumber(val)) return false - if (countDecimals(val) === 0) return true - return false - } - const encodeInt = (val) => { - if (!isNumber(val)) throwError(val) - else return parseInt(val) - } - const isFloat = (val) => { - if (!isNumber(val)) return false - if (countDecimals(val) === 0) return false - return true - } - const encodeFloat = (val) => { - if(!isNumber(val)) throwError(val) - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val) - - return {"__fixed__": val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, '$1$2')} - } - const encodeNumber = (val) => { - if(!isNumber(val)) throwError(val) - if (isFloat(val)) { - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val) - return {"__fixed__": val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, '$1$2')} - } - if (isInteger(val)) return parseInt(val) - } - const encodeBigNumber = (val) => { - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val) - return val - } - - const encodeBool = (val) => { - if (isBoolean(val)) return val - if (val === 'true' || val === 1) return true - if (val === 'false' || val === 0) return false - throwError(val) - } - const encodeStr = (val) => { - if (isString(val)) return val - if (isDate(val)) return val.toISOString() - return JSON.stringify(val) - } - const encodeDateTime = (val) => { - val = !isDate(val) ? new Date(val) : val - if (!isDate(val)) throwError(val) - return {'__time__': [ - val.getUTCFullYear(), - val.getUTCMonth(), - val.getUTCDate(), - val.getUTCHours(), - val.getUTCMinutes(), - val.getUTCSeconds(), - val.getUTCMilliseconds() - ]} - } - const encodeTimeDelta = (val) => { - const time = isDate(val) ? val.getTime() : new Date(val).getTime() - const days = parseInt(time / 1000 / 60 / 60 / 24) - const seconds = (time - (days * 24 * 60 * 60 * 1000)) / 1000 - return {'__delta__':[days, seconds]} - } - - const encodeList = (val) => { - if (isArray(val)) return parseObject(val) - try{ - val = JSON.parse(val) - }catch(e){ - throwError(val) - } - if (isArray(val)) return parseObject(val) - throwError(val) - } - - const encodeDict = (val) => { - if (isObject(val)) return parseObject(val) - try{ - val = JSON.parse(val) - }catch(e){ - throwError(val) - } - if (isObject(val)) return parseObject(val) - throwError(val) - } - - const encodeObject = (val) => { - try { - return encodeList(val) - }catch(e){ - return encodeDict(val) - } - } - - function parseObject (obj) { - const encode = (k, v) => { - if (k === "datetime" || k === "datetime.datetime" ) return Encoder("datetime.datetime", v) - if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v) - if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v) - return v - } - - const fixDatetime = (k, v) => { - const isDatetimeObject = (val) => { - let datetimeTypes = ['datetime.datetime', 'datetime', 'datetime.timedelta', 'timedelta'] - return Object.keys(val).length === 1 && datetimeTypes.filter(f => f === Object.keys(val)[0]).length > 0 - - } - - if (v.constructor === Array) { - v.map(val => { - if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]] - //if (isFloat(val)) return encodeFloat(val) - return val - }) - } - if (v.constructor === Object) { - if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]] - } - - //if (isFloat(v)) return encodeFloat(v) - - return v - } - - let encodeValues = JSON.stringify(obj, encode) - return JSON.parse(encodeValues, fixDatetime) - } - - const encoder = { - str: encodeStr, - string: encodeStr, - float: encodeFloat, - int: encodeInt, - bool: encodeBool, - boolean: encodeBool, - dict: encodeDict, - list: encodeList, - Any: () => value, - "datetime.timedelta": encodeTimeDelta, - "datetime.datetime": encodeDateTime, - timedelta: encodeTimeDelta, - datetime: encodeDateTime, - number: encodeNumber, - object: encodeObject, - bigNumber: encodeBigNumber, - } - - if (Object.keys(encoder).includes(type)) return encoder[type](value) - else throw new Error(`Error: ${type} is not a valid encoder type.`) +import BigNumber from "bignumber.js"; +BigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 }); +BigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent + +export function Encoder(type, value) { + const throwError = (val) => { + throw new Error(`Error encoding ${val} to ${type}`); + }; + const countDecimals = (n) => { + if (Math.floor(n) === n) return 0; + try { + return n.toString().split(".")[1].length; + } catch (e) { + return 0; + } + }; + const isString = (val) => typeof val === "string" || val instanceof String; + const isArray = (val) => val && typeof val === "object" && val.constructor === Array; + const isObject = (val) => val && typeof val === "object" && val.constructor === Object; + const isDate = (val) => val instanceof Date; + const isBoolean = (val) => typeof val === "boolean"; + + const isNumber = (val) => { + if (isArray(val)) return false; + return !isNaN(encodeBigNumber(val).toNumber()); + }; + + const isInteger = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return true; + return false; + }; + const encodeInt = (val) => { + if (!isNumber(val)) throwError(val); + else return parseInt(val); + }; + const isFloat = (val) => { + if (!isNumber(val)) return false; + if (countDecimals(val) === 0) return false; + return true; + }; + const encodeFloat = (val) => { + if (!isNumber(val)) throwError(val); + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + }; + const encodeNumber = (val) => { + if (!isNumber(val)) throwError(val); + if (isFloat(val)) { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; + } + if (isInteger(val)) return parseInt(val); + }; + const encodeBigNumber = (val) => { + if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); + return val; + }; + + const encodeBool = (val) => { + if (isBoolean(val)) return val; + if (val === "true" || val === 1) return true; + if (val === "false" || val === 0) return false; + throwError(val); + }; + const encodeStr = (val) => { + if (isString(val)) return val; + if (isDate(val)) return val.toISOString(); + return JSON.stringify(val); + }; + const encodeDateTime = (val) => { + val = !isDate(val) ? new Date(val) : val; + if (!isDate(val)) throwError(val); + return { + __time__: [ + val.getUTCFullYear(), + val.getUTCMonth(), + val.getUTCDate(), + val.getUTCHours(), + val.getUTCMinutes(), + val.getUTCSeconds(), + val.getUTCMilliseconds(), + ], + }; + }; + const encodeTimeDelta = (val) => { + const time = isDate(val) ? val.getTime() : new Date(val).getTime(); + const days = parseInt(time / 1000 / 60 / 60 / 24); + const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000; + return { __delta__: [days, seconds] }; + }; + + const encodeList = (val) => { + if (isArray(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isArray(val)) return parseObject(val); + throwError(val); + }; + + const encodeDict = (val) => { + if (isObject(val)) return parseObject(val); + try { + val = JSON.parse(val); + } catch (e) { + throwError(val); + } + if (isObject(val)) return parseObject(val); + throwError(val); + }; + + const encodeObject = (val) => { + try { + return encodeList(val); + } catch (e) { + return encodeDict(val); + } + }; + + function parseObject(obj) { + const encode = (k, v) => { + if (k === "datetime" || k === "datetime.datetime") return Encoder("datetime.datetime", v); + if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v); + if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v); + return v; + }; + + const fixDatetime = (k, v) => { + const isDatetimeObject = (val) => { + let datetimeTypes = ["datetime.datetime", "datetime", "datetime.timedelta", "timedelta"]; + return ( + Object.keys(val).length === 1 && + datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0 + ); + }; + + if (v.constructor === Array) { + v.map((val) => { + if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]]; + //if (isFloat(val)) return encodeFloat(val) + return val; + }); + } + if (v.constructor === Object) { + if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]]; + } + + //if (isFloat(v)) return encodeFloat(v) + + return v; + }; + + let encodeValues = JSON.stringify(obj, encode); + return JSON.parse(encodeValues, fixDatetime); + } + + const encoder = { + str: encodeStr, + string: encodeStr, + float: encodeFloat, + int: encodeInt, + bool: encodeBool, + boolean: encodeBool, + dict: encodeDict, + list: encodeList, + Any: () => value, + "datetime.timedelta": encodeTimeDelta, + "datetime.datetime": encodeDateTime, + timedelta: encodeTimeDelta, + datetime: encodeDateTime, + number: encodeNumber, + object: encodeObject, + bigNumber: encodeBigNumber, + }; + + if (Object.keys(encoder).includes(type)) return encoder[type](value); + else throw new Error(`Error: ${type} is not a valid encoder type.`); } -Encoder.BigNumber = BigNumber +Encoder.BigNumber = BigNumber; -module.exports = { - Encoder -} \ No newline at end of file +export default { Encoder }; diff --git a/src/js/helpers.js b/src/js/helpers.js index 4c1ed9c..54f1c3f 100644 --- a/src/js/helpers.js +++ b/src/js/helpers.js @@ -1,136 +1,140 @@ -const nodeCryptoJs = require("node-cryptojs-aes") +import nodeCryptoJs from "node-cryptojs-aes"; const { CryptoJS, JsonFormatter } = nodeCryptoJs; -const validators = require('types-validate-assert') +import validators from "types-validate-assert"; const { validateTypes, assertTypes } = validators; /** - * Encrypt a Javascript object with a string password - * The object passed must pass JSON.stringify or the method will fail. - * - * @param {string} password A password to encrypt the object with - * @param {Object} obj A javascript object (must be JSON compatible) - * @return {string} Encrypted string + * Encrypt a Javascript object with a string password + * The object passed must pass JSON.stringify or the method will fail. + * + * @param {string} password A password to encrypt the object with + * @param {Object} obj A javascript object (must be JSON compatible) + * @return {string} Encrypted string */ -export function encryptObject ( password, obj ){ - assertTypes.isStringWithValue(password) - assertTypes.isObject(obj) +export function encryptObject(password, obj) { + assertTypes.isStringWithValue(password); + assertTypes.isObject(obj); - const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { format: JsonFormatter }).toString(); - return encrypted; -}; + const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { + format: JsonFormatter, + }).toString(); + return encrypted; +} /** - * Decrypt an Object using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} objString A javascript object as JSON string - * @return {string} Encrypted string -*/ -export function decryptObject ( password, objString ) { - assertTypes.isStringWithValue(password) - assertTypes.isStringWithValue(objString) + * Decrypt an Object using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} objString A javascript object as JSON string + * @return {string} Encrypted string + */ +export function decryptObject(password, objString) { + assertTypes.isStringWithValue(password); + assertTypes.isStringWithValue(objString); - try{ - const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }) - return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); - } catch (e){ - return false; - } -}; + try { + const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }); + return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); + } catch (e) { + return false; + } +} /** - * Encrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} string A string to be password encrypted - * @return {string} Encrypted string -*/ -export function encryptStrHash( password, string ){ - assertTypes.isStringWithValue(password) - assertTypes.isString(string) + * Encrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} string A string to be password encrypted + * @return {string} Encrypted string + */ +export function encryptStrHash(password, string) { + assertTypes.isStringWithValue(password); + assertTypes.isString(string); - const encrypt = CryptoJS.AES.encrypt(string, password).toString(); - return encrypt; -}; + const encrypt = CryptoJS.AES.encrypt(string, password).toString(); + return encrypt; +} /** - * Decrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} encryptedString A string to decrypt - * @return {string} Decrypted string -*/ -export function decryptStrHash ( password, encryptedString ){ - assertTypes.isStringWithValue(password) - assertTypes.isStringWithValue(encryptedString) - - try{ - const decrypted = CryptoJS.AES.decrypt(encryptedString, password); - return CryptoJS.enc.Utf8.stringify(decrypted) === '' ? false : CryptoJS.enc.Utf8.stringify(decrypted); - } catch (e) { - return false; - } -}; + * Decrypt a string using a password string + * + * @param {string} password A password to encrypt the object with + * @param {string} encryptedString A string to decrypt + * @return {string} Decrypted string + */ +export function decryptStrHash(password, encryptedString) { + assertTypes.isStringWithValue(password); + assertTypes.isStringWithValue(encryptedString); + + try { + const decrypted = CryptoJS.AES.decrypt(encryptedString, password); + return CryptoJS.enc.Utf8.stringify(decrypted) === "" + ? false + : CryptoJS.enc.Utf8.stringify(decrypted); + } catch (e) { + return false; + } +} export function buf2hex(buffer) { - return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join(''); + return Array.prototype.map + .call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)) + .join(""); } export function hex2buf(hexString) { - var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); - for (var i = 0; i < bytes.length; i++) - bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); - return bytes; + var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); + for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); + return bytes; } export function str2buf(string) { - var buf = new Buffer.from(string); - return new Uint8Array(buf); + var buf = new Buffer.from(string); + return new Uint8Array(buf); } export function concatUint8Arrays(array1, array2) { - var arr = new Uint8Array(array1.length + array2.length); - arr.set(array1); - arr.set(array2, array1.length); - return arr; + var arr = new Uint8Array(array1.length + array2.length); + arr.set(array1); + arr.set(array2, array1.length); + return arr; } export function ab2str(buf) { - return String.fromCharCode.apply(null, new Uint8Array(buf)); + return String.fromCharCode.apply(null, new Uint8Array(buf)); } export function str2ab(str) { - var buf = new ArrayBuffer(str.length); - var bufView = new Uint8Array(buf); - for (var i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; + var buf = new ArrayBuffer(str.length); + var bufView = new Uint8Array(buf); + for (var i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; } export function str2hex(str) { - var hex = ''; - for (var i = 0; i < str.length; i++) { - hex += '' + str.charCodeAt(i).toString(16); - } - return hex; + var hex = ""; + for (var i = 0; i < str.length; i++) { + hex += "" + str.charCodeAt(i).toString(16); + } + return hex; } export function hex2str(hexx) { - var hex = hexx.toString(); //force conversion - var str = ''; - for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2) - str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); - return str; + var hex = hexx.toString(); //force conversion + var str = ""; + for (var i = 0; i < hex.length && hex.substr(i, 2) !== "00"; i += 2) + str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + return str; } export function randomString(length) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (var i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (var i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; } -export function isStringHex(string = '') { - let hexRegEx = /([0-9]|[a-f])/gim; - return typeof string === 'string' && - (string.match(hexRegEx) || []).length === string.length; +export function isStringHex(string = "") { + let hexRegEx = /([0-9]|[a-f])/gim; + return typeof string === "string" && (string.match(hexRegEx) || []).length === string.length; } -export function isLamdenKey( string ){ - if (validateTypes.isStringHex(string) && string.length === 64) return true; - return false; -}; \ No newline at end of file +export function isLamdenKey(string) { + if (validateTypes.isStringHex(string) && string.length === 64) return true; + return false; +} diff --git a/src/js/masternode-api.js b/src/js/masternode-api.js index c1661b0..bb7919d 100644 --- a/src/js/masternode-api.js +++ b/src/js/masternode-api.js @@ -1,204 +1,211 @@ -import validators from 'types-validate-assert' +import validators from "types-validate-assert"; const { validateTypes } = validators; -const fetch = require('node-fetch').default; -import { Encoder } from './encoder' - -export class LamdenMasterNode_API{ - constructor(networkInfoObj){ - if (!validateTypes.isObjectWithKeys(networkInfoObj)) throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`) - if (!validateTypes.isArrayWithValues(networkInfoObj.hosts)) throw new Error(`HOSTS Required (Type: Array)`) - - this.hosts = this.validateHosts(networkInfoObj.hosts); - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host){ - let protocols = ['https://', 'http://'] - if (protocols.map(protocol => host.includes(protocol)).includes(true)) return host - throw new Error('Host String must include http:// or https://') +import fetch from "node-fetch"; +import { Encoder } from "./encoder"; + +export class LamdenMasterNode_API { + constructor(networkInfoObj) { + if (!validateTypes.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); + + this.hosts = this.validateHosts(networkInfoObj.hosts); + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + + send(method, path, data, overrideURL, callback) { + let parms = ""; + if (Object.keys(data).includes("parms")) { + parms = this.createParms(data.parms); } - validateHosts(hosts){ - return hosts.map(host => this.vaidateProtocol(host.toLowerCase())) - } - - get host() {return this.hosts[Math.floor(Math.random() * this.hosts.length)]} - get url() {return this.host} - send(method, path, data, overrideURL, callback){ - let parms = ''; - if (Object.keys(data).includes('parms')) { - parms = this.createParms(data.parms) - } - - let options = {} - if (method === 'POST'){ - let headers = {'Content-Type': 'application/json'} - options.method = method - options.headers = headers; - options.body = data; - } - - return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) - .then(async (res) => { - if (res.status === 200){ - let json = await res.json() - callback(json, undefined) - return json - }else{ - let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false - callback(undefined, error) - return error - } - }) - .catch(err => { - return callback(undefined, err.toString()) - }) + let options = {}; + if (method === "POST") { + let headers = { "Content-Type": "application/json" }; + options.method = method; + options.headers = headers; + options.body = data; } - createParms(parms){ - if (Object.keys(parms).length === 0) return '' - let parmString = '?' - Object.keys(parms).forEach(key => { - parmString = `${parmString}${key}=${parms[key]}&` - }); - return parmString.slice(0, -1); - } - - async getContractInfo(contractName){ - const returnInfo = (res) => { - try{ - if (res.name) return res - } catch (e){} - return null; + return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) + .then(async (res) => { + if (res.status === 200) { + let json = await res.json(); + callback(json, undefined); + return json; + } else { + let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false; + callback(undefined, error); + return error; } - let path = `/contracts/${contractName}` - return this.send('GET', path, {}, undefined, (res, err) => returnInfo(res)) - .then(res => returnInfo(res)) - } - - async getVariable(contract, variable, key = ''){ - let parms = {}; - if (validateTypes.isStringWithValue(key)) parms.key = key; - - let path = `/contracts/${contract}/${variable}/` - - const returnValue = (res) => { - try{ - if (res.value) return res.value - } catch (e){} - return null; + }) + .catch((err) => { + return callback(undefined, err.toString()); + }); + } + + createParms(parms) { + if (Object.keys(parms).length === 0) return ""; + let parmString = "?"; + Object.keys(parms).forEach((key) => { + parmString = `${parmString}${key}=${parms[key]}&`; + }); + return parmString.slice(0, -1); + } + + async getContractInfo(contractName) { + const returnInfo = (res) => { + try { + if (res.name) return res; + } catch (e) {} + return null; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => returnInfo(res)).then((res) => + returnInfo(res) + ); + } + + async getVariable(contract, variable, key = "") { + let parms = {}; + if (validateTypes.isStringWithValue(key)) parms.key = key; + + let path = `/contracts/${contract}/${variable}/`; + + const returnValue = (res) => { + try { + if (res.value) return res.value; + } catch (e) {} + return null; + }; + return this.send("GET", path, { parms }, undefined, (res, err) => returnValue(res)).then( + (res) => returnValue(res) + ); + } + + async getContractMethods(contract) { + const getMethods = (res) => { + try { + if (res.methods) return res.methods; + } catch (e) {} + return []; + }; + let path = `/contracts/${contract}/methods`; + return this.send("GET", path, {}, undefined, (res, err) => getMethods(res)).then((res) => + getMethods(res) + ); + } + + async getContractVariables(contract) { + const getVariables = (res) => { + try { + if (res.variables) return res; + } catch (e) {} + return {}; + }; + let path = `/contracts/${contract}/variables`; + return this.send("GET", path, {}, undefined, (res, err) => getVariables(res)).then((res) => + getVariables(res) + ); + } + + async pingServer() { + const getStatus = (res) => { + try { + if (res.status) return true; + } catch (e) {} + return false; + }; + let response = await this.send("GET", "/ping", {}, undefined, (res, err) => getStatus(res)); + return getStatus(response); + } + + async getCurrencyBalance(vk) { + let balanceRes = await this.getVariable("currency", "balances", vk); + if (!balanceRes) return Encoder("bigNumber", 0); + if (balanceRes.__fixed__) return Encoder("bigNumber", balanceRes.__fixed__); + return Encoder("bigNumber", balanceRes.toString()); + } + + async contractExists(contractName) { + const exists = (res) => { + try { + if (res.name) return true; + } catch (e) {} + return false; + }; + let path = `/contracts/${contractName}`; + return this.send("GET", path, {}, undefined, (res, err) => exists(res)).then((res) => + exists(res) + ); + } + + async sendTransaction(data, url = undefined, callback) { + return this.send("POST", "/", JSON.stringify(data), url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } + + async getNonce(sender, callback) { + if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.`; + let path = `/nonce/${sender}`; + let url = this.host; + return this.send("GET", path, {}, url, (res, err) => { + if (err) { + if (callback) { + callback(undefined, `Unable to get nonce for ${sender} on network ${url}`); + return; } - return this.send('GET', path, {parms}, undefined, (res, err) => returnValue(res)) - .then(res => returnValue(res)) - } - - async getContractMethods(contract){ - const getMethods = (res) => { - try{ - if (res.methods) return res.methods - } catch (e){} - return []; - } - let path = `/contracts/${contract}/methods` - return this.send('GET', path, {}, undefined, (res, err) => getMethods(res)) - .then(res => getMethods(res)) - } - - async getContractVariables(contract){ - const getVariables = (res) => { - try{ - if (res.variables) return res - } catch (e){} - return {}; - } - let path = `/contracts/${contract}/variables` - return this.send('GET', path, {}, undefined, (res, err) => getVariables(res)) - .then(res => getVariables(res)) - } - - async pingServer(){ - const getStatus = (res) => { - try { - if (res.status) return true; - } catch (e) {} - return false - } - let response = await this.send('GET', '/ping', {}, undefined, (res, err) => getStatus(res)) - return getStatus(response) - - } - - async getCurrencyBalance(vk){ - let balanceRes = await this.getVariable('currency', 'balances', vk); - if (!balanceRes) return Encoder('bigNumber', 0); - if (balanceRes.__fixed__) return Encoder('bigNumber', balanceRes.__fixed__) - return Encoder('bigNumber', balanceRes.toString()); - } - - async contractExists(contractName){ - const exists = (res) => { - try { - if (res.name) return true; - } catch (e) {} - return false - } - let path = `/contracts/${contractName}` - return this.send('GET', path, {}, undefined, (res, err) => exists(res)) - .then(res => exists(res)) - } - - async sendTransaction(data, url = undefined, callback){ - return this.send('POST', '/', JSON.stringify(data), url, (res, err) => { - if (err){ - if (callback) { - callback(undefined, err); - return; - } - else return err - } - if (callback) { - callback(res, undefined); - return - } - return res; - }) - } - - async getNonce(sender, callback){ - if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.` - let path = `/nonce/${sender}` - let url = this.host - return this.send('GET', path, {}, url, (res, err) => { - if (err){ - if (callback) { - callback(undefined, `Unable to get nonce for ${sender} on network ${url}`) - return - } - return `Unable to get nonce for ${sender} on network ${url}` - } - res.masternode = url - if (callback) { - callback(res, undefined) - return - } - else return res; - }) - } - - async checkTransaction(hash, callback){ - const parms = {hash}; - return this.send('GET', '/tx', {parms}, undefined, (res, err) => { - if (err){ - if (callback) { - callback(undefined, err); - return; - } - else return err - } - if (callback) { - callback(res, undefined); - return - } - return res; - }) - } -} \ No newline at end of file + return `Unable to get nonce for ${sender} on network ${url}`; + } + res.masternode = url; + if (callback) { + callback(res, undefined); + return; + } else return res; + }); + } + + checkTransaction(hash, callback) { + const parms = { hash }; + return this.send("GET", "/tx", { parms }, undefined, (res, err) => { + if (err) { + if (callback) { + callback(undefined, err); + return; + } else return err; + } + if (callback) { + callback(res, undefined); + return; + } + return res; + }); + } +} diff --git a/src/js/network.js b/src/js/network.js index e5744af..d8b98f6 100644 --- a/src/js/network.js +++ b/src/js/network.js @@ -1,63 +1,78 @@ -import { EventEmitter } from './eventEmitter' -import validators from 'types-validate-assert' +import { EventEmitter } from "./eventEmitter"; +import validators from "types-validate-assert"; const { validateTypes } = validators; -import { LamdenMasterNode_API } from './masternode-api' +import { LamdenMasterNode_API } from "./masternode-api"; export class Network { - // Constructor needs an Object with the following information to build Class. - // - // networkInfo: { - // hosts: list of masternode hostname/ip urls, - // type: "testnet", "mainnet" or "custom" - // }, - constructor(networkInfoObj){ - //Reject undefined or missing info - if (!validateTypes.isObjectWithKeys(networkInfoObj)) throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`) - if (!validateTypes.isArrayWithValues(networkInfoObj.hosts)) throw new Error(`HOSTS Required (Type: Array)`) + // Constructor needs an Object with the following information to build Class. + // + // networkInfo: { + // hosts: list of masternode hostname/ip urls, + // type: "testnet", "mainnet" or "custom" + // }, + constructor(networkInfoObj) { + //Reject undefined or missing info + if (!validateTypes.isObjectWithKeys(networkInfoObj)) + throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`); + if (!validateTypes.isArrayWithValues(networkInfoObj.hosts)) + throw new Error(`HOSTS Required (Type: Array)`); - this.type = validateTypes.isStringWithValue(networkInfoObj.type) ? networkInfoObj.type.toLowerCase() : "custom"; - this.events = new EventEmitter() - this.hosts = this.validateHosts(networkInfoObj.hosts); - this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol) ? networkInfoObj.currencySymbol : 'TAU' - this.name = validateTypes.isStringWithValue(networkInfoObj.name) ? networkInfoObj.name : 'lamden network'; - this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; - this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer) ? networkInfoObj.blockExplorer : undefined; - - this.online = false; - try{ - this.API = new LamdenMasterNode_API(networkInfoObj) - } catch (e) { - throw new Error(e) - } - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host){ - let protocols = ['https://', 'http://'] - if (protocols.map(protocol => host.includes(protocol)).includes(true)) return host - throw new Error('Host String must include http:// or https://') - } - validateHosts(hosts){ - return hosts.map(host => this.vaidateProtocol(host.toLowerCase())) - } - //Check if the network is online - //Emits boolean as 'online' event - //Also returns status as well as passes status to a callback - async ping(callback = undefined){ - this.online = await this.API.pingServer() - this.events.emit('online', this.online); - if (validateTypes.isFunction(callback)) callback(this.online) - return this.online - } - get host() {return this.hosts[Math.floor(Math.random() * this.hosts.length)]} - get url() {return this.host} - getNetworkInfo(){ - return { - name: this.name, - lamden: this.lamden, - type: this.type, - hosts: this.hosts, - url: this.url, - online: this.online, - } + this.type = validateTypes.isStringWithValue(networkInfoObj.type) + ? networkInfoObj.type.toLowerCase() + : "custom"; + this.events = new EventEmitter(); + this.hosts = this.validateHosts(networkInfoObj.hosts); + this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol) + ? networkInfoObj.currencySymbol + : "TAU"; + this.name = validateTypes.isStringWithValue(networkInfoObj.name) + ? networkInfoObj.name + : "lamden network"; + this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; + this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer) + ? networkInfoObj.blockExplorer + : undefined; + + this.online = false; + try { + this.API = new LamdenMasterNode_API(networkInfoObj); + } catch (e) { + throw new Error(e); } -} \ No newline at end of file + } + //This will throw an error if the protocol wasn't included in the host string + vaidateProtocol(host) { + let protocols = ["https://", "http://"]; + if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; + throw new Error("Host String must include http:// or https://"); + } + validateHosts(hosts) { + return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); + } + //Check if the network is online + //Emits boolean as 'online' event + //Also returns status as well as passes status to a callback + async ping(callback = undefined) { + this.online = await this.API.pingServer(); + this.events.emit("online", this.online); + if (validateTypes.isFunction(callback)) callback(this.online); + return this.online; + } + get host() { + return this.hosts[Math.floor(Math.random() * this.hosts.length)]; + } + get url() { + return this.host; + } + async getNetworkInfo() { + await this.ping(); + return { + name: this.name, + lamden: this.lamden, + type: this.type, + hosts: this.hosts, + url: this.url, + online: this.online, + }; + } +} diff --git a/src/js/transactionBuilder.js b/src/js/transactionBuilder.js index 9154761..375b7a1 100644 --- a/src/js/transactionBuilder.js +++ b/src/js/transactionBuilder.js @@ -1,338 +1,369 @@ -import validators from 'types-validate-assert' +import validators from "types-validate-assert"; const { validateTypes } = validators; -import * as wallet from './wallet' -import { Network } from './network' +import * as wallet from "./wallet"; +import { Network } from "./network"; export class TransactionBuilder extends Network { - // Constructor needs an Object with the following information to build Class. - // - // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" - // host: masternode webserver hostname/ip, - // type: "testnet", "mainnet" or "mockchain" - // } - // arg[1] (txInfo): { - // uid: [Optional] unique ID for tracking purposes, - // senderVk: public key of the transaction sender, - // contractName: name of lamden smart contract, - // methodName: name of method to call in contractName, - // kwargs: key/values of args to pass to methodName - // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" - // kwargs.amount = 1000 - // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. - // nonce: [Optional] send() will attempt to retrieve this info automatically - // processor [Optional] send() will attempt to retrieve this info automatically - // } - // arg[2] (txData): [Optional] state hydrating data - constructor(networkInfo, txInfo, txData) { - if (validateTypes.isSpecificClass(networkInfo, 'Network')) - super(networkInfo.getNetworkInfo()) - else super(networkInfo) + // Constructor needs an Object with the following information to build Class. + // + // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" + // host: masternode webserver hostname/ip, + // type: "testnet", "mainnet" or "mockchain" + // } + // arg[1] (txInfo): { + // uid: [Optional] unique ID for tracking purposes, + // senderVk: public key of the transaction sender, + // contractName: name of lamden smart contract, + // methodName: name of method to call in contractName, + // kwargs: key/values of args to pass to methodName + // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" + // kwargs.amount = 1000 + // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. + // nonce: [Optional] send() will attempt to retrieve this info automatically + // processor [Optional] send() will attempt to retrieve this info automatically + // } + // arg[2] (txData): [Optional] state hydrating data + constructor(networkInfo, txInfo, txData) { + if (validateTypes.isSpecificClass(networkInfo, "Network")) super(networkInfo.getNetworkInfo()); + else super(networkInfo); - //Validate arguments - if(!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`) - if(!validateTypes.isStringHex(txInfo.senderVk)) throw new Error(`Sender Public Key Required (Type: Hex String)`) - if(!validateTypes.isStringWithValue(txInfo.contractName)) throw new Error(`Contract Name Required (Type: String)`) - if(!validateTypes.isStringWithValue(txInfo.methodName)) throw new Error(`Method Required (Type: String)`) - if(!validateTypes.isInteger(txInfo.stampLimit)) throw new Error(`Stamps Limit Required (Type: Integer)`) + //Validate arguments + if (!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`); + if (!validateTypes.isStringHex(txInfo.senderVk)) + throw new Error(`Sender Public Key Required (Type: Hex String)`); + if (!validateTypes.isStringWithValue(txInfo.contractName)) + throw new Error(`Contract Name Required (Type: String)`); + if (!validateTypes.isStringWithValue(txInfo.methodName)) + throw new Error(`Method Required (Type: String)`); + if (!validateTypes.isInteger(txInfo.stampLimit)) + throw new Error(`Stamps Limit Required (Type: Integer)`); - //Store variables in self for reference - this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; - this.sender = txInfo.senderVk; - this.contract = txInfo.contractName; - this.method = txInfo.methodName; - this.kwargs = {}; - if(validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; - this.stampLimit = txInfo.stampLimit; + //Store variables in self for reference + this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; + this.sender = txInfo.senderVk; + this.contract = txInfo.contractName; + this.method = txInfo.methodName; + this.kwargs = {}; + if (validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; + this.stampLimit = txInfo.stampLimit; - //validate and set nonce and processor if user provided them - if (typeof txInfo.nonce !== 'undefined'){ - if(!validateTypes.isInteger(txInfo.nonce)) throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`) - this.nonce = txInfo.nonce; - } - if (typeof txInfo.processor !== 'undefined'){ - if(!validateTypes.isStringWithValue(txInfo.processor)) throw new Error(`arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`) - this.processor = txInfo.processor; - } - - this.signature; - this.transactionSigned = false; - - //Transaction result information - this.nonceResult = {}; - this.txSendResult = {errors:[]}; - this.txBlockResult = {}; - this.txHash; - this.txCheckResult = {}; - this.txCheckAttempts = 0; - this.txCheckLimit = 10; - - //Hydrate other items if passed - if (txData){ - if (txData.uid) this.uid = txData.uid - if (validateTypes.isObjectWithKeys(txData.txSendResult)) this.txSendResult = txData.txSendResult; - if (validateTypes.isObjectWithKeys(txData.nonceResult)){ - this.nonceResult = txData.nonceResult; - if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; - if (validateTypes.isStringWithValue(this.nonceResult.processor)) this.processor = this.nonceResult.processor; - } - if (validateTypes.isObjectWithKeys(txData.txSendResult)){ - this.txSendResult = txData.txSendResult; - if (this.txSendResult.hash) this.txHash = this.txSendResult.hash - } - if (validateTypes.isObjectWithKeys(txData.txBlockResult)) this.txBlockResult = txData.txBlockResult; - if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; - } - //Create Capnp messages and transactionMessages - this.makePayload(); - } - makePayload(){ - this.payload = { - contract: this.contract, - function: this.method, - kwargs: this.kwargs, - nonce: this.nonce, - processor: this.processor, - sender: this.sender, - stamps_supplied: this.stampLimit - } - this.sortedPayload = this.sortObject(this.payload) - } - makeTransaction(){ - this.tx = { - metadata: { - signature: this.signature, - timestamp: parseInt(+new Date / 1000), - }, - payload: this.sortedPayload.orderedObj - } + //validate and set nonce and processor if user provided them + if (typeof txInfo.nonce !== "undefined") { + if (!validateTypes.isInteger(txInfo.nonce)) + throw new Error( + `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given` + ); + this.nonce = txInfo.nonce; } - verifySignature(){ - //Verify the signature is correct - if (!this.transactionSigned) throw new Error('Transaction has not be been signed. Use the sign() method first.') - const stringBuffer = Buffer.from(this.sortedPayload.json) - const stringArray = new Uint8Array(stringBuffer) - return wallet.verify(this.sender, stringArray, this.signature) + if (typeof txInfo.processor !== "undefined") { + if (!validateTypes.isStringWithValue(txInfo.processor)) + throw new Error( + `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given` + ); + this.processor = txInfo.processor; } - sign(sk = undefined, userWallet = undefined){ - const stringBuffer = Buffer.from(this.sortedPayload.json) - const stringArray = new Uint8Array(stringBuffer) - if (userWallet) this.signature = userWallet.sign(stringArray) - else this.signature = wallet.sign(sk, stringArray) - this.transactionSigned = true; + + this.signature; + this.transactionSigned = false; + + //Transaction result information + this.nonceResult = {}; + this.txSendResult = { errors: [] }; + this.txBlockResult = {}; + this.txHash; + this.txCheckResult = {}; + this.txCheckAttempts = 0; + this.txCheckLimit = 1; + + //Hydrate other items if passed + if (txData) { + if (txData.uid) this.uid = txData.uid; + if (validateTypes.isObjectWithKeys(txData.txSendResult)) + this.txSendResult = txData.txSendResult; + if (validateTypes.isObjectWithKeys(txData.nonceResult)) { + this.nonceResult = txData.nonceResult; + if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; + if (validateTypes.isStringWithValue(this.nonceResult.processor)) + this.processor = this.nonceResult.processor; + } + if (validateTypes.isObjectWithKeys(txData.txSendResult)) { + this.txSendResult = txData.txSendResult; + if (this.txSendResult.hash) this.txHash = this.txSendResult.hash; + } + if (validateTypes.isObjectWithKeys(txData.txBlockResult)) + this.txBlockResult = txData.txBlockResult; + if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; } - sortObject(object){ - const processObj = (obj) => { - const getType = (value) => { - return Object.prototype.toString.call(value) - } - const isArray = (value) => { - if(getType(value) === "[object Array]") return true; - return false; - } - const isObject = (value) => { - if(getType(value) === "[object Object]") return true; - return false; - } - - const sortObjKeys = (unsorted) => { - const sorted = {}; - Object.keys(unsorted).sort().forEach(key => sorted[key] = unsorted[key]); - return sorted - } - - const formatKeys = (unformatted) => { - Object.keys(unformatted).forEach(key => { - if (isArray(unformatted[key])) unformatted[key] = unformatted[key].map(item => { - if (isObject(item)) return formatKeys(item) - return item - }) - if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]) - }) - return sortObjKeys(unformatted) - } - - if (!isObject(obj)) throw new TypeError('Not a valid Object') - try{ - obj = JSON.parse(JSON.stringify(obj)) - } catch (e) { - throw new TypeError('Not a valid JSON Object') - } - return formatKeys(obj) - } - const orderedObj = processObj(object) - return { - orderedObj, - json: JSON.stringify(orderedObj) - } + //Create Capnp messages and transactionMessages + this.makePayload(); + } + makePayload() { + this.payload = { + contract: this.contract, + function: this.method, + kwargs: this.kwargs, + nonce: this.nonce, + processor: this.processor, + sender: this.sender, + stamps_supplied: this.stampLimit, + }; + this.sortedPayload = this.sortObject(this.payload); + } + makeTransaction() { + this.tx = { + metadata: { + signature: this.signature, + timestamp: parseInt(+new Date() / 1000), + }, + payload: this.sortedPayload.orderedObj, + }; + } + verifySignature() { + //Verify the signature is correct + if (!this.transactionSigned) + throw new Error( + "Transaction has not be been signed. Use the sign() method first." + ); + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + return wallet.verify(this.sender, stringArray, this.signature); + } + sign(sk = undefined, userWallet = undefined) { + const stringBuffer = Buffer.from(this.sortedPayload.json); + const stringArray = new Uint8Array(stringBuffer); + if (userWallet) this.signature = userWallet.sign(stringArray); + else this.signature = wallet.sign(sk, stringArray); + this.transactionSigned = true; + } + sortObject(object) { + const processObj = (obj) => { + const getType = (value) => { + return Object.prototype.toString.call(value); + }; + const isArray = (value) => { + if (getType(value) === "[object Array]") return true; + return false; + }; + const isObject = (value) => { + if (getType(value) === "[object Object]") return true; + return false; + }; + + const sortObjKeys = (unsorted) => { + const sorted = {}; + Object.keys(unsorted) + .sort() + .forEach((key) => (sorted[key] = unsorted[key])); + return sorted; + }; + + const formatKeys = (unformatted) => { + Object.keys(unformatted).forEach((key) => { + if (isArray(unformatted[key])) + unformatted[key] = unformatted[key].map((item) => { + if (isObject(item)) return formatKeys(item); + return item; + }); + if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]); + }); + return sortObjKeys(unformatted); + }; + + if (!isObject(obj)) throw new TypeError("Not a valid Object"); + try { + obj = JSON.parse(JSON.stringify(obj)); + } catch (e) { + throw new TypeError("Not a valid JSON Object"); + } + return formatKeys(obj); + }; + const orderedObj = processObj(object); + return { + orderedObj, + json: JSON.stringify(orderedObj), + }; + } + async getNonce(callback = undefined) { + let timestamp = new Date().toUTCString(); + this.nonceResult = await this.API.getNonce(this.sender); + if (typeof this.nonceResult.nonce === "undefined") { + throw new Error(this.nonceResult); } - async getNonce(callback = undefined) { - let timestamp = new Date().toUTCString(); - this.nonceResult = await this.API.getNonce(this.sender) - if (typeof this.nonceResult.nonce === 'undefined'){ - throw new Error(this.nonceResult) - } - this.nonceResult.timestamp = timestamp; - this.nonce = this.nonceResult.nonce; - this.processor = this.nonceResult.processor; - this.nonceMasternode = this.nonceResult.masternode - //Create payload object - this.makePayload() + this.nonceResult.timestamp = timestamp; + this.nonce = this.nonceResult.nonce; + this.processor = this.nonceResult.processor; + this.nonceMasternode = this.nonceResult.masternode; + //Create payload object + this.makePayload(); - if (!callback) return this.nonceResult; - return callback(this.nonceResult) + if (!callback) return this.nonceResult; + return callback(this.nonceResult); + } + async send(sk = undefined, callback = undefined, masternode = undefined) { + //Error if transaction is not signed and no sk provided to the send method to sign it before sending + if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned) { + throw new Error( + `Transation Not Signed: Private key needed or call sign() first` + ); } - async send(sk = undefined, masternode = undefined, callback = undefined) { - //Error if transaction is not signed and no sk provided to the send method to sign it before sending - if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned){ - throw new Error(`Transation Not Signed: Private key needed or call sign() first`); - } - let timestamp = new Date().toUTCString(); + let timestamp = new Date().toUTCString(); - try{ - //If the nonce isn't set attempt to get it - if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor)) await this.getNonce(); - //if the sk is provided then sign the transaction - if (validateTypes.isStringWithValue(sk)) this.sign(sk); - //Serialize transaction - this.makeTransaction(); - //Send transaction to the masternode - let masternodeURL = masternode - if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode - let response = await this.API.sendTransaction(this.tx, masternodeURL) - //Set error if txSendResult doesn't exist - if (!response || validateTypes.isStringWithValue(response)){ - this.txSendResult.errors = [response || "Unknown Transaction Error"] - }else{ - if (response.error) this.txSendResult.errors = [response.error] - else this.txSendResult = response - } - } catch (e){ - this.txSendResult.errors = [e.message] - } - this.txSendResult.timestamp = timestamp - return this.handleMasterNodeResponse(this.txSendResult, callback) + try { + //If the nonce isn't set attempt to get it + if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor)) + await this.getNonce(); + //if the sk is provided then sign the transaction + if (validateTypes.isStringWithValue(sk)) this.sign(sk); + //Serialize transaction + this.makeTransaction(); + //Send transaction to the masternode + let masternodeURL = masternode; + if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode; + let response = await this.API.sendTransaction(this.tx, masternodeURL); + //Set error if txSendResult doesn't exist + if (!response || validateTypes.isStringWithValue(response)) { + this.txSendResult.errors = [response || "Unknown Transaction Error"]; + } else { + if (response.error) this.txSendResult.errors = [response.error]; + else this.txSendResult = response; + } + } catch (e) { + this.txSendResult.errors = [e.message]; } - checkForTransactionResult(callback = undefined){ - return new Promise((resolve) => { - let timerId = setTimeout(async function checkTx() { - this.txCheckAttempts = this.txCheckAttempts + 1; - let res = await this.API.checkTransaction(this.txHash) - let checkAgain = false; - let timestamp = new Date().toUTCString(); - if (typeof res === 'string' || !res) { - if (this.txCheckAttempts < this.txCheckLimit){ - checkAgain = true - }else{ - this.txCheckResult.errors = [ - `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, - res - ] - } - }else{ - if (res.error){ - if (res.error === 'Transaction not found.'){ - if (this.txCheckAttempts < this.txCheckLimit){ - checkAgain = true - }else{ - this.txCheckResult.errors = [res.error, `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`] - } - }else{ - this.txCheckResult.errors = [res.error] - } - }else{ - this.txCheckResult = res; - } - } - if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); - else{ - if (validateTypes.isNumber(this.txCheckResult.status)){ - if (this.txCheckResult.status > 0){ - if (!validateTypes.isArray(this.txCheckResult.errors)) this.txCheckResult.errors = [] - this.txCheckResult.errors.push('This transaction returned a non-zero status code') - } - } - this.txCheckResult.timestamp = timestamp - clearTimeout(timerId); - resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)) + this.txSendResult.timestamp = timestamp; + return this.handleMasterNodeResponse(this.txSendResult, callback); + } + checkForTransactionResult(callback = undefined) { + return new Promise((resolve) => { + let timerId = setTimeout( + async function checkTx() { + this.txCheckAttempts = this.txCheckAttempts + 1; + let res = await this.API.checkTransaction(this.txHash); + let checkAgain = false; + let timestamp = new Date().toUTCString(); + if (typeof res === "string" || !res) { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + res, + ]; + } + } else { + if (res.error) { + if (res.error === "Transaction not found.") { + if (this.txCheckAttempts < this.txCheckLimit) { + checkAgain = true; + } else { + this.txCheckResult.errors = [ + res.error, + `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, + ]; } - }.bind(this), 1000); - }) - } - handleMasterNodeResponse(result, callback = undefined){ - //Check to see if this is a successful transacation submission - if (validateTypes.isStringWithValue(result.hash) && validateTypes.isStringWithValue(result.success)){ - this.txHash = result.hash; - this.setPendingBlockInfo(); - }else{ - this.setBlockResultInfo(result) - this.txBlockResult = result; - } - this.events.emit('response', result, this.resultInfo.subtitle); - if (validateTypes.isFunction(callback)) callback(result) - return result - } - setPendingBlockInfo(){ - this.resultInfo = { - title: 'Transaction Pending', - subtitle: 'Your transaction was submitted and is being processed', - message: `Tx Hash: ${this.txHash}`, - type: 'success', - } - return this.resultInfo; - } - setBlockResultInfo(result){ - let erroredTx = false; - let errorText = `returned an error and ` - let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined - let stamps = (result.stampsUsed || result.stamps_used) || 0; - let message = ''; - if(validateTypes.isArrayWithValues(result.errors)){ - erroredTx = true; - message = `This transaction returned ${result.errors.length} errors.`; - if (result.result){ - if (result.result.includes('AssertionError')) result.errors.push(result.result) + } else { + this.txCheckResult.errors = [res.error]; + } + } else { + this.txCheckResult = res; } - } - if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and ` - - this.resultInfo = { - title: `Transaction ${erroredTx ? 'Failed' : 'Successful'}`, - subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ''}used ${stamps} stamps`, - message, - type: `${erroredTx ? 'error' : 'success'}`, - errorInfo: erroredTx ? result.errors : undefined, - returnResult: result.result || "", - stampsUsed: stamps, - statusCode - }; - return this.resultInfo; - } - getResultInfo(){ - return this.resultInfo; - } - getTxInfo(){ - return { - senderVk: this.sender, - contractName: this.contract, - methodName: this.method, - kwargs: this.kwargs, - stampLimit: this.stampLimit - } + } + if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); + else { + if (validateTypes.isNumber(this.txCheckResult.status)) { + if (this.txCheckResult.status > 0) { + if (!validateTypes.isArray(this.txCheckResult.errors)) + this.txCheckResult.errors = []; + this.txCheckResult.errors.push("This transaction returned a non-zero status code"); + } + } + this.txCheckResult.timestamp = timestamp; + clearTimeout(timerId); + resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)); + } + }.bind(this), + 1000 + ); + }); + } + handleMasterNodeResponse(result, callback = undefined) { + //Check to see if this is a successful transacation submission + if ( + validateTypes.isStringWithValue(result.hash) && + validateTypes.isStringWithValue(result.success) + ) { + this.txHash = result.hash; + this.setPendingBlockInfo(); + } else { + this.setBlockResultInfo(result); + this.txBlockResult = result; } - getAllInfo(){ - return { - uid: this.uid, - txHash: this.txHash, - signed: this.transactionSigned, - tx: this.tx, - signature: this.signature, - networkInfo: this.getNetworkInfo(), - txInfo: this.getTxInfo(), - txSendResult: this.txSendResult, - txBlockResult: this.txBlockResult, - resultInfo: this.getResultInfo(), - nonceResult: this.nonceResult - } + this.events.emit("response", result, this.resultInfo.subtitle); + if (validateTypes.isFunction(callback)) callback(result); + return result; + } + setPendingBlockInfo() { + this.resultInfo = { + title: "Transaction Pending", + subtitle: "Your transaction was submitted and is being processed", + message: `Tx Hash: ${this.txHash}`, + type: "success", + }; + return this.resultInfo; + } + setBlockResultInfo(result) { + let erroredTx = false; + let errorText = `returned an error and `; + let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined; + let stamps = result.stampsUsed || result.stamps_used || 0; + let message = ""; + if (validateTypes.isArrayWithValues(result.errors)) { + erroredTx = true; + message = `This transaction returned ${result.errors.length} errors.`; + if (result.result) { + if (result.result.includes("AssertionError")) result.errors.push(result.result); + } } + if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `; + + this.resultInfo = { + title: `Transaction ${erroredTx ? "Failed" : "Successful"}`, + subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ""}used ${stamps} stamps`, + message, + type: `${erroredTx ? "error" : "success"}`, + errorInfo: erroredTx ? result.errors : undefined, + returnResult: result.result || "", + stampsUsed: stamps, + statusCode, + }; + return this.resultInfo; + } + getResultInfo() { + return this.resultInfo; + } + getTxInfo() { + return { + senderVk: this.sender, + contractName: this.contract, + methodName: this.method, + kwargs: this.kwargs, + stampLimit: this.stampLimit, + }; + } + getAllInfo() { + return { + uid: this.uid, + txHash: this.txHash, + signed: this.transactionSigned, + tx: this.tx, + signature: this.signature, + networkInfo: this.getNetworkInfo(), + txInfo: this.getTxInfo(), + txSendResult: this.txSendResult, + txBlockResult: this.txBlockResult, + resultInfo: this.getResultInfo(), + nonceResult: this.nonceResult, + }; + } } diff --git a/src/js/wallet.js b/src/js/wallet.js index 7a39c00..4d73655 100644 --- a/src/js/wallet.js +++ b/src/js/wallet.js @@ -1,42 +1,41 @@ - -import * as helpers from './helpers'; -const nacl = require('tweetnacl') -const bip39 = require('bip39') -const bip32 = require('ed25519-hd-key') +import * as helpers from "./helpers"; +import nacl from "tweetnacl"; +import * as bip39 from "bip39"; +import bip32 from "ed25519-hd-key"; /** - * Create a wallet object for signing and verifying messages - * - * @param {Object} [args={}] Args Object - * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from - * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users - * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages - * @return {Object} Wallet Object with sign and verify methods + * Create a wallet object for signing and verifying messages + * + * @param {Object} [args={}] Args Object + * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from + * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users + * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages + * @return {Object} Wallet Object with sign and verify methods */ export let create_wallet = (args = {}) => { - let { sk = undefined, keepPrivate = false, seed = null } = args - - let vk; - - if (sk) { - vk = get_vk(sk) - }else{ - let keyPair = new_wallet(seed) - vk = keyPair.vk - sk = keyPair.sk - } - - const wallet = () => { - return { - sign: (msg) => sign(sk, msg), - verify: (msg, sig) => verify(vk, msg, sig), - vk, - sk: !keepPrivate ? sk : undefined - } - } - - return wallet() -} + let { sk = undefined, keepPrivate = false, seed = null } = args; + + let vk; + + if (sk) { + vk = get_vk(sk); + } else { + let keyPair = new_wallet(seed); + vk = keyPair.vk; + sk = keyPair.sk; + } + + const wallet = () => { + return { + sign: (msg) => sign(sk, msg), + verify: (msg, sig) => verify(vk, msg, sig), + vk, + sk: !keepPrivate ? sk : undefined, + }; + }; + + return wallet(); +}; /** * @param Uint8Array(length: 32) seed @@ -48,23 +47,22 @@ export let create_wallet = (args = {}) => { * vk: Verify Key (VK) represents a 32 byte verify key */ export function generate_keys(seed = null) { - var kp = null; - if (seed == null) { - kp = nacl.sign.keyPair(); - } - else { - kp = nacl.sign.keyPair.fromSeed(seed); - } - // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey - // and the vk is the last 32 bytes of the secretKey as well as the publicKey - // { - // 'publicKey': , - // 'secretKey': - // } - return { - sk: new Uint8Array(kp['secretKey'].slice(0, 32)), - vk: new Uint8Array(kp['secretKey'].slice(32, 64)) - }; + var kp = null; + if (seed == null) { + kp = nacl.sign.keyPair(); + } else { + kp = nacl.sign.keyPair.fromSeed(seed); + } + // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey + // and the vk is the last 32 bytes of the secretKey as well as the publicKey + // { + // 'publicKey': , + // 'secretKey': + // } + return { + sk: new Uint8Array(kp["secretKey"].slice(0, 32)), + vk: new Uint8Array(kp["secretKey"].slice(32, 64)), + }; } /** * @param String sk @@ -74,9 +72,9 @@ export function generate_keys(seed = null) { * vk: A 64 character long hex representation of a verify key (public key) */ export function get_vk(sk) { - var kp = format_to_keys(sk); - var kpf = keys_to_format(kp); - return kpf.vk; + var kp = format_to_keys(sk); + var kpf = keys_to_format(kp); + return kpf.vk; } /** * @param String sk @@ -87,9 +85,9 @@ export function get_vk(sk) { * vk: Verify Key (VK) represents a 32 byte verify key */ export function format_to_keys(sk) { - var skf = helpers.hex2buf(sk); - var kp = generate_keys(skf); - return kp; + var skf = helpers.hex2buf(sk); + var kp = generate_keys(skf); + return kp; } /** * @param Object kp @@ -102,10 +100,10 @@ export function format_to_keys(sk) { * vk: Verify Key (VK) represented as a 64 character hex string */ export function keys_to_format(kp) { - return { - vk: helpers.buf2hex(kp.vk), - sk: helpers.buf2hex(kp.sk) - }; + return { + vk: helpers.buf2hex(kp.vk), + sk: helpers.buf2hex(kp.sk), + }; } /** * @param Uint8Array(length: 32) seed @@ -117,8 +115,8 @@ export function keys_to_format(kp) { * vk: Verify Key (VK) represented as a 64 character hex string */ export function new_wallet(seed = null) { - const keys = generate_keys(seed); - return keys_to_format(keys); + const keys = generate_keys(seed); + return keys_to_format(keys); } /** @@ -133,32 +131,32 @@ export function new_wallet(seed = null) { */ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { - let finalMnemonic; + let finalMnemonic; - if (mnemonic !== undefined){ - finalMnemonic = mnemonic; - }else { - finalMnemonic = bip39.generateMnemonic(256) - } + if (mnemonic !== undefined) { + finalMnemonic = mnemonic; + } else { + finalMnemonic = bip39.generateMnemonic(256); + } - const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString('hex'); + const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString("hex"); - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); + const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; + const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); - const privateKey = key.toString('hex'); - const publicKey = bip32.getPublicKey(key, false).toString('hex'); + const privateKey = key.toString("hex"); + const publicKey = bip32.getPublicKey(key, false).toString("hex"); - if (publicKey !== get_vk(privateKey)){ - throw Error('Bip32 public key does not match with Lamden public key!') - } + if (publicKey !== get_vk(privateKey)) { + throw Error("Bip32 public key does not match with Lamden public key!"); + } - return { - sk: privateKey, - vk: publicKey, - derivationIndex: derivationIndex, - mnemonic: finalMnemonic - } + return { + sk: privateKey, + vk: publicKey, + derivationIndex: derivationIndex, + mnemonic: finalMnemonic, + }; } /** @@ -172,7 +170,7 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { * mnemonic: 24 word seed phrase */ export function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); + return generate_keys_bip39(mnemonic, derivationIndex); } /** @@ -185,14 +183,14 @@ export function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { * sig: A 128 character long hex string representing the message's signature */ export function sign(sk, msg) { - var kp = format_to_keys(sk); - // This is required due to the secretKey required to sign a transaction - // in the js implementation of NaCL being the combination of the sk and - // vk for some stupid reason. That being said, we still want the sk and - // vk objects to exist in 32-byte string format (same as cilantro's - // python implementation) when presented to the user. - var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk); - return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk)); + var kp = format_to_keys(sk); + // This is required due to the secretKey required to sign a transaction + // in the js implementation of NaCL being the combination of the sk and + // vk for some stupid reason. That being said, we still want the sk and + // vk objects to exist in 32-byte string format (same as cilantro's + // python implementation) when presented to the user. + var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk); + return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk)); } /** * @param String vk @@ -206,13 +204,11 @@ export function sign(sk, msg) { * result: true if verify checked out, false if not */ export function verify(vk, msg, sig) { - var vkb = helpers.hex2buf(vk); - var sigb = helpers.hex2buf(sig); - try { - return nacl.sign.detached.verify(msg, sigb, vkb); - } - catch (_a) { - return false; - } + var vkb = helpers.hex2buf(vk); + var sigb = helpers.hex2buf(sig); + try { + return nacl.sign.detached.verify(msg, sigb, vkb); + } catch (_a) { + return false; + } } - diff --git a/test/encoder-test.js b/test/encoder-test.js index 94a4f72..80d6739 100644 --- a/test/encoder-test.js +++ b/test/encoder-test.js @@ -1,224 +1,287 @@ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); const { Encoder } = Lamden; -const dateString = "2020-07-28T19:16:35.059Z" -const millisecondsDelta = 475200000 +const dateString = "2020-07-28T19:16:35.059Z"; +const millisecondsDelta = 475200000; -describe('Test Type Encoder', () => { - context('TYPES', () => { - it('Encoder rejects unknown TYPE', () => { - expect(() => Encoder('nope', {})).to.throwError(); - }) - }) +describe("Test Type Encoder", () => { + context("TYPES", () => { + it("Encoder rejects unknown TYPE", () => { + expect(() => Encoder("nope", {})).to.throwError(); + }); + }); - context('BigNumber', () => { - it('Encoder can call BigNumber', () => { - expect(Encoder.BigNumber.sum(1,2).toString()).to.be( '3' ) - }) - }) + context("BigNumber", () => { + it("Encoder can call BigNumber", () => { + expect(Encoder.BigNumber.sum(1, 2).toString()).to.be("3"); + }); + }); - context('Strings', () => { - it('encodes a string from a string', () => { - expect( Encoder('str', 'string') ).to.be( 'string' ) - }) - it('encodes a number as a string', () => { - expect( Encoder('str', 1) ).to.be( '1' ) - }) - it('encodes a boolean as a string', () => { - expect( Encoder('str', true) ).to.be( 'true' ) - }) - it('encodes a Date as a string', () => { - expect( Encoder('str', new Date(dateString)) ).to.be( '2020-07-28T19:16:35.059Z' ) - }) - it('encodes a Dict as a string', () => { - expect( Encoder('str', {}) ).to.be( '{}' ) - }) - it('encodes a List as a string', () => { - expect( Encoder('str', []) ).to.be( '[]' ) - }) - }) + context("Strings", () => { + it("encodes a string from a string", () => { + expect(Encoder("str", "string")).to.be("string"); + }); + it("encodes a number as a string", () => { + expect(Encoder("str", 1)).to.be("1"); + }); + it("encodes a boolean as a string", () => { + expect(Encoder("str", true)).to.be("true"); + }); + it("encodes a Date as a string", () => { + expect(Encoder("str", new Date(dateString))).to.be("2020-07-28T19:16:35.059Z"); + }); + it("encodes a Dict as a string", () => { + expect(Encoder("str", {})).to.be("{}"); + }); + it("encodes a List as a string", () => { + expect(Encoder("str", [])).to.be("[]"); + }); + }); - context('Integers', () => { - it('encodes a integer from an integer', () => { - expect( Encoder('int', 1) ).to.be( 1 ) - }) - it('encodes a integer from a float', () => { - expect( Encoder('int', 1.5 ) ).to.be( 1 ) - }) - it('encodes a integer from a string', () => { - expect( Encoder('int', '1.5' ) ).to.be( 1 ) - }) - it('fails to encode non-integer values', () => { - expect(() => Encoder('int', true)).to.throwError(); - }) - }) - context('Floats', () => { - it('encodes a __fixed__ object from an float', () => { - expect( JSON.stringify(Encoder('float', 1.5)) ).to.be( JSON.stringify({"__fixed__": "1.5"}) ) - }) - it('encodes a __fixed__ object to integer', () => { - expect( JSON.stringify(Encoder('float', 1 )) ).to.be( JSON.stringify({"__fixed__": "1.0"}) ) - }) - it('encodes a __fixed__ object with zeros as decimals to an integer', () => { - expect( JSON.stringify(Encoder('float', 1.00 )) ).to.be( JSON.stringify({"__fixed__": "1.0"}) ) - }) - it('encodes a __fixed__ object from a string', () => { - expect( JSON.stringify(Encoder('float', '1.5' )) ).to.be( JSON.stringify({"__fixed__": "1.5"}) ) - }) - it('encodes a __fixed__ object from a float and loses percision', () => { - expect( JSON.stringify(Encoder('float', 0.9999999999999999999999999999999 )) ).to.be( JSON.stringify({"__fixed__": "1.0"}) ) - }) - it('encodes __fixed__ object float from a string and retains precision', () => { - expect( JSON.stringify(Encoder('float', '0.9999999999999999999999999999999' )) ).to.be( JSON.stringify({"__fixed__": "0.999999999999999999999999999999"}) ) - }) - it('encodes __fixed__ object float from a bigNumber Object and retains precision', () => { - let bn = Encoder('bigNumber', '0.9999999999999999999999999999999') - expect( JSON.stringify(Encoder('float', bn )) ).to.be( JSON.stringify({"__fixed__": "0.999999999999999999999999999999"}) ) - }) - it('fails to encode non-float values', () => { - expect(() => Encoder('float', true)).to.throwError(); - }) - }) - context('Boolean', () => { - it('encodes a boolean from a boolean', () => { - expect( Encoder('bool', true) ).to.be( true ) - expect( Encoder('bool', false) ).to.be( false ) - }) - it('encodes a boolean from a number', () => { - expect( Encoder('bool', 1 ) ).to.be( true ) - expect( Encoder('bool', 0 ) ).to.be( false ) - }) - it('encodes a boolean from a string', () => { - expect( Encoder('bool', 'true' ) ).to.be( true ) - expect( Encoder('bool', 'false' ) ).to.be( false ) - }) - it('fails to encode non-boolean values', () => { - expect(() => Encoder('bool', 'nope')).to.throwError(); - expect(() => Encoder('bool', 2)).to.throwError(); - expect(() => Encoder('bool', {})).to.throwError(); - }) - }) - context('Dict Object', () => { - it('encodes a dict from an Object', () => { - expect( JSON.stringify(Encoder('dict', {})) ).to.be( JSON.stringify({}) ) - }) - it('encodes a dict from a string', () => { - expect( JSON.stringify(Encoder('dict', '{"vk":"833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7"}')) ).to.be( JSON.stringify({vk:"833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7"}) ) - }) - it('encodes datetime and float inside a dict from a string', () => { - expect( JSON.stringify(Encoder('dict', {'datetime':new Date(dateString), 'float': 1.1})) ).to.be( '{"datetime":{"__time__":[2020,6,28,19,16,35,59]},"float":{"__fixed__":"1.1"}}' ) - }) - it('replaces datetime object with value in dict', () => { - expect( JSON.stringify( Encoder('dict', {'DateTime':{'datetime':new Date(dateString)}})) ).to.be('{"DateTime":{"__time__":[2020,6,28,19,16,35,59]}}'); - }) - it('replaces timedelta object with value in dict', () => { - expect( JSON.stringify( Encoder('dict', {'TimeDelta':{'timedelta':1000}})) ).to.be('{"TimeDelta":{"__delta__":[0,1]}}'); - }) - it('fails to encode non-objects', () => { - expect(() => Encoder('dict', undefined)).to.throwError(); - }) - }) + context("Integers", () => { + it("encodes a integer from an integer", () => { + expect(Encoder("int", 1)).to.be(1); + }); + it("encodes a integer from a float", () => { + expect(Encoder("int", 1.5)).to.be(1); + }); + it("encodes a integer from a string", () => { + expect(Encoder("int", "1.5")).to.be(1); + }); + it("fails to encode non-integer values", () => { + expect(() => Encoder("int", true)).to.throwError(); + }); + }); + context("Floats", () => { + it("encodes a __fixed__ object from an float", () => { + expect(JSON.stringify(Encoder("float", 1.5))).to.be(JSON.stringify({ __fixed__: "1.5" })); + }); + it("encodes a __fixed__ object to integer", () => { + expect(JSON.stringify(Encoder("float", 1))).to.be(JSON.stringify({ __fixed__: "1.0" })); + }); + it("encodes a __fixed__ object with zeros as decimals to an integer", () => { + expect(JSON.stringify(Encoder("float", 1.0))).to.be(JSON.stringify({ __fixed__: "1.0" })); + }); + it("encodes a __fixed__ object from a string", () => { + expect(JSON.stringify(Encoder("float", "1.5"))).to.be(JSON.stringify({ __fixed__: "1.5" })); + }); + it("encodes a __fixed__ object from a float and loses percision", () => { + expect(JSON.stringify(Encoder("float", 0.9999999999999999999999999999999))).to.be( + JSON.stringify({ __fixed__: "1.0" }) + ); + }); + it("encodes __fixed__ object float from a string and retains precision", () => { + expect(JSON.stringify(Encoder("float", "0.9999999999999999999999999999999"))).to.be( + JSON.stringify({ __fixed__: "0.999999999999999999999999999999" }) + ); + }); + it("encodes __fixed__ object float from a bigNumber Object and retains precision", () => { + let bn = Encoder("bigNumber", "0.9999999999999999999999999999999"); + expect(JSON.stringify(Encoder("float", bn))).to.be( + JSON.stringify({ __fixed__: "0.999999999999999999999999999999" }) + ); + }); + it("fails to encode non-float values", () => { + expect(() => Encoder("float", true)).to.throwError(); + }); + }); + context("Boolean", () => { + it("encodes a boolean from a boolean", () => { + expect(Encoder("bool", true)).to.be(true); + expect(Encoder("bool", false)).to.be(false); + }); + it("encodes a boolean from a number", () => { + expect(Encoder("bool", 1)).to.be(true); + expect(Encoder("bool", 0)).to.be(false); + }); + it("encodes a boolean from a string", () => { + expect(Encoder("bool", "true")).to.be(true); + expect(Encoder("bool", "false")).to.be(false); + }); + it("fails to encode non-boolean values", () => { + expect(() => Encoder("bool", "nope")).to.throwError(); + expect(() => Encoder("bool", 2)).to.throwError(); + expect(() => Encoder("bool", {})).to.throwError(); + }); + }); + context("Dict Object", () => { + it("encodes a dict from an Object", () => { + expect(JSON.stringify(Encoder("dict", {}))).to.be(JSON.stringify({})); + }); + it("encodes a dict from a string", () => { + expect( + JSON.stringify( + Encoder( + "dict", + '{"vk":"833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7"}' + ) + ) + ).to.be( + JSON.stringify({ vk: "833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7" }) + ); + }); + it("encodes datetime and float inside a dict from a string", () => { + expect(JSON.stringify(Encoder("dict", { datetime: new Date(dateString), float: 1.1 }))).to.be( + '{"datetime":{"__time__":[2020,6,28,19,16,35,59]},"float":{"__fixed__":"1.1"}}' + ); + }); + it("replaces datetime object with value in dict", () => { + expect( + JSON.stringify(Encoder("dict", { DateTime: { datetime: new Date(dateString) } })) + ).to.be('{"DateTime":{"__time__":[2020,6,28,19,16,35,59]}}'); + }); + it("replaces timedelta object with value in dict", () => { + expect(JSON.stringify(Encoder("dict", { TimeDelta: { timedelta: 1000 } }))).to.be( + '{"TimeDelta":{"__delta__":[0,1]}}' + ); + }); + it("fails to encode non-objects", () => { + expect(() => Encoder("dict", undefined)).to.throwError(); + }); + }); - context('List Object', () => { - it('encodes a list from a list', () => { - expect( JSON.stringify(Encoder('list', [])) ).to.be( JSON.stringify([]) ) - }) - it('encodes a list from a string', () => { - expect( JSON.stringify(Encoder('list', '[]')) ).to.be( JSON.stringify([]) ) - }) - it('encodes a mixed list', () => { - expect( JSON.stringify(Encoder('list', ["1.1", 2])) ).to.be( JSON.stringify([{"__fixed__":"1.1"},2]) ) - }) - it('encodes fixed and datetime values in the list', () => { - expect( JSON.stringify(Encoder('list', [ 1.1, {'datetime':new Date(dateString)}] )) ) - .to.be( '[{"__fixed__":"1.1"},{"__time__":[2020,6,28,19,16,35,59]}]' ) - }) - it('encodes a list of all values and encodes accordingly', () => { - let testList = [1, 1.1, "string", {'datetime':new Date(dateString)}, {'timedelta':1000}, {'TimeDelta':{'timedelta':1000}}, true, [1.1]] - expect( JSON.stringify(Encoder('list', testList)) ) - .to.be( '[1,{"__fixed__":"1.1"},"string",{"__time__":[2020,6,28,19,16,35,59]},{"__delta__":[0,1]},{"TimeDelta":{"__delta__":[0,1]}},true,[{"__fixed__":"1.1"}]]' ) - }) - it('fails to encode non-list', () => { - expect(() => Encoder('list', {})).to.throwError(); - }) - }) + context("List Object", () => { + it("encodes a list from a list", () => { + expect(JSON.stringify(Encoder("list", []))).to.be(JSON.stringify([])); + }); + it("encodes a list from a string", () => { + expect(JSON.stringify(Encoder("list", "[]"))).to.be(JSON.stringify([])); + }); + it("encodes a mixed list", () => { + expect(JSON.stringify(Encoder("list", ["1.1", 2]))).to.be( + JSON.stringify([{ __fixed__: "1.1" }, 2]) + ); + }); + it("encodes fixed and datetime values in the list", () => { + expect(JSON.stringify(Encoder("list", [1.1, { datetime: new Date(dateString) }]))).to.be( + '[{"__fixed__":"1.1"},{"__time__":[2020,6,28,19,16,35,59]}]' + ); + }); + it("encodes a list of all values and encodes accordingly", () => { + let testList = [ + 1, + 1.1, + "string", + { datetime: new Date(dateString) }, + { timedelta: 1000 }, + { TimeDelta: { timedelta: 1000 } }, + true, + [1.1], + ]; + expect(JSON.stringify(Encoder("list", testList))).to.be( + '[1,{"__fixed__":"1.1"},"string",{"__time__":[2020,6,28,19,16,35,59]},{"__delta__":[0,1]},{"TimeDelta":{"__delta__":[0,1]}},true,[{"__fixed__":"1.1"}]]' + ); + }); + it("fails to encode non-list", () => { + expect(() => Encoder("list", {})).to.throwError(); + }); + }); - context('Any Object', () => { - it('Any does not do any encoding', () => { - expect( Encoder('Any', 'string') ).to.be( 'string' ) - expect( Encoder('Any', 1) ).to.be( 1 ) - expect( Encoder('Any', 1.23456) ).to.be( 1.23456 ) - expect( Encoder('Any', true) ).to.be( true ) - expect( Encoder('Any', new Date(dateString).toUTCString()) ).to.be( new Date(dateString).toUTCString() ) - expect( JSON.stringify(Encoder('Any', {})) ).to.be( JSON.stringify({}) ) - expect( JSON.stringify(Encoder('Any', [])) ).to.be( JSON.stringify([]) ) - }) - }) + context("Any Object", () => { + it("Any does not do any encoding", () => { + expect(Encoder("Any", "string")).to.be("string"); + expect(Encoder("Any", 1)).to.be(1); + expect(Encoder("Any", 1.23456)).to.be(1.23456); + expect(Encoder("Any", true)).to.be(true); + expect(Encoder("Any", new Date(dateString).toUTCString())).to.be( + new Date(dateString).toUTCString() + ); + expect(JSON.stringify(Encoder("Any", {}))).to.be(JSON.stringify({})); + expect(JSON.stringify(Encoder("Any", []))).to.be(JSON.stringify([])); + }); + }); - context('DateTime', () => { - it('Encodes a Date into a value list', () => { - expect( JSON.stringify(Encoder('datetime.datetime', new Date(dateString))) ).to.be(JSON.stringify({'__time__':[2020, 6, 28, 19, 16, 35, 59]})) - }) - it('Encodes a Date string into a value list', () => { - expect( JSON.stringify(Encoder('datetime.datetime', dateString)) ).to.be(JSON.stringify({'__time__':[2020, 6, 28, 19, 16, 35, 59]})) - }) - it('Encodes milliseconds into a value list', () => { - expect( JSON.stringify(Encoder('datetime.datetime', new Date(dateString).getTime())) ).to.be(JSON.stringify({'__time__':[2020, 6, 28, 19, 16, 35, 59]})) - }) - }) + context("DateTime", () => { + it("Encodes a Date into a value list", () => { + expect(JSON.stringify(Encoder("datetime.datetime", new Date(dateString)))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + it("Encodes a Date string into a value list", () => { + expect(JSON.stringify(Encoder("datetime.datetime", dateString))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + it("Encodes milliseconds into a value list", () => { + expect(JSON.stringify(Encoder("datetime.datetime", new Date(dateString).getTime()))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + }); - context('TimeDelta', () => { - it('Encodes a Date into days seconds', () => { - expect( JSON.stringify(Encoder('datetime.timedelta', new Date(millisecondsDelta))) ).to.be(JSON.stringify({'__delta__':[5, 43200]})) - }) - it('Encodes a millisenconds into days seconds', () => { - expect( JSON.stringify(Encoder('datetime.timedelta', millisecondsDelta)) ).to.be(JSON.stringify({'__delta__':[5, 43200]})) - }) - }) + context("TimeDelta", () => { + it("Encodes a Date into days seconds", () => { + expect(JSON.stringify(Encoder("datetime.timedelta", new Date(millisecondsDelta)))).to.be( + JSON.stringify({ __delta__: [5, 43200] }) + ); + }); + it("Encodes a millisenconds into days seconds", () => { + expect(JSON.stringify(Encoder("datetime.timedelta", millisecondsDelta))).to.be( + JSON.stringify({ __delta__: [5, 43200] }) + ); + }); + }); - context('Stringify()- Parses object and encodes all values', () => { - let testObj = { - 'integer': 1, - 'float': 1.1, - 'list': [1, 1.1, "this is a string", true, [1,2,3,4,5,6,7], [0, 1234567], [1.1], {fixed: 1.1, 'DateTime':{'datetime': new Date(dateString)}, 'TimeDelta': {"datetime.timedelta": millisecondsDelta}}], - 'str': "this is a string", - 'bool': true, - 'datetime.datetime': new Date(dateString), - 'datetime.timedelta': millisecondsDelta - } - testObj.dict = JSON.parse(JSON.stringify(testObj)) - let encodedObj = JSON.stringify(Encoder('object', testObj)) + context("Stringify()- Parses object and encodes all values", () => { + let testObj = { + integer: 1, + float: 1.1, + list: [ + 1, + 1.1, + "this is a string", + true, + [1, 2, 3, 4, 5, 6, 7], + [0, 1234567], + [1.1], + { + fixed: 1.1, + DateTime: { datetime: new Date(dateString) }, + TimeDelta: { "datetime.timedelta": millisecondsDelta }, + }, + ], + str: "this is a string", + bool: true, + "datetime.datetime": new Date(dateString), + "datetime.timedelta": millisecondsDelta, + }; + testObj.dict = JSON.parse(JSON.stringify(testObj)); + let encodedObj = JSON.stringify(Encoder("object", testObj)); - it('encodes an string', () => { - expect( encodedObj.includes('"str":"this is a string"') ).to.be(true) - }) - it('encodes an integer', () => { - expect( encodedObj.includes('"integer":1') ).to.be(true) - }) - it('encodes a float', () => { - expect( encodedObj.includes('"float":{"__fixed__":"1.1"}') ).to.be(true) - }) - it('encodes an bool', () => { - expect( encodedObj.includes('"bool":true') ).to.be(true) - }) - it('encodes a datetime.datetime', () => { - expect( encodedObj.includes('"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]}') ).to.be(true) - }) - it('encodes an datetime.timdelta', () => { - expect( encodedObj.includes('"datetime.timedelta":{"__delta__":[5,43200]}') ).to.be(true) - }) - it('encodes an list', () => { - expect( - encodedObj - .includes('"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}]') ) - .to.be(true) - }) - it('encodes a dict/object', () => { - expect( - encodedObj - .includes('"dict":{"integer":1,"float":{"__fixed__":"1.1"},"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}],"str":"this is a string","bool":true,"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]},"datetime.timedelta":{"__delta__":[5,43200]}}') ) - .to.be(true) - }) - }) -}) \ No newline at end of file + it("encodes an string", () => { + expect(encodedObj.includes('"str":"this is a string"')).to.be(true); + }); + it("encodes an integer", () => { + expect(encodedObj.includes('"integer":1')).to.be(true); + }); + it("encodes a float", () => { + expect(encodedObj.includes('"float":{"__fixed__":"1.1"}')).to.be(true); + }); + it("encodes an bool", () => { + expect(encodedObj.includes('"bool":true')).to.be(true); + }); + it("encodes a datetime.datetime", () => { + expect(encodedObj.includes('"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]}')).to.be( + true + ); + }); + it("encodes an datetime.timdelta", () => { + expect(encodedObj.includes('"datetime.timedelta":{"__delta__":[5,43200]}')).to.be(true); + }); + it("encodes an list", () => { + expect( + encodedObj.includes( + '"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}]' + ) + ).to.be(true); + }); + it("encodes a dict/object", () => { + expect( + encodedObj.includes( + '"dict":{"integer":1,"float":{"__fixed__":"1.1"},"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}],"str":"this is a string","bool":true,"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]},"datetime.timedelta":{"__delta__":[5,43200]}}' + ) + ).to.be(true); + }); + }); +}); diff --git a/test/keystore-test.js b/test/keystore-test.js index 10e4411..6e0ce78 100644 --- a/test/keystore-test.js +++ b/test/keystore-test.js @@ -1,264 +1,249 @@ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); -const validators = require('types-validate-assert') +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); +const validators = require("types-validate-assert"); const { validateTypes, assertTypes } = validators; const { wallet } = Lamden; -const KEYSTORE_PASSWORD = "Testing010203" -const KEYSTORE_HINT = "Testing010203" +const KEYSTORE_PASSWORD = "Testing010203"; +const KEYSTORE_HINT = "Testing010203"; // Overwritted in "createKeystore() - Can create a keystore" let KEYSTORE_DATA = { - data: '{"ct":"s6M4AvQvklttEyGq5ebPj/PzAmjNtV6wlS9X8L0RCoZiaqyOz0Y80eZbdf1WRv7gm4Y9aN4vPEoU4oNVVbXoT7QYhuaxMZ+XUyPihcOOnxxmMMGckWD9QOROSgLovvm5yZxp6C2G47dWp7QLkJvubuPgZ+Ws0uexLnkvxXnCikwdZ20yUAFwGN+u3RhQvmgFagCLeuViFXSOtfkDRXmzX4k/7P6cWet8j5rn5gCBbOYHq8rFOxc34ihdhE/8N+x+3MyxGYk2QmwyfzTE9jDEXZwWRlz4GtMXi29ZccRi0z2XEeB7yBl1LTLvngpQM2QnCcX0AQNjHqlPb30bZtQD5shwzgNiRKRon41tKBAH7uvTjw6N39DVIABUkQCusQ1dWWkuvkt79kPjKI/oRF3RH101kXbejFLfDy0eXNUcV3U=","iv":"14e2a23a66fae00bb201f013e9ae1699","s":"5f4b1877b9d4235e"}', - w: 'U2FsdGVkX19RU+1vmxcY5wDfbkn1Gq8zOsh9Y4ylvSs=' -} + data: '{"ct":"s6M4AvQvklttEyGq5ebPj/PzAmjNtV6wlS9X8L0RCoZiaqyOz0Y80eZbdf1WRv7gm4Y9aN4vPEoU4oNVVbXoT7QYhuaxMZ+XUyPihcOOnxxmMMGckWD9QOROSgLovvm5yZxp6C2G47dWp7QLkJvubuPgZ+Ws0uexLnkvxXnCikwdZ20yUAFwGN+u3RhQvmgFagCLeuViFXSOtfkDRXmzX4k/7P6cWet8j5rn5gCBbOYHq8rFOxc34ihdhE/8N+x+3MyxGYk2QmwyfzTE9jDEXZwWRlz4GtMXi29ZccRi0z2XEeB7yBl1LTLvngpQM2QnCcX0AQNjHqlPb30bZtQD5shwzgNiRKRon41tKBAH7uvTjw6N39DVIABUkQCusQ1dWWkuvkt79kPjKI/oRF3RH101kXbejFLfDy0eXNUcV3U=","iv":"14e2a23a66fae00bb201f013e9ae1699","s":"5f4b1877b9d4235e"}', + w: "U2FsdGVkX19RU+1vmxcY5wDfbkn1Gq8zOsh9Y4ylvSs=", +}; -const keyPairs = [wallet.new_wallet(), wallet.new_wallet()] +const keyPairs = [wallet.new_wallet(), wallet.new_wallet()]; const keyList = [ - { - sk: keyPairs[0].sk, - nickname: "key1", - name: "lamden", - network: "lamden", - symbol: "TAU" - }, - { - sk: keyPairs[1].sk, - nickname: "key2", - name: "lamden", - network: "lamden", - symbol: "TAU" - } + { + sk: keyPairs[0].sk, + nickname: "key1", + name: "lamden", + network: "lamden", + symbol: "TAU", + }, + { + sk: keyPairs[1].sk, + nickname: "key2", + name: "lamden", + network: "lamden", + symbol: "TAU", + }, +]; -] +describe("Test Lamden Keystore Class", () => { + context("keystore construcutor: ", () => { + it("creates an instance with no constructor arguments", () => { + let keystore = new Lamden.Keystore(); + assertTypes.isSpecificClass(keystore, "Keystore"); + expect(keystore.keyList.numOfKeys()).to.be(0); + expect(keystore.keyList.getWallets().length).to.be(0); + }); + it("creates an instance by passing a string to the key property", () => { + let keystore = new Lamden.Keystore({ key: keyList[0] }); + assertTypes.isSpecificClass(keystore, "Keystore"); + expect(keystore.keyList.numOfKeys()).to.be(1); + expect(keystore.keyList.getWallets().length).to.be(1); + }); + it("creates an instance by passing an array to the keys property", () => { + let keystore = new Lamden.Keystore({ keyList }); + assertTypes.isSpecificClass(keystore, "Keystore"); + expect(keystore.keyList.numOfKeys()).to.be(2); + expect(keystore.keyList.getWallets().length).to.be(2); + }); + it("creates an instance by passing a keystoreData object", () => { + let keystore = new Lamden.Keystore({ keystoreData: KEYSTORE_DATA }); + assertTypes.isSpecificClass(keystore, "Keystore"); + assertTypes.isObjectWithKeys(keystore.encryptedData); + }); + it("creates an instance by passing a keystoreData string", () => { + let keystore = new Lamden.Keystore({ keystoreData: JSON.stringify(KEYSTORE_DATA) }); + assertTypes.isSpecificClass(keystore, "Keystore"); + assertTypes.isObjectWithKeys(keystore.encryptedData); + }); + it('NEGATIVE - Errors on "keyArg" not Array', () => { + expect(() => new Lamden.Keystore({ keyList: { key1: "key1" } })).throwException(); + }); + it("NEGATIVE - Errors on if array value is not type string", () => { + expect(() => new Lamden.Keystore({ keyList: [keyList[0], 2] })).throwException((e) => { + expect(e.message).to.be('Expected "2" to be [object Object] and have keys'); + }); + }); + }); + context("Adding Keys to the Keystore", () => { + it('addKey() - Can add a single key to the internal "keyList"', () => { + let keystore = new Lamden.Keystore(); + keystore.addKey(keyList[0]); + expect(keystore.keyList.numOfKeys()).to.be(1); + }); + it("NEGATIVE - addKey() - Errors if value passed is not type string", () => { + let keystore = new Lamden.Keystore(); + expect(() => keystore.addKey(1)).throwException((e) => { + expect(e.message).to.be('Expected "1" to be [object Object] and have keys'); + }); + }); + it('addKeys() - Can add to the internal "keyList" via an array of keys', () => { + let keystore = new Lamden.Keystore(); + keystore.addKeys(keyList); + expect(keystore.keyList.numOfKeys()).to.be(2); + }); + it("addKeys() - Wallets contain metadata", () => { + let keystore = new Lamden.Keystore(); + keystore.addKeys(keyList); + keystore.wallets.forEach((walletInfo, index) => { + expect(walletInfo.name).to.be(keyList[index].name); + expect(walletInfo.nickname).to.be(keyList[index].nickname); + expect(walletInfo.network).to.be(keyList[index].network); + expect(walletInfo.symbol).to.be(keyList[index].symbol); + }); + }); + it("NEGATIVE - addKeys() - Errors if value passed is not type array", () => { + let keystore = new Lamden.Keystore(); + expect(() => keystore.addKeys({ key1: "key1", key2: "key2" })).throwException((e) => { + expect(e.message).to.be("Expected type [object Array] but got [object Object]"); + }); + }); + }); + context("Deleting Keys from the Keystore", () => { + it("deleteKey() - Can delete a key from the keystore", () => { + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(0); + expect(keystore.wallets[0].vk).to.be(keyPairs[1].vk); + }); + it("NEGATIVE - deleteKey() - Errors if argument is not an integer", () => { + let keystore = new Lamden.Keystore({ keyList }); -describe('Test Lamden Keystore Class', () => { - context('keystore construcutor: ', () => { - it('creates an instance with no constructor arguments', () => { - let keystore = new Lamden.Keystore() - assertTypes.isSpecificClass(keystore, "Keystore") - expect( keystore.keyList.numOfKeys() ).to.be( 0 ) - expect( keystore.keyList.getWallets().length ).to.be( 0 ) - }) - it('creates an instance by passing a string to the key property', () => { - let keystore = new Lamden.Keystore({key:keyList[0]}) - assertTypes.isSpecificClass(keystore, "Keystore") - expect( keystore.keyList.numOfKeys() ).to.be( 1 ) - expect( keystore.keyList.getWallets().length ).to.be( 1 ) - }) - it('creates an instance by passing an array to the keys property', () => { - let keystore = new Lamden.Keystore({keyList}) - assertTypes.isSpecificClass(keystore, "Keystore") - expect( keystore.keyList.numOfKeys() ).to.be( 2 ) - expect( keystore.keyList.getWallets().length ).to.be( 2 ) - }) - it('creates an instance by passing a keystoreData object', () => { - let keystore = new Lamden.Keystore({keystoreData: KEYSTORE_DATA}) - assertTypes.isSpecificClass(keystore, "Keystore") - assertTypes.isObjectWithKeys(keystore.encryptedData) - }) - it('creates an instance by passing a keystoreData string', () => { - let keystore = new Lamden.Keystore({keystoreData: JSON.stringify(KEYSTORE_DATA)}) - assertTypes.isSpecificClass(keystore, "Keystore") - assertTypes.isObjectWithKeys(keystore.encryptedData) - }) - it('NEGATIVE - Errors on "keyArg" not Array', () => { - expect(() => new Lamden.Keystore({keyList: {key1: "key1"}})).throwException(); - }) - it('NEGATIVE - Errors on if array value is not type string', () => { - expect(() => new Lamden.Keystore({keyList: [keyList[0], 2]})) - .throwException((e) => { - expect(e.message).to.be('Expected "2" to be [object Object] and have keys'); - }); - }) - }) - context('Adding Keys to the Keystore', () => { - it('addKey() - Can add a single key to the internal "keyList"', () => { - let keystore = new Lamden.Keystore() - keystore.addKey(keyList[0]) - expect( keystore.keyList.numOfKeys() ).to.be( 1 ) - }) - it('NEGATIVE - addKey() - Errors if value passed is not type string', () => { - let keystore = new Lamden.Keystore() - expect(() => keystore.addKey(1)) - .throwException((e) => { - expect(e.message).to.be('Expected "1" to be [object Object] and have keys'); - }); - }) - it('addKeys() - Can add to the internal "keyList" via an array of keys', () => { - let keystore = new Lamden.Keystore() - keystore.addKeys(keyList) - expect( keystore.keyList.numOfKeys() ).to.be( 2 ) - }) - it('addKeys() - Wallets contain metadata', () => { - let keystore = new Lamden.Keystore() - keystore.addKeys(keyList) - keystore.wallets.forEach((walletInfo, index) => { - expect(walletInfo.name ).to.be( keyList[index].name ) - expect(walletInfo.nickname ).to.be( keyList[index].nickname ) - expect(walletInfo.network ).to.be( keyList[index].network ) - expect(walletInfo.symbol ).to.be( keyList[index].symbol ) - }) - - }) - it('NEGATIVE - addKeys() - Errors if value passed is not type array', () => { - let keystore = new Lamden.Keystore() - expect(() => keystore.addKeys({key1: "key1", key2: "key2"})) - .throwException((e) => { - expect(e.message).to.be("Expected type [object Array] but got [object Object]"); - }); - }) - }) - context('Deleting Keys from the Keystore', () => { - it('deleteKey() - Can delete a key from the keystore', () => { - let keystore = new Lamden.Keystore({keyList}) - keystore.deleteKey(0) - expect( keystore.wallets[0].vk ).to.be( keyPairs[1].vk ) - }) - it('NEGATIVE - deleteKey() - Errors if argument is not an integer', () => { - let keystore = new Lamden.Keystore({keyList}) - - expect(() => keystore.deleteKey(0.3)) - .throwException((e) => { - expect(e.message).to.be('Expected "0.3" to be an integer but got non-integer value'); - }); - }) - it('NEGATIVE - deleteKey() - Errors if index is out of range, high', () => { - let keystore = new Lamden.Keystore({keyList}) - expect(() => keystore.deleteKey(2)) - .throwException((e) => { - expect(e.message).to.be("Key index out of range."); - }); - }) - it('NEGATIVE - deleteKey() - Errors if index is out of range, low', () => { - let keystore = new Lamden.Keystore({keyList}) - expect(() => keystore.deleteKey(-1)) - .throwException((e) => { - expect(e.message).to.be("Key index out of range."); - }); - }) - it('NEGATIVE - deleteKey() - Funtion returns no keys in list', () => { - let keystore = new Lamden.Keystore() - keystore.deleteKey(0) - }) - }) - context('Using keystore wallets', () => { - it('keystore.wallets - Deletes keys from the keystore', () => { - let keystore = new Lamden.Keystore({keyList}) - expect( keystore.wallets.length ).to.be( 2 ) - }) - it('getWallet() - Can get a specific wallet', () => { - let keystore = new Lamden.Keystore({keyList}) - let keystoreWallet = keystore.getWallet(keystore.wallets[0].vk) - expect(keystoreWallet).to.have.property('sign') - expect(keystoreWallet).to.have.property('verify') - expect(keystoreWallet).to.have.property('vk') - expect(() => assertTypes.isStringHex(keystoreWallet.sk)).throwException(); - }) - }) - context('Clearing a keystore', () => { - it('clearKeys() - Deletes keys from the keystore', () => { - let keystore = new Lamden.Keystore() - keystore.addKey(keyList[0]) - expect( keystore.keyList.numOfKeys() ).to.be( 1 ) - keystore.clearKeys() - expect( keystore.keyList.numOfKeys() ).to.be( 0 ) - }) - }) - context('Creating a Keystore', () => { - it('createKeystore() - Can create a keystore', () => { - let keystore = new Lamden.Keystore({keyList}) - let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD, KEYSTORE_HINT) - let keystoreObj = JSON.parse(encryptedKeystore) - KEYSTORE_DATA = JSON.parse(encryptedKeystore) - expect(keystoreObj).to.have.property('data') - assertTypes.isStringWithValue(keystoreObj.data) - expect(keystoreObj).to.have.property('w') - assertTypes.isStringWithValue(keystoreObj.w) - }) - it('createKeystore() - Can create a keystore without "hint"', () => { - let keystore = new Lamden.Keystore({keyList}) - let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD) - let keystoreObj = JSON.parse(encryptedKeystore) + expect(() => keystore.deleteKey(0.3)).throwException((e) => { + expect(e.message).to.be('Expected "0.3" to be an integer but got non-integer value'); + }); + }); + it("NEGATIVE - deleteKey() - Errors if index is out of range, high", () => { + let keystore = new Lamden.Keystore({ keyList }); + expect(() => keystore.deleteKey(2)).throwException((e) => { + expect(e.message).to.be("Key index out of range."); + }); + }); + it("NEGATIVE - deleteKey() - Errors if index is out of range, low", () => { + let keystore = new Lamden.Keystore({ keyList }); + expect(() => keystore.deleteKey(-1)).throwException((e) => { + expect(e.message).to.be("Key index out of range."); + }); + }); + it("NEGATIVE - deleteKey() - Funtion returns no keys in list", () => { + let keystore = new Lamden.Keystore(); + keystore.deleteKey(0); + }); + }); + context("Using keystore wallets", () => { + it("keystore.wallets - Deletes keys from the keystore", () => { + let keystore = new Lamden.Keystore({ keyList }); + expect(keystore.wallets.length).to.be(2); + }); + it("getWallet() - Can get a specific wallet", () => { + let keystore = new Lamden.Keystore({ keyList }); + let keystoreWallet = keystore.getWallet(keystore.wallets[0].vk); + expect(keystoreWallet).to.have.property("sign"); + expect(keystoreWallet).to.have.property("verify"); + expect(keystoreWallet).to.have.property("vk"); + expect(() => assertTypes.isStringHex(keystoreWallet.sk)).throwException(); + }); + }); + context("Clearing a keystore", () => { + it("clearKeys() - Deletes keys from the keystore", () => { + let keystore = new Lamden.Keystore(); + keystore.addKey(keyList[0]); + expect(keystore.keyList.numOfKeys()).to.be(1); + keystore.clearKeys(); + expect(keystore.keyList.numOfKeys()).to.be(0); + }); + }); + context("Creating a Keystore", () => { + it("createKeystore() - Can create a keystore", () => { + let keystore = new Lamden.Keystore({ keyList }); + let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD, KEYSTORE_HINT); + let keystoreObj = JSON.parse(encryptedKeystore); + KEYSTORE_DATA = JSON.parse(encryptedKeystore); + expect(keystoreObj).to.have.property("data"); + assertTypes.isStringWithValue(keystoreObj.data); + expect(keystoreObj).to.have.property("w"); + assertTypes.isStringWithValue(keystoreObj.w); + }); + it('createKeystore() - Can create a keystore without "hint"', () => { + let keystore = new Lamden.Keystore({ keyList }); + let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD); + let keystoreObj = JSON.parse(encryptedKeystore); - expect(keystoreObj).to.have.property('data') - assertTypes.isStringWithValue(keystoreObj.data) + expect(keystoreObj).to.have.property("data"); + assertTypes.isStringWithValue(keystoreObj.data); - expect(keystoreObj).to.have.property('w') - assertTypes.isString(keystoreObj.w) + expect(keystoreObj).to.have.property("w"); + assertTypes.isString(keystoreObj.w); - expect(() => assertTypes.isStringWithValue(keystoreObj.w)) - .throwException((e) => { - expect(e.message).to.be('Expected "" to be [object String] and not empty'); - }); - - }) - it('NEGATIVE - createKeystore() - Errors if "password" value passed is not type string', () => { - let keystore = new Lamden.Keystore({keyList}) - expect(() => keystore.createKeystore(12345)) - .throwException((e) => { - expect(e.message).to.be('Expected "12345" to be [object String] and not empty'); - }); - }) - it('NEGATIVE - createKeystore() - Errors if a non-string value for "hint" is provided', () => { - let keystore = new Lamden.Keystore({keyList}) - expect(() => keystore.createKeystore(KEYSTORE_PASSWORD, 12345)) - .throwException((e) => { - expect(e.message).to.be('Expected "12345" to be [object String] and not empty'); - }); - }) - }) + expect(() => assertTypes.isStringWithValue(keystoreObj.w)).throwException((e) => { + expect(e.message).to.be('Expected "" to be [object String] and not empty'); + }); + }); + it('NEGATIVE - createKeystore() - Errors if "password" value passed is not type string', () => { + let keystore = new Lamden.Keystore({ keyList }); + expect(() => keystore.createKeystore(12345)).throwException((e) => { + expect(e.message).to.be('Expected "12345" to be [object String] and not empty'); + }); + }); + it('NEGATIVE - createKeystore() - Errors if a non-string value for "hint" is provided', () => { + let keystore = new Lamden.Keystore({ keyList }); + expect(() => keystore.createKeystore(KEYSTORE_PASSWORD, 12345)).throwException((e) => { + expect(e.message).to.be('Expected "12345" to be [object String] and not empty'); + }); + }); + }); - context('Keystore password hints', () => { - it('getPasswordHint() - Can get the hint from the keystore instance', () => { - let keystore = new Lamden.Keystore({keystoreData: KEYSTORE_DATA}) - let hint = keystore.getPasswordHint() - expect( hint ).to.be( KEYSTORE_HINT ) - }) - it('getPasswordHint() - Can get the hint from a supplied keystore', () => { - let keystore = new Lamden.Keystore() - let hint = keystore.getPasswordHint(KEYSTORE_DATA) - expect( hint ).to.be( KEYSTORE_HINT ) - }) - it('getPasswordHint() - Can get the hint from a supplied string keystore', () => { - let keystore = new Lamden.Keystore() - let hint = keystore.getPasswordHint(JSON.stringify(KEYSTORE_DATA)) - expect( hint ).to.be( KEYSTORE_HINT ) - }) - }) - context('Decrypting a Keystore', () => { - it('decryptKeystore() - Can decrypte a keystore', () => { - let keystore = new Lamden.Keystore({keystoreData: KEYSTORE_DATA}) - keystore.decryptKeystore(KEYSTORE_PASSWORD) - expect( keystore.keyList.numOfKeys() ).to.be( 2 ) - expect( keystore.version ).to.be( "1.0" ) - }) - it('decryptKeystore() - Can decrypte a keystore passed as a string', () => { - let keystore = new Lamden.Keystore({keystoreData: JSON.stringify(KEYSTORE_DATA)}) - keystore.decryptKeystore(KEYSTORE_PASSWORD) - expect( keystore.keyList.numOfKeys() ).to.be( 2 ) - expect( keystore.version ).to.be( "1.0" ) - }) - it('decryptKeystore() - Can decrypt a provided keystore', () => { - let keystore = new Lamden.Keystore() - keystore.decryptKeystore(KEYSTORE_PASSWORD, KEYSTORE_DATA) - expect( keystore.keyList.numOfKeys() ).to.be( 2 ) - expect( keystore.version ).to.be( "1.0" ) - }) - it('NEGATIVE - decryptKeystore() - Reports Incorrect Password', () => { - let keystore = new Lamden.Keystore() - expect(() => keystore.decryptKeystore("Nope", KEYSTORE_DATA)) - .throwException((e) => { - expect(e.message).to.be('Incorrect Keystore Password.'); - }); - }) - it('NEGATIVE - decryptKeystore() - Errors if no keystoreData found', () => { - let keystore = new Lamden.Keystore() - expect(() => keystore.decryptKeystore(KEYSTORE_PASSWORD)) - .throwException((e) => { - expect(e.message).to.be('No keystoreData to decrypt.'); - }); - }) - }) - -}) + context("Keystore password hints", () => { + it("getPasswordHint() - Can get the hint from the keystore instance", () => { + let keystore = new Lamden.Keystore({ keystoreData: KEYSTORE_DATA }); + let hint = keystore.getPasswordHint(); + expect(hint).to.be(KEYSTORE_HINT); + }); + it("getPasswordHint() - Can get the hint from a supplied keystore", () => { + let keystore = new Lamden.Keystore(); + let hint = keystore.getPasswordHint(KEYSTORE_DATA); + expect(hint).to.be(KEYSTORE_HINT); + }); + it("getPasswordHint() - Can get the hint from a supplied string keystore", () => { + let keystore = new Lamden.Keystore(); + let hint = keystore.getPasswordHint(JSON.stringify(KEYSTORE_DATA)); + expect(hint).to.be(KEYSTORE_HINT); + }); + }); + context("Decrypting a Keystore", () => { + it("decryptKeystore() - Can decrypte a keystore", () => { + let keystore = new Lamden.Keystore({ keystoreData: KEYSTORE_DATA }); + keystore.decryptKeystore(KEYSTORE_PASSWORD); + expect(keystore.keyList.numOfKeys()).to.be(2); + expect(keystore.version).to.be("1.0"); + }); + it("decryptKeystore() - Can decrypte a keystore passed as a string", () => { + let keystore = new Lamden.Keystore({ keystoreData: JSON.stringify(KEYSTORE_DATA) }); + keystore.decryptKeystore(KEYSTORE_PASSWORD); + expect(keystore.keyList.numOfKeys()).to.be(2); + expect(keystore.version).to.be("1.0"); + }); + it("decryptKeystore() - Can decrypt a provided keystore", () => { + let keystore = new Lamden.Keystore(); + keystore.decryptKeystore(KEYSTORE_PASSWORD, KEYSTORE_DATA); + expect(keystore.keyList.numOfKeys()).to.be(2); + expect(keystore.version).to.be("1.0"); + }); + it("NEGATIVE - decryptKeystore() - Reports Incorrect Password", () => { + let keystore = new Lamden.Keystore(); + expect(() => keystore.decryptKeystore("Nope", KEYSTORE_DATA)).throwException((e) => { + expect(e.message).to.be("Incorrect Keystore Password."); + }); + }); + it("NEGATIVE - decryptKeystore() - Errors if no keystoreData found", () => { + let keystore = new Lamden.Keystore(); + expect(() => keystore.decryptKeystore(KEYSTORE_PASSWORD)).throwException((e) => { + expect(e.message).to.be("No keystoreData to decrypt."); + }); + }); + }); +}); diff --git a/test/masternode_api-test.js b/test/masternode_api-test.js index 0a9c62d..dfb3750 100644 --- a/test/masternode_api-test.js +++ b/test/masternode_api-test.js @@ -1,207 +1,212 @@ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); const { Masternode_API, wallet } = Lamden; let goodNetwork = { - type: 'testnet', - name: 'Lamden Public Testnet', - hosts: ['https://testnet-master-1.lamden.io:443'] -} -let goodNetwork_api = new Masternode_API(goodNetwork) + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], +}; +let goodNetwork_api = new Masternode_API(goodNetwork); let badNetwork = { - type: 'testnet', - name: 'Bad Network', - hosts: ['http://badnetwork.lamden.io:18080'] -} + type: "testnet", + name: "Bad Network", + hosts: ["http://badnetwork.lamden.io:18080"], +}; -let badNetwork_api = new Masternode_API(badNetwork) +let badNetwork_api = new Masternode_API(badNetwork); -function copyObject(object){ - return JSON.parse(JSON.stringify(object)) +function copyObject(object) { + return JSON.parse(JSON.stringify(object)); } -let keyPair = wallet.new_wallet() +let keyPair = wallet.new_wallet(); const balanceCheckWallet = { - float: '960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb', - int: '01930f6472916ae53c9ebbe7d3faf8979c24cac33d68041aa4ab986401bbf7c3' -} - -describe('Test Masternode API returns', () => { - context('constructor', () => { - it('can create an instance', () => { - let api = new Masternode_API(goodNetwork) - expect(api).to.exist; - expect(JSON.stringify(api.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); - expect(api.url).to.be(goodNetwork.hosts[0]); - }) - it('rejects arg not being an object', () => { - let error; - try{ - new Masternode_API('https://testnet.lamden.io:443') - } catch (e) {error = e} - expect(error.message).to.be('Expected Object and got Type: string') - }) - it('rejects missing hosts Array', () => { - let error; - try{ - let networkInfo = copyObject(goodNetwork) - networkInfo.hosts = [] - new Masternode_API(networkInfo) - } catch (e) {error = e} - expect(error.message).to.be('HOSTS Required (Type: Array)') - - }) - it('rejects no protocol in host string', () => { - let error; - try{ - let networkInfo = copyObject(goodNetwork) - networkInfo.hosts = ['missing.protocol.com'] - new Masternode_API(networkInfo) - } catch (e) {error = e} - expect(error.message).to.be('Host String must include http:// or https://') - }) - }) - - context('Masternode_API.pingServer()', () => { - it('returns true if the server is online', async () => { - let response = await goodNetwork_api.pingServer() - expect(response).to.be(true); - }) - it('returns false if provided network is unresponsive', async () => { - let response = await badNetwork_api.pingServer() - expect(response).to.be(false); - }) - }) - - context('Masternode_API.getCurrencyBalance()', () => { - it('returns the float balance for a vk', async () => { - let response = await goodNetwork_api.getCurrencyBalance(balanceCheckWallet.float) - expect(response).to.be.above(0); - }) - it('returns the int balance for a vk', async () => { - let response = await goodNetwork_api.getCurrencyBalance(balanceCheckWallet.int) - expect(response).to.be.above(0); - }) - it('returns 0 if the vk does not exist yet', async () => { - let response = await goodNetwork_api.getCurrencyBalance(wallet.new_wallet().vk) - expect(response.toNumber()).to.be(0); - }) - it('returns 0 if provided network is unresponsive', async () => { - let response = await badNetwork_api.getCurrencyBalance() - expect(response.toNumber()).to.be(0); - }) - }) - - context('Masternode_API.contractExists()', () => { - it('returns true if a contract exists on the blockchain', async () => { - let response = await goodNetwork_api.contractExists('currency') - expect(response).to.be(true); - }) - it('returns false if a contract does not exist on the blockchain', async () => { - let response = await goodNetwork_api.contractExists(wallet.new_wallet().vk) - expect(response).to.be(false); - }) - it('returns false if provided network is unresponsive', async () => { - let response = await badNetwork_api.contractExists('currency') - expect(response).to.be(false); - }) - }) - - context('Masternode_API.getContractMethods()', () => { - it('returns an array if a contract exists on the blockchain', async () => { - let response = await goodNetwork_api.getContractMethods('currency') - expect(Array.isArray(response)).to.be(true); - expect(response.length > 0).to.be(true); - }) - it('returns an empty array if a contract does not exist on the blockchain', async () => { - let response = await goodNetwork_api.getContractMethods(wallet.new_wallet().vk) - expect(Array.isArray(response)).to.be(true); - expect(response.length === 0).to.be(true); - }) - it('returns empty array if provided network is unresponsive', async () => { - let response = await badNetwork_api.getContractMethods('currency') - expect(Array.isArray(response)).to.be(true); - expect(response.length === 0).to.be(true); - }) - }) - - context('Masternode_API.getContractVariables()', () => { - it('returns an array if a contract exists on the blockchain', async () => { - let response = await goodNetwork_api.getContractVariables('currency') - expect(Array.isArray(response.variables)).to.be(true); - expect(Array.isArray(response.hashes)).to.be(true); - expect(response.hashes.length > 0).to.be(true); - }) - it('returns an empty Object if a contract does not exist on the blockchain', async () => { - let response = await goodNetwork_api.getContractVariables(wallet.new_wallet().vk) - expect(Array.isArray(response.variables)).to.be(false); - expect(Array.isArray(response.hashes)).to.be(false); - expect(Object.keys(response).length === 0).to.be(true); - }) - it('returns empty Object if provided network is unresponsive', async () => { - let response = await badNetwork_api.getContractVariables('currency') - expect(Array.isArray(response.variables)).to.be(false); - expect(Array.isArray(response.hashes)).to.be(false); - expect(Object.keys(response).length === 0).to.be(true); - }) - }) - - context('Masternode_API.getVariable()', () => { - it('returns the value of the variable if the key exists', async () => { - let key = balanceCheckWallet.float; - let response = await goodNetwork_api.getVariable('currency', 'balances', key) - expect(parseFloat(response.__fixed__)).to.be.above(0); - }) - it('returns undefined if the key does not exist in the variable', async () => { - let key = wallet.new_wallet().vk; - let response = await goodNetwork_api.getVariable('currency', 'balances', key) - expect(response).to.be(null); - }) - it('returns undefined if the contract does not exist', async () => { - let key = keyPair.vk; - let response = await goodNetwork_api.getVariable(wallet.new_wallet().vk, 'balances', key) - expect(response).to.be(null); - }) - it('returns undefined if the variable does not exist', async () => { - let key = keyPair.vk; - let response = await goodNetwork_api.getVariable('currency', wallet.new_wallet().vk, key) - expect(response).to.be(null); - }) - it('returns undefined if provided network is unresponsive', async () => { - let key = keyPair.vk; - let response = await badNetwork_api.getVariable('currency', 'balances', key) - expect(response).to.be(null); - }) - }) - - context('Masternode_API.getContractInfo()', () => { - it('returns a contract info object', async () => { - let response = await goodNetwork_api.getContractInfo('currency') - expect(response.name).to.be('currency'); - expect(response.code.length > 0).to.be(true); - }) - it('returns undefined if provided network is unresponsive', async () => { - let response = await badNetwork_api.getContractInfo('currency') - expect(response).to.be(null); - }) - }) - - context('Masternode_API.getNonce()', () => { - it('returns a nonce and processor value for a vk', async () => { - let response = await goodNetwork_api.getNonce(keyPair.vk) - expect(response.nonce).to.exist - expect(response.processor).to.exist - expect(response.sender).to.be(keyPair.vk) - }) - it('returns an error message if vk is not a hex string', async () => { - let error = await goodNetwork_api.getNonce('this-is-not-a-vk') - expect(error).to.be(`this-is-not-a-vk is not a hex string.`) - }) - it('returns an error message if provided network is unresponsive', async () => { - let error = await badNetwork_api.getNonce(keyPair.vk) - expect(error.includes(`Unable to get nonce for ${keyPair.vk}`)).to.be(true) - }) - }) -}) \ No newline at end of file + float: "960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb", + int: "01930f6472916ae53c9ebbe7d3faf8979c24cac33d68041aa4ab986401bbf7c3", +}; + +describe("Test Masternode API returns", () => { + context("constructor", () => { + it("can create an instance", () => { + let api = new Masternode_API(goodNetwork); + expect(api).to.exist; + expect(JSON.stringify(api.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); + expect(api.url).to.be(goodNetwork.hosts[0]); + }); + it("rejects arg not being an object", () => { + let error; + try { + new Masternode_API("https://testnet.lamden.io:443"); + } catch (e) { + error = e; + } + expect(error.message).to.be("Expected Object and got Type: string"); + }); + it("rejects missing hosts Array", () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = []; + new Masternode_API(networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.be("HOSTS Required (Type: Array)"); + }); + it("rejects no protocol in host string", () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = ["missing.protocol.com"]; + new Masternode_API(networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.be("Host String must include http:// or https://"); + }); + }); + + context("Masternode_API.pingServer()", () => { + it("returns true if the server is online", async () => { + let response = await goodNetwork_api.pingServer(); + expect(response).to.be(true); + }); + it("returns false if provided network is unresponsive", async () => { + let response = await badNetwork_api.pingServer(); + expect(response).to.be(false); + }); + }); + + context("Masternode_API.getCurrencyBalance()", () => { + it("returns the float balance for a vk", async () => { + let response = await goodNetwork_api.getCurrencyBalance(balanceCheckWallet.float); + expect(response).to.be.above(0); + }); + it("returns the int balance for a vk", async () => { + let response = await goodNetwork_api.getCurrencyBalance(balanceCheckWallet.int); + expect(response).to.be.above(0); + }); + it("returns 0 if the vk does not exist yet", async () => { + let response = await goodNetwork_api.getCurrencyBalance(wallet.new_wallet().vk); + expect(response.toNumber()).to.be(0); + }); + it("returns 0 if provided network is unresponsive", async () => { + let response = await badNetwork_api.getCurrencyBalance(); + expect(response.toNumber()).to.be(0); + }); + }); + + context("Masternode_API.contractExists()", () => { + it("returns true if a contract exists on the blockchain", async () => { + let response = await goodNetwork_api.contractExists("currency"); + expect(response).to.be(true); + }); + it("returns false if a contract does not exist on the blockchain", async () => { + let response = await goodNetwork_api.contractExists(wallet.new_wallet().vk); + expect(response).to.be(false); + }); + it("returns false if provided network is unresponsive", async () => { + let response = await badNetwork_api.contractExists("currency"); + expect(response).to.be(false); + }); + }); + + context("Masternode_API.getContractMethods()", () => { + it("returns an array if a contract exists on the blockchain", async () => { + let response = await goodNetwork_api.getContractMethods("currency"); + expect(Array.isArray(response)).to.be(true); + expect(response.length > 0).to.be(true); + }); + it("returns an empty array if a contract does not exist on the blockchain", async () => { + let response = await goodNetwork_api.getContractMethods(wallet.new_wallet().vk); + expect(Array.isArray(response)).to.be(true); + expect(response.length === 0).to.be(true); + }); + it("returns empty array if provided network is unresponsive", async () => { + let response = await badNetwork_api.getContractMethods("currency"); + expect(Array.isArray(response)).to.be(true); + expect(response.length === 0).to.be(true); + }); + }); + + context("Masternode_API.getContractVariables()", () => { + it("returns an array if a contract exists on the blockchain", async () => { + let response = await goodNetwork_api.getContractVariables("currency"); + expect(Array.isArray(response.variables)).to.be(true); + expect(Array.isArray(response.hashes)).to.be(true); + expect(response.hashes.length > 0).to.be(true); + }); + it("returns an empty Object if a contract does not exist on the blockchain", async () => { + let response = await goodNetwork_api.getContractVariables(wallet.new_wallet().vk); + expect(Array.isArray(response.variables)).to.be(false); + expect(Array.isArray(response.hashes)).to.be(false); + expect(Object.keys(response).length === 0).to.be(true); + }); + it("returns empty Object if provided network is unresponsive", async () => { + let response = await badNetwork_api.getContractVariables("currency"); + expect(Array.isArray(response.variables)).to.be(false); + expect(Array.isArray(response.hashes)).to.be(false); + expect(Object.keys(response).length === 0).to.be(true); + }); + }); + + context("Masternode_API.getVariable()", () => { + it("returns the value of the variable if the key exists", async () => { + let key = balanceCheckWallet.float; + let response = await goodNetwork_api.getVariable("currency", "balances", key); + expect(parseFloat(response.__fixed__)).to.be.above(0); + }); + it("returns undefined if the key does not exist in the variable", async () => { + let key = wallet.new_wallet().vk; + let response = await goodNetwork_api.getVariable("currency", "balances", key); + expect(response).to.be(null); + }); + it("returns undefined if the contract does not exist", async () => { + let key = keyPair.vk; + let response = await goodNetwork_api.getVariable(wallet.new_wallet().vk, "balances", key); + expect(response).to.be(null); + }); + it("returns undefined if the variable does not exist", async () => { + let key = keyPair.vk; + let response = await goodNetwork_api.getVariable("currency", wallet.new_wallet().vk, key); + expect(response).to.be(null); + }); + it("returns undefined if provided network is unresponsive", async () => { + let key = keyPair.vk; + let response = await badNetwork_api.getVariable("currency", "balances", key); + expect(response).to.be(null); + }); + }); + + context("Masternode_API.getContractInfo()", () => { + it("returns a contract info object", async () => { + let response = await goodNetwork_api.getContractInfo("currency"); + expect(response.name).to.be("currency"); + expect(response.code.length > 0).to.be(true); + }); + it("returns undefined if provided network is unresponsive", async () => { + let response = await badNetwork_api.getContractInfo("currency"); + expect(response).to.be(null); + }); + }); + + context("Masternode_API.getNonce()", () => { + it("returns a nonce and processor value for a vk", async () => { + let response = await goodNetwork_api.getNonce(keyPair.vk); + expect(response.nonce).to.exist; + expect(response.processor).to.exist; + expect(response.sender).to.be(keyPair.vk); + }); + it("returns an error message if vk is not a hex string", async () => { + let error = await goodNetwork_api.getNonce("this-is-not-a-vk"); + expect(error).to.be(`this-is-not-a-vk is not a hex string.`); + }); + it("returns an error message if provided network is unresponsive", async () => { + let error = await badNetwork_api.getNonce(keyPair.vk); + expect(error.includes(`Unable to get nonce for ${keyPair.vk}`)).to.be(true); + }); + }); +}); diff --git a/test/network-test.js b/test/network-test.js index 48e801f..167ad43 100644 --- a/test/network-test.js +++ b/test/network-test.js @@ -1,89 +1,94 @@ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); let goodNetwork = { - type: 'testnet', - name: 'Lamden Public Testnet', - hosts: ['https://testnet-master-1.lamden.io:443'] , - lamden: true, - blockExplorer: 'https://testnet.lamden.io' -} + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], + lamden: true, + blockExplorer: "https://testnet.lamden.io", +}; -function copyObject(object){ - return JSON.parse(JSON.stringify(object)) +function copyObject(object) { + return JSON.parse(JSON.stringify(object)); } -describe('Test Netowrk class', () => { - context('Constructor', () => { - it('can create an instance', () => { - let network = new Lamden.Network(goodNetwork) - expect(network).to.exist; - expect(JSON.stringify(network.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); - expect(network.host).to.be(goodNetwork.hosts[0]); - expect(network.url).to.be(goodNetwork.hosts[0]); - expect(network.type).to.be(goodNetwork.type); - expect(network.name).to.be(goodNetwork.name); - expect(network.lamden).to.be(goodNetwork.lamden); - expect(network.blockExplorer).to.be(goodNetwork.blockExplorer); - }) - - it('rejects missing hosts Array', () => { - let error; - try{ - let networkInfo = copyObject(goodNetwork) - delete networkInfo.hosts - new Lamden.Network(networkInfo) - } catch (e) {error = e} - expect(error.message).to.be('HOSTS Required (Type: Array)') +describe("Test Netowrk class", () => { + context("Constructor", () => { + it("can create an instance", () => { + let network = new Lamden.Network(goodNetwork); + expect(network).to.exist; + expect(JSON.stringify(network.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); + expect(network.host).to.be(goodNetwork.hosts[0]); + expect(network.url).to.be(goodNetwork.hosts[0]); + expect(network.type).to.be(goodNetwork.type); + expect(network.name).to.be(goodNetwork.name); + expect(network.lamden).to.be(goodNetwork.lamden); + expect(network.blockExplorer).to.be(goodNetwork.blockExplorer); + }); - }) - it('rejects no protocol in host string', () => { - let error; - try{ - let networkInfo = copyObject(goodNetwork) - networkInfo.hosts = ['missing.protocol.com'] - new Lamden.Network(networkInfo) - } catch (e) {error = e} - expect(error.message).to.be('Host String must include http:// or https://') - }) - it('defaults missing type to custom', () => { - let networkInfo = copyObject(goodNetwork) - networkInfo.type = '' - let network = new Lamden.Network(networkInfo) - expect(network.type).to.be("custom"); - }) - it('rejects arg not being an object', () => { - let error; - try{ - new Lamden.Network('https://testnet-master-1.lamden.io:443') - } catch (e) {error = e} - expect(error.message).to.be('Expected Network Info Object and got Type: string') - }) - }) - context('Ping Network', () => { - it('emits online status', async () => { - function checkResult(result){ - expect(result).to.be(true) - } - let network = new Lamden.Network(goodNetwork) - network.events.on('online', (status) => checkResult(status)) - await network.ping(); - }) + it("rejects missing hosts Array", () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + delete networkInfo.hosts; + new Lamden.Network(networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.be("HOSTS Required (Type: Array)"); + }); + it("rejects no protocol in host string", () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = ["missing.protocol.com"]; + new Lamden.Network(networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.be("Host String must include http:// or https://"); + }); + it("defaults missing type to custom", () => { + let networkInfo = copyObject(goodNetwork); + networkInfo.type = ""; + let network = new Lamden.Network(networkInfo); + expect(network.type).to.be("custom"); + }); + it("rejects arg not being an object", () => { + let error; + try { + new Lamden.Network("https://testnet-master-1.lamden.io:443"); + } catch (e) { + error = e; + } + expect(error.message).to.be("Expected Network Info Object and got Type: string"); + }); + }); + context("Ping Network", () => { + it("emits online status", async () => { + function checkResult(result) { + expect(result).to.be(true); + } + let network = new Lamden.Network(goodNetwork); + network.events.on("online", (status) => checkResult(status)); + await network.ping(); + }); - it('return value from method return', async () => { - function checkResult(result){ - expect(result).to.be(true) - } - let network = new Lamden.Network(goodNetwork) - let status = await network.ping() - checkResult(status) - }) - it('returns online status through callback', async () => { - function checkResult(result){ - expect(result).to.be(true) - } - let network = new Lamden.Network(goodNetwork) - await network.ping(((status) => checkResult(status))) - }) - }) -}) \ No newline at end of file + it("return value from method return", async () => { + function checkResult(result) { + expect(result).to.be(true); + } + let network = new Lamden.Network(goodNetwork); + let status = await network.ping(); + checkResult(status); + }); + it("returns online status through callback", async () => { + function checkResult(result) { + expect(result).to.be(true); + } + let network = new Lamden.Network(goodNetwork); + await network.ping((status) => checkResult(status)); + }); + }); +}); diff --git a/test/transactionBatcher-test.js b/test/transactionBatcher-test.js index 1b302af..af8532b 100644 --- a/test/transactionBatcher-test.js +++ b/test/transactionBatcher-test.js @@ -3,66 +3,65 @@ The nonces won't increment properly depending on network lag and I don't have a good solution to it. */ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); let networkInfo = { - hosts: ['https://testnet-master-1.lamden.io:443'] -} + hosts: ["https://testnet-master-1.lamden.io:443"], +}; -let uid = "randomUIDstring" +let uid = "randomUIDstring"; const senderWallet1 = { - vk: "960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb", - sk: "c8a3c5333aa3b058c4fa16d48db52355ab62ddc8daa9a183706a912e522440b6" -} + vk: "960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb", + sk: "c8a3c5333aa3b058c4fa16d48db52355ab62ddc8daa9a183706a912e522440b6", +}; const senderWallet2 = { - vk: "6a91a9a65eb80829a360efc0555cad8841af64c78375bbf394f6ecb89d5644ee", - sk: "4166ed44f465c51d562895295cdcde64a3444b14ea2a3e477c60cf0ecde65230" -} + vk: "6a91a9a65eb80829a360efc0555cad8841af64c78375bbf394f6ecb89d5644ee", + sk: "4166ed44f465c51d562895295cdcde64a3444b14ea2a3e477c60cf0ecde65230", +}; let recieverWallet = { - vk: 'f16c130ceb7ed9bcebde301488cfd507717d5d511674bc269c39ad41fc15d780' -} + vk: "f16c130ceb7ed9bcebde301488cfd507717d5d511674bc269c39ad41fc15d780", +}; function sleep(milliseconds) { - const date = Date.now(); - let currentDate = null; - do { - currentDate = Date.now(); - } while (currentDate - date < milliseconds); - } - - -const makeTxList = (senderVK, receiver, amount) => { - let txList = [] - for(i = 0; i <= (amount - 1); i++){ - txList.push({ - uid, - senderVk: senderVK, - contractName: 'currency', - methodName: 'transfer', - kwargs:{ - 'to': receiver, - 'amount': {"__fixed__":"0.0005"} - }, - stampLimit: 500 - }) - } - return txList + const date = Date.now(); + let currentDate = null; + do { + currentDate = Date.now(); + } while (currentDate - date < milliseconds); } -let keyList = {} -keyList[senderWallet1.vk] = senderWallet1.sk -keyList[senderWallet2.vk] = senderWallet2.sk - -describe('Test TransactionBuilder class', () => { - context('new TransactionBuilder', () => { - it('can create an instance', () => { - let txb = new Lamden.TransactionBatcher(networkInfo) - expect(txb.running).to.be(false) - }) - })/* +const makeTxList = (senderVK, receiver, amount) => { + let txList = []; + for (i = 0; i <= amount - 1; i++) { + txList.push({ + uid, + senderVk: senderVK, + contractName: "currency", + methodName: "transfer", + kwargs: { + to: receiver, + amount: { __fixed__: "0.0005" }, + }, + stampLimit: 500, + }); + } + return txList; +}; + +let keyList = {}; +keyList[senderWallet1.vk] = senderWallet1.sk; +keyList[senderWallet2.vk] = senderWallet2.sk; + +describe("Test TransactionBuilder class", () => { + context("new TransactionBuilder", () => { + it("can create an instance", () => { + let txb = new Lamden.TransactionBatcher(networkInfo); + expect(txb.running).to.be(false); + }); + }); /* context('TransactionBatcher.addTransaction()', () => { it('can add a list of transactions for 1 sender', () => { let txb = new Lamden.TransactionBatcher(networkInfo) @@ -207,4 +206,4 @@ describe('Test TransactionBuilder class', () => { }) })*/ -}) \ No newline at end of file +}); diff --git a/test/transactionBuilder-test.js b/test/transactionBuilder-test.js index f004686..9182ac7 100644 --- a/test/transactionBuilder-test.js +++ b/test/transactionBuilder-test.js @@ -1,309 +1,364 @@ -const expect = require('expect.js'); -require('dotenv').config() -const Lamden = require('../dist/lamden'); +const expect = require("expect.js"); +require("dotenv").config(); +const Lamden = require("../dist/cjs/lamden"); -const { vk ,sk } = process.env +const { vk, sk } = process.env; let goodNetwork = { - type: 'testnet', - name: 'Lamden Public Testnet', - hosts: ['https://testnet-master-1.lamden.io:443'] -} + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], +}; let badNetwork = { - type: 'testnet', - name: 'Bad Network', - hosts: ['http://badnetwork.lamden.io:18080'] -} + type: "testnet", + name: "Bad Network", + hosts: ["http://badnetwork.lamden.io:18080"], +}; -let uid = "randomUIDstring" +let uid = "randomUIDstring"; -const senderWallet = { vk, sk } +const senderWallet = { vk, sk }; -let recieverWallet = Lamden.wallet.new_wallet() +let recieverWallet = Lamden.wallet.new_wallet(); -let senderVk = senderWallet.vk -let contractName = 'currency' -let methodName = 'transfer' -let stampLimit = 100 +let senderVk = senderWallet.vk; +let contractName = "currency"; +let methodName = "transfer"; +let stampLimit = 100; let nonce = 0; let processor = "0000000000000000000000000000000000000000000000000000000000000000"; let kwargs = { - to: recieverWallet.vk, - amount: 1 -} + to: recieverWallet.vk, + amount: 1, +}; let valuesTxInfo = { - senderVk: senderWallet.vk, - contractName: 'con_values_testing_2', - methodName: 'test_values', - stampLimit: 100, - kwargs: { - UID: 'lamdenjs-testing', - Str: 'test string', - Int: 1, - Float: 1.01, - Bool: false, - Dict: {'s':'test', 'i': 1, 'f': 1.1, 'b': true,'d':{'f':1.1,'l':[1,1.1]},'l':[1,1.1]}, - List: ['test', 1, 1.1, false, {'f':1.1,'l':[1,1.1]}, [1,1.1]], - ANY: {'f':1.1,'l':[1,1.1]}, - DateTime: {'datetime': "2020-07-28T19:16:35.059Z"}, - TimeDelta: {'timedelta':1000} - } -} - -let txInfo_noNonce = {uid, senderVk, contractName, methodName, kwargs, stampLimit } -let txInfo_withNonce = {uid, senderVk, contractName, methodName, kwargs, stampLimit, nonce, processor } - -describe('Test TransactionBuilder class', () => { - context('new TransactionBuilder', () => { - it('can create an instance without nonce or processor', () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - let newTxInfo = newTx.getAllInfo() - expect(newTx).to.exist; - //Validate TX Info propagated in the class - expect(newTxInfo.uid).to.be(txInfo_noNonce.uid) - expect(newTxInfo.txInfo.senderVk).to.be(txInfo_noNonce.senderVk) - expect(newTxInfo.txInfo.contractName).to.be(txInfo_noNonce.contractName) - expect(newTxInfo.txInfo.methodName).to.be(txInfo_noNonce.methodName) - expect(JSON.stringify(newTxInfo.txInfo.kwargs)).to.be(JSON.stringify(txInfo_noNonce.kwargs)) - //Validate internal properties - expect(newTxInfo.signed).to.be(false) - expect(newTxInfo.signature).to.be(undefined) - expect(JSON.stringify(newTxInfo.txSendResult)).to.be(JSON.stringify({errors: []})) - expect(JSON.stringify(newTxInfo.txBlockResult)).to.be(JSON.stringify({})) - expect(JSON.stringify(newTxInfo.nonceResult)).to.be(JSON.stringify({})) - }) - it('can create an instance by providing nonce and processor', () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce) - let newTxInfo = newTx.getAllInfo() - expect(newTx).to.exist; - expect(newTxInfo.txInfo.nonce).to.exist; - expect(newTxInfo.txInfo.processor).to.exist; - }) - - it('it throws error when missing arguments', () => { - function testValues(argName, networkInfo, senderVk, contractName, methodName, kwargs, stampLimit){ - let txInfo = {senderVk, contractName, methodName, kwargs, stampLimit} - try{ - return new Lamden.TransactionBuilder(networkInfo, txInfo) - }catch (e){ - expect(e.message.includes(argName)).to.be(true); - } - } - let newTx = undefined; - newTx = testValues('Network Info', undefined, senderWallet.vk, 'currency', 'transfer', kwargs, 50000) - newTx = testValues('Sender', goodNetwork, undefined, 'currency', 'transfer', kwargs, 50000) - newTx = testValues('Contract', goodNetwork, senderWallet.vk, undefined, 'transfer', kwargs, 50000) - newTx = testValues('Method', goodNetwork, senderWallet.vk, 'currency', undefined, kwargs, 50000) - newTx = testValues('Stamps', goodNetwork, senderWallet.vk, 'currency', 'transfer', kwargs, undefined) - expect(typeof newTx).to.be('undefined'); - }) - - it('it can create an instance with a Lamden Network Object as first arg', () => { - let network = new Lamden.Network(goodNetwork) - let error = '' - try { - var newTx = new Lamden.TransactionBuilder(network, txInfo_withNonce) - } catch (e){ - error = e - } - expect(newTx).to.exist; - expect(error === '').to.be(true); - }) - }) - - context('TransactionBuilder.sign()', () => { - it('can sign and verify a transaction', () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce) - newTx.sign(senderWallet.sk) - expect(newTx.transactionSigned).to.be(true) - expect(newTx.verifySignature()).to.be(true) - }) - it('can sign and verify a transaction using a keystore wallet', () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce) - - let stringBuffer = Buffer.from(newTx.sortedPayload.json) - let message = new Uint8Array(stringBuffer) - let keystore = new Lamden.Keystore({key: {sk:senderWallet.sk}}) - - newTx.sign(null, keystore.wallets[0]) - - expect(newTx.transactionSigned).to.be(true) - expect(newTx.verifySignature()).to.be(true) - expect(keystore.wallets[0].verify(message, newTx.signature)).to.be(true) - }) - it('throws and error if nonce not set ', () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - expect(newTx.nonce).to.not.exist - expect(newTx.processor).to.not.exist - try { - newTx.sign(senderWallet.sk) - } catch (e){ - expect(e.toString()).to.be('Error: No Nonce Set. Call getNonce()') - } - }) - }) - - context('TransactionBuilder.getNonce()', () => { - it('can retrieve nonce and processor from the masternode', async () => { - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - expect(newTx.nonce).to.not.exist - expect(newTx.processor).to.not.exist - - let response = await newTx.getNonce(); - - //Validate Nonce was retrieved - expect(response.nonce).to.exist - expect(response.processor).to.exist - expect(response.sender).to.exist - expect(newTx.nonce).to.be(response.nonce) - expect(newTx.processor).to.be(response.processor) - expect(newTx.sender).to.be(response.sender) - expect(goodNetwork.hosts.includes(newTx.nonceMasternode)).to.be(true) - - }) - it('throws error if vk is not correct type, missing or invalid', async () => { - let error = '' - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - newTx.sender = 'not-a-good-vk' - try{ - await newTx.getNonce() - } catch (e){ - error = e.message - } - expect(error).to.be(`${newTx.sender} is not a hex string.`) - }) - it('throws error if provided network is unresponsive', async () => { - let error = '' - let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_noNonce) - try{ - await newTx.getNonce() - } catch (e){ - error = e.message - } - expect(error).to.be(`Unable to get nonce for ${newTx.sender} on network ${newTx.url}`) - }) - }) - - context('TransactionBuilder.send()', () => { - let newTx1 = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - - it('Sends a transaction and receives a hash back', async function () { - await newTx1.getNonce(); - //Sign transaction - newTx1.sign(senderWallet.sk) - - //Validate transaction is signed - expect(newTx1.transactionSigned).to.be(true) - expect(newTx1.verifySignature()).to.be(true) - - //Send Tx - await newTx1.send(); - //console.log(newTx1.getAllInfo()) - - let txSendResult = newTx1.txSendResult; - expect(txSendResult.success).to.equal('Transaction successfully submitted to the network.') - expect(txSendResult.hash).to.exist - expect(txSendResult.timestamp).to.exist - }) - it('Creates ResultInfo object based on txSendResult', async function () { - let resultInfo = newTx1.resultInfo; - - expect(resultInfo.title).to.equal('Transaction Pending') - expect(resultInfo.subtitle).to.equal('Your transaction was submitted and is being processed') - expect(resultInfo.message).to.equal(`Tx Hash: ${newTx1.txSendResult.hash}`) - expect(resultInfo.type).to.equal('success') - }) - it('Sends transactions and can get hash result from masternode', async function () { - this.timeout(20000); - await newTx1.checkForTransactionResult() - let txBlockResult = newTx1.txBlockResult; - expect(txBlockResult.hash).to.equal(newTx1.txSendResult.hash) - expect(txBlockResult.result).to.equal('None') - expect(txBlockResult.stamps_used > 0).to.be(true) - expect(txBlockResult.state.length).to.equal(2) - expect(txBlockResult.status).to.equal(0) - expect(JSON.stringify(txBlockResult.transaction)).to.equal(JSON.stringify(newTx1.tx)) - expect(txBlockResult.timestamp).to.exist - }) - it('Creates ResultInfo object based on txBlockResult', async function () { - let resultInfo = newTx1.resultInfo; - expect(resultInfo.title).to.equal('Transaction Successful') - expect(resultInfo.subtitle).to.equal(`Your transaction used ${resultInfo.stampsUsed} stamps`) - expect(resultInfo.message).to.equal('') - expect(resultInfo.type).to.equal('success') - expect(resultInfo.errorInfo).to.equal(undefined) - expect(resultInfo.stampsUsed).to.equal(newTx1.txBlockResult.stamps_used) - expect(resultInfo.statusCode).to.equal(0) - expect(resultInfo.returnResult).to.equal('None') - - }) - it('gets nonce and signs transacation automatically if sk is provided', async function () { - this.timeout(10000); - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - //Send Tx - await newTx.send(senderWallet.sk); - - let txSendResult = newTx.txSendResult; - - expect(txSendResult.success).to.equal('Transaction successfully submitted to the network.') - expect(txSendResult.hash).to.exist - expect(txSendResult.timestamp).to.exist - }) - it('throws error if provided network is unresponsive', async function () { - let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_withNonce) - let response = await newTx.send(senderWallet.sk) - expect(response.errors[0]) - .to.be('FetchError: request to http://badnetwork.lamden.io:18080/ failed, reason: getaddrinfo ENOTFOUND badnetwork.lamden.io') - - }) - it('can return execution errors list', async function () { - this.timeout(10000); - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - newTx.stampLimit = 0 - //Send Tx - await newTx.send(senderWallet.sk); - await newTx.checkForTransactionResult() - - let resultInfo = newTx.resultInfo; - - expect(resultInfo.title).to.equal('Transaction Failed') - expect(resultInfo.subtitle).to.equal(`Your transaction returned status code 1 and used ${resultInfo.stampsUsed} stamps`) - expect(resultInfo.message).to.equal('This transaction returned 1 errors.') - expect(resultInfo.type).to.equal('error') - expect(resultInfo.errorInfo.length).to.equal(2) - expect(resultInfo.errorInfo[0]).to.equal('This transaction returned a non-zero status code') - expect(resultInfo.errorInfo[1].includes('The cost has exceeded the stamp supplied!')).to.be(true) - expect(resultInfo.stampsUsed).to.equal(newTx.txBlockResult.stamps_used) - expect(resultInfo.statusCode).to.equal(1) - expect(resultInfo.returnResult.includes('The cost has exceeded the stamp supplied!')).to.be(true) - }) - it('can return transaction validation errors list', async function () { - let sender = Lamden.wallet.new_wallet() - let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce) - newTx.sender = sender.vk; - - //Send Transaction - let response = await newTx.send(sender.sk); - expect(response.errors.length > 0).to.be(true) - expect(response.errors[0]).to.be('Transaction sender has too few stamps for this transaction.') - }) - it('can encode and send all annotation types', async function () { - this.timeout(15000); - valuesTxInfo.kwargs = Lamden.Encoder('object', valuesTxInfo.kwargs) - - let newTx = new Lamden.TransactionBuilder(goodNetwork, valuesTxInfo) - - //Send Transaction - let response = await newTx.send(senderWallet.sk); - - expect(response.success).to.be("Transaction successfully submitted to the network.") - - //Check Transaction - let check = await newTx.checkForTransactionResult() - expect(check.status).to.be(0) - }) - }) -}) \ No newline at end of file + senderVk: senderWallet.vk, + contractName: "con_values_testing_2", + methodName: "test_values", + stampLimit: 100, + kwargs: { + UID: "lamdenjs-testing", + Str: "test string", + Int: 1, + Float: 1.01, + Bool: false, + Dict: { s: "test", i: 1, f: 1.1, b: true, d: { f: 1.1, l: [1, 1.1] }, l: [1, 1.1] }, + List: ["test", 1, 1.1, false, { f: 1.1, l: [1, 1.1] }, [1, 1.1]], + ANY: { f: 1.1, l: [1, 1.1] }, + DateTime: { datetime: "2020-07-28T19:16:35.059Z" }, + TimeDelta: { timedelta: 1000 }, + }, +}; + +let txInfo_noNonce = { uid, senderVk, contractName, methodName, kwargs, stampLimit }; +let txInfo_withNonce = { + uid, + senderVk, + contractName, + methodName, + kwargs, + stampLimit, + nonce, + processor, +}; + +describe("Test TransactionBuilder class", () => { + context("new TransactionBuilder", () => { + it("can create an instance without nonce or processor", () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + let newTxInfo = newTx.getAllInfo(); + expect(newTx).to.exist; + //Validate TX Info propagated in the class + expect(newTxInfo.uid).to.be(txInfo_noNonce.uid); + expect(newTxInfo.txInfo.senderVk).to.be(txInfo_noNonce.senderVk); + expect(newTxInfo.txInfo.contractName).to.be(txInfo_noNonce.contractName); + expect(newTxInfo.txInfo.methodName).to.be(txInfo_noNonce.methodName); + expect(JSON.stringify(newTxInfo.txInfo.kwargs)).to.be(JSON.stringify(txInfo_noNonce.kwargs)); + //Validate internal properties + expect(newTxInfo.signed).to.be(false); + expect(newTxInfo.signature).to.be(undefined); + expect(JSON.stringify(newTxInfo.txSendResult)).to.be(JSON.stringify({ errors: [] })); + expect(JSON.stringify(newTxInfo.txBlockResult)).to.be(JSON.stringify({})); + expect(JSON.stringify(newTxInfo.nonceResult)).to.be(JSON.stringify({})); + }); + it("can create an instance by providing nonce and processor", () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + let newTxInfo = newTx.getAllInfo(); + expect(newTx).to.exist; + expect(newTxInfo.txInfo.nonce).to.exist; + expect(newTxInfo.txInfo.processor).to.exist; + }); + + it("it throws error when missing arguments", () => { + function testValues( + argName, + networkInfo, + senderVk, + contractName, + methodName, + kwargs, + stampLimit + ) { + let txInfo = { senderVk, contractName, methodName, kwargs, stampLimit }; + try { + return new Lamden.TransactionBuilder(networkInfo, txInfo); + } catch (e) { + expect(e.message.includes(argName)).to.be(true); + } + } + let newTx = undefined; + newTx = testValues( + "Network Info", + undefined, + senderWallet.vk, + "currency", + "transfer", + kwargs, + 50000 + ); + newTx = testValues("Sender", goodNetwork, undefined, "currency", "transfer", kwargs, 50000); + newTx = testValues( + "Contract", + goodNetwork, + senderWallet.vk, + undefined, + "transfer", + kwargs, + 50000 + ); + newTx = testValues( + "Method", + goodNetwork, + senderWallet.vk, + "currency", + undefined, + kwargs, + 50000 + ); + newTx = testValues( + "Stamps", + goodNetwork, + senderWallet.vk, + "currency", + "transfer", + kwargs, + undefined + ); + expect(typeof newTx).to.be("undefined"); + }); + + it("it can create an instance with a Lamden Network Object as first arg", () => { + let network = new Lamden.Network(goodNetwork); + let error = ""; + try { + var newTx = new Lamden.TransactionBuilder(network, txInfo_withNonce); + } catch (e) { + error = e; + } + expect(newTx).to.exist; + expect(error === "").to.be(true); + }); + }); + + context("TransactionBuilder.sign()", () => { + it("can sign and verify a transaction", () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + newTx.sign(senderWallet.sk); + expect(newTx.transactionSigned).to.be(true); + expect(newTx.verifySignature()).to.be(true); + }); + it("can sign and verify a transaction using a keystore wallet", () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + + let stringBuffer = Buffer.from(newTx.sortedPayload.json); + let message = new Uint8Array(stringBuffer); + let keystore = new Lamden.Keystore({ key: { sk: senderWallet.sk } }); + + newTx.sign(null, keystore.wallets[0]); + + expect(newTx.transactionSigned).to.be(true); + expect(newTx.verifySignature()).to.be(true); + expect(keystore.wallets[0].verify(message, newTx.signature)).to.be(true); + }); + it("throws and error if nonce not set ", () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + expect(newTx.nonce).to.not.exist; + expect(newTx.processor).to.not.exist; + try { + newTx.sign(senderWallet.sk); + } catch (e) { + expect(e.toString()).to.be("Error: No Nonce Set. Call getNonce()"); + } + }); + }); + + context("TransactionBuilder.getNonce()", () => { + it("can retrieve nonce and processor from the masternode", async () => { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + expect(newTx.nonce).to.not.exist; + expect(newTx.processor).to.not.exist; + + let response = await newTx.getNonce(); + + //Validate Nonce was retrieved + expect(response.nonce).to.exist; + expect(response.processor).to.exist; + expect(response.sender).to.exist; + expect(newTx.nonce).to.be(response.nonce); + expect(newTx.processor).to.be(response.processor); + expect(newTx.sender).to.be(response.sender); + expect(goodNetwork.hosts.includes(newTx.nonceMasternode)).to.be(true); + }); + it("throws error if vk is not correct type, missing or invalid", async () => { + let error = ""; + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.sender = "not-a-good-vk"; + try { + await newTx.getNonce(); + } catch (e) { + error = e.message; + } + expect(error).to.be(`${newTx.sender} is not a hex string.`); + }); + it("throws error if provided network is unresponsive", async () => { + let error = ""; + let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_noNonce); + try { + await newTx.getNonce(); + } catch (e) { + error = e.message; + } + expect(error).to.be(`Unable to get nonce for ${newTx.sender} on network ${newTx.url}`); + }); + }); + + context("TransactionBuilder.send()", () => { + let newTx1 = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + + it("Sends a transaction and receives a hash back", async function () { + await newTx1.getNonce(); + //Sign transaction + newTx1.sign(senderWallet.sk); + + //Validate transaction is signed + expect(newTx1.transactionSigned).to.be(true); + expect(newTx1.verifySignature()).to.be(true); + + //Send Tx + await newTx1.send(); + //console.log(newTx1.getAllInfo()) + + let txSendResult = newTx1.txSendResult; + expect(txSendResult.success).to.equal("Transaction successfully submitted to the network."); + expect(txSendResult.hash).to.exist; + expect(txSendResult.timestamp).to.exist; + }); + it("Creates ResultInfo object based on txSendResult", async function () { + let resultInfo = newTx1.resultInfo; + + expect(resultInfo.title).to.equal("Transaction Pending"); + expect(resultInfo.subtitle).to.equal("Your transaction was submitted and is being processed"); + expect(resultInfo.message).to.equal(`Tx Hash: ${newTx1.txSendResult.hash}`); + expect(resultInfo.type).to.equal("success"); + }); + it("Sends transactions and can get hash result from masternode", async function () { + this.timeout(20000); + await newTx1.checkForTransactionResult(); + let txBlockResult = newTx1.txBlockResult; + expect(txBlockResult.hash).to.equal(newTx1.txSendResult.hash); + expect(txBlockResult.result).to.equal("None"); + expect(txBlockResult.stamps_used > 0).to.be(true); + expect(txBlockResult.state.length).to.equal(2); + expect(txBlockResult.status).to.equal(0); + expect(JSON.stringify(txBlockResult.transaction)).to.equal(JSON.stringify(newTx1.tx)); + expect(txBlockResult.timestamp).to.exist; + }); + it("Creates ResultInfo object based on txBlockResult", async function () { + let resultInfo = newTx1.resultInfo; + expect(resultInfo.title).to.equal("Transaction Successful"); + expect(resultInfo.subtitle).to.equal(`Your transaction used ${resultInfo.stampsUsed} stamps`); + expect(resultInfo.message).to.equal(""); + expect(resultInfo.type).to.equal("success"); + expect(resultInfo.errorInfo).to.equal(undefined); + expect(resultInfo.stampsUsed).to.equal(newTx1.txBlockResult.stamps_used); + expect(resultInfo.statusCode).to.equal(0); + expect(resultInfo.returnResult).to.equal("None"); + }); + it("gets nonce and signs transacation automatically if sk is provided", async function () { + this.timeout(10000); + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + //Send Tx + await newTx.send(senderWallet.sk); + + let txSendResult = newTx.txSendResult; + + expect(txSendResult.success).to.equal("Transaction successfully submitted to the network."); + expect(txSendResult.hash).to.exist; + expect(txSendResult.timestamp).to.exist; + }); + it("throws error if provided network is unresponsive", async function () { + let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_withNonce); + let response = await newTx.send(senderWallet.sk); + expect(response.errors[0]).to.be( + "FetchError: request to http://badnetwork.lamden.io:18080/ failed, reason: getaddrinfo ENOTFOUND badnetwork.lamden.io" + ); + }); + it("can return execution errors list", async function () { + this.timeout(10000); + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.stampLimit = 0; + //Send Tx + await newTx.send(senderWallet.sk); + await newTx.checkForTransactionResult(); + + let resultInfo = newTx.resultInfo; + + expect(resultInfo.title).to.equal("Transaction Failed"); + expect(resultInfo.subtitle).to.equal( + `Your transaction returned status code 1 and used ${resultInfo.stampsUsed} stamps` + ); + expect(resultInfo.message).to.equal("This transaction returned 1 errors."); + expect(resultInfo.type).to.equal("error"); + expect(resultInfo.errorInfo.length).to.equal(2); + expect(resultInfo.errorInfo[0]).to.equal("This transaction returned a non-zero status code"); + expect(resultInfo.errorInfo[1].includes("The cost has exceeded the stamp supplied!")).to.be( + true + ); + expect(resultInfo.stampsUsed).to.equal(newTx.txBlockResult.stamps_used); + expect(resultInfo.statusCode).to.equal(1); + expect(resultInfo.returnResult.includes("The cost has exceeded the stamp supplied!")).to.be( + true + ); + }); + it("can return transaction validation errors list", async function () { + let sender = Lamden.wallet.new_wallet(); + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.sender = sender.vk; + + //Send Transaction + let response = await newTx.send(sender.sk); + expect(response.errors.length > 0).to.be(true); + expect(response.errors[0]).to.be( + "Transaction sender has too few stamps for this transaction." + ); + }); + it("can encode and send all annotation types", async function () { + this.timeout(15000); + valuesTxInfo.kwargs = Lamden.Encoder("object", valuesTxInfo.kwargs); + + let newTx = new Lamden.TransactionBuilder(goodNetwork, valuesTxInfo); + + //Send Transaction + let response = await newTx.send(senderWallet.sk); + + expect(response.success).to.be("Transaction successfully submitted to the network."); + + //Check Transaction + let check = await newTx.checkForTransactionResult(); + expect(check.status).to.be(0); + }); + }); +}); diff --git a/test/wallet-test.js b/test/wallet-test.js index 4924768..87964de 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -1,123 +1,125 @@ -const expect = require('expect.js'); -const Lamden = require('../dist/lamden'); -const validators = require('types-validate-assert') +const expect = require("expect.js"); +const Lamden = require("../dist/cjs/lamden"); +const validators = require("types-validate-assert"); const { validateTypes, assertTypes } = validators; const { wallet } = Lamden; -describe('Test Lamden Wallet methods', () => { +describe("Test Lamden Wallet methods", () => { + context("wallet.create_wallet_bip39: ", () => { + it("creates a bip39 / bip32 compatible lamden keypair", () => { + let newWallet = wallet.new_wallet_bip39(); - context('wallet.create_wallet_bip39: ', () => { - it('creates a bip39 / bip32 compatible lamden keypair', () => { - let newWallet = wallet.new_wallet_bip39(); + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk.length).to.be(64); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk.length).to.be(64); + expect(validateTypes.isStringWithValue(newWallet.mnemonic)).to.be(true); + expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); + expect(newWallet.derivationIndex).to.be(0); + }), + it("creates a bip39 / bip32 compatible lamden keypair from mnemonic", () => { + const mnemonic = + "ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort"; + const derivationIndex = 127; + let newWallet = wallet.new_wallet_bip39(mnemonic, derivationIndex); - expect( validateTypes.isStringHex(newWallet.vk) ).to.be( true ) - expect( newWallet.vk.length ).to.be( 64 ) - expect( validateTypes.isStringHex(newWallet.sk) ).to.be( true ) - expect( newWallet.sk.length ).to.be( 64 ) - expect( validateTypes.isStringWithValue(newWallet.mnemonic) ).to.be( true ) - expect( validateTypes.isNumber(newWallet.derivationIndex) ).to.be( true ) - expect( newWallet.derivationIndex ).to.be( 0 ) - }), + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk).to.be( + "d0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607" + ); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk).to.be( + "86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8" + ); + expect(newWallet.mnemonic).to.be(mnemonic); + expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); + expect(newWallet.derivationIndex).to.be(127); + }); + }); - it('creates a bip39 / bip32 compatible lamden keypair from mnemonic', () => { - const mnemonic = 'ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort' - const derivationIndex = 127 - let newWallet = wallet.new_wallet_bip39(mnemonic, derivationIndex); + context("wallet.new_wallet(): ", () => { + it("creates a lamden keypair", () => { + let newWallet = wallet.new_wallet(); - expect( validateTypes.isStringHex(newWallet.vk) ).to.be( true ) - expect( newWallet.vk ).to.be( 'd0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607' ) - expect( validateTypes.isStringHex(newWallet.sk) ).to.be( true ) - expect( newWallet.sk ).to.be( '86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8' ) - expect( newWallet.mnemonic ).to.be( mnemonic ) - expect( validateTypes.isNumber(newWallet.derivationIndex) ).to.be( true ) - expect( newWallet.derivationIndex ).to.be( 127 ) - }) - }) + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk.length).to.be(64); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk.length).to.be(64); + }); + }); - context('wallet.new_wallet(): ', () => { - it('creates a lamden keypair', () => { - let newWallet = wallet.new_wallet() + context("wallet.get_vk(): ", () => { + it("can create a vk from an sk", () => { + let newWallet = wallet.new_wallet(); - expect( validateTypes.isStringHex(newWallet.vk) ).to.be( true ) - expect( newWallet.vk.length ).to.be( 64 ) - expect( validateTypes.isStringHex(newWallet.sk) ).to.be( true ) - expect( newWallet.sk.length ).to.be( 64 ) - }) - }) + expect(wallet.get_vk(newWallet.sk)).to.be(newWallet.vk); + }); + }); + context("wallet.sign(): ", () => { + it("can sign a message", () => { + let newWallet = wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = wallet.sign(newWallet.sk, message); + expect(validateTypes.isStringHex(signedMessage)).to.be(true); + }); + }); - context('wallet.get_vk(): ', () => { - it('can create a vk from an sk', () => { - let newWallet = wallet.new_wallet() + context("wallet.verify(): ", () => { + it("can validate a correct signature", () => { + let newWallet = wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = wallet.sign(newWallet.sk, message); - expect( wallet.get_vk(newWallet.sk) ).to.be( newWallet.vk ) - }) - }) - context('wallet.sign(): ', () => { - it('can sign a message', () => { - let newWallet = wallet.new_wallet() - let message = new Uint8Array('this is a message') - let signedMessage = wallet.sign(newWallet.sk, message) + expect(validateTypes.isStringHex(signedMessage)).to.be(true); + expect(wallet.verify(newWallet.vk, message, signedMessage)).to.be(true); + }); + it("can validate an incorrect signature", () => { + let newWallet = wallet.new_wallet(); + let newWallet2 = wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = wallet.sign(newWallet.sk, message); - expect(validateTypes.isStringHex(signedMessage)).to.be(true) - }) - }) + expect(validateTypes.isStringHex(signedMessage)).to.be(true); + expect(wallet.verify(newWallet2.vk, message, signedMessage)).to.be(false); + }); + }); - context('wallet.verify(): ', () => { - it('can validate a correct signature', () => { - let newWallet = wallet.new_wallet() - let message = new Uint8Array('this is a message') - let signedMessage = wallet.sign(newWallet.sk, message) - - expect(validateTypes.isStringHex(signedMessage)).to.be(true) - expect( wallet.verify(newWallet.vk, message, signedMessage) ).to.be( true ) - }) - it('can validate an incorrect signature', () => { - let newWallet = wallet.new_wallet() - let newWallet2 = wallet.new_wallet() - let message = new Uint8Array('this is a message') - let signedMessage = wallet.sign(newWallet.sk, message) - - expect(validateTypes.isStringHex(signedMessage)).to.be(true) - expect( wallet.verify(newWallet2.vk, message, signedMessage) ).to.be( false ) - }) - }) - - context('wallet.create_wallet(): ', () => { - it('can create a new wallet object', () => { - let newWallet = wallet.create_wallet() - expect(newWallet).to.have.property('sign') - expect(newWallet).to.have.property('verify') - expect(newWallet).to.have.property('vk') - expect(newWallet).to.have.property('sk') - assertTypes.isStringHex(newWallet.vk) - assertTypes.isStringHex(newWallet.sk) - }) - it('can create a new wallet from a private key', () => { - let keypair = wallet.new_wallet() - let newWallet = wallet.create_wallet({sk: keypair.sk}) - expect(newWallet).to.have.property('sign') - expect(newWallet).to.have.property('verify') - expect(newWallet).to.have.property('vk') - expect(newWallet).to.have.property('sk') - assertTypes.isStringHex(newWallet.vk) - assertTypes.isStringHex(newWallet.sk) - }) - it('secret key is not accessible is set to private', () => { - let newWallet = wallet.create_wallet({keepPrivate: true}) - expect(() => assertTypes.isStringHex(newWallet.sk)).throwException(); - }) - it('wallet object can sign messages', () => { - let newWallet = wallet.create_wallet({keepPrivate: true}) - let message = new Uint8Array('this is a message') - let signedMessage = newWallet.sign(message) - expect( wallet.verify(newWallet.vk, message, signedMessage) ).to.be( true ) - }) - it('wallet object can verify a messages', () => { - let newWallet = wallet.create_wallet({keepPrivate: true}) - let message = new Uint8Array('this is a message') - let signedMessage = newWallet.sign(message) - expect( newWallet.verify(message, signedMessage) ).to.be( true ) - }) - }) -}) + context("wallet.create_wallet(): ", () => { + it("can create a new wallet object", () => { + let newWallet = wallet.create_wallet(); + expect(newWallet).to.have.property("sign"); + expect(newWallet).to.have.property("verify"); + expect(newWallet).to.have.property("vk"); + expect(newWallet).to.have.property("sk"); + assertTypes.isStringHex(newWallet.vk); + assertTypes.isStringHex(newWallet.sk); + }); + it("can create a new wallet from a private key", () => { + let keypair = wallet.new_wallet(); + let newWallet = wallet.create_wallet({ sk: keypair.sk }); + expect(newWallet).to.have.property("sign"); + expect(newWallet).to.have.property("verify"); + expect(newWallet).to.have.property("vk"); + expect(newWallet).to.have.property("sk"); + assertTypes.isStringHex(newWallet.vk); + assertTypes.isStringHex(newWallet.sk); + }); + it("secret key is not accessible is set to private", () => { + let newWallet = wallet.create_wallet({ keepPrivate: true }); + expect(() => assertTypes.isStringHex(newWallet.sk)).throwException(); + }); + it("wallet object can sign messages", () => { + let newWallet = wallet.create_wallet({ keepPrivate: true }); + let message = new Uint8Array("this is a message"); + let signedMessage = newWallet.sign(message); + expect(wallet.verify(newWallet.vk, message, signedMessage)).to.be(true); + }); + it("wallet object can verify a messages", () => { + let newWallet = wallet.create_wallet({ keepPrivate: true }); + let message = new Uint8Array("this is a message"); + let signedMessage = newWallet.sign(message); + expect(newWallet.verify(message, signedMessage)).to.be(true); + }); + }); +}); From 81f3bf6fac029f857bcf3f318ff40bfdbd6ee950 Mon Sep 17 00:00:00 2001 From: yaezah Date: Thu, 4 Nov 2021 04:23:56 -0700 Subject: [PATCH 04/10] removed sourcemap --- dist/cjs/lamden.js.map | 1 - dist/esm/lamden.js.map | 1 - rollup.config.js | 2 -- 3 files changed, 4 deletions(-) delete mode 100644 dist/cjs/lamden.js.map delete mode 100644 dist/esm/lamden.js.map diff --git a/dist/cjs/lamden.js.map b/dist/cjs/lamden.js.map deleted file mode 100644 index e247371..0000000 --- a/dist/cjs/lamden.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lamden.js","sources":["../../node_modules/types-validate-assert/dist/index.js","../../node_modules/node-cryptojs-aes/lib/core.js","../../node_modules/node-cryptojs-aes/lib/enc-base64.js","../../node_modules/node-cryptojs-aes/lib/md5.js","../../node_modules/node-cryptojs-aes/lib/evpkdf.js","../../node_modules/node-cryptojs-aes/lib/cipher-core.js","../../node_modules/node-cryptojs-aes/lib/aes.js","../../node_modules/node-cryptojs-aes/lib/jsonformatter.js","../../node_modules/node-cryptojs-aes/cryptojs.js","../../src/js/helpers.js","../../src/js/wallet.js","../../src/js/eventEmitter.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/bignumber.js/bignumber.mjs","../../src/js/encoder.js","../../src/js/masternode-api.js","../../src/js/network.js","../../src/js/transactionBuilder.js","../../src/js/transactionBatcher.js","../../src/js/keystore.js","../../src/index.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('index', ['exports'], factory) :\n (global = global || self, factory(global.index = {}));\n}(this, (function (exports) { 'use strict';\n\n class ValidateTypes {\n constructor() {}\n\n getType(value) {\n return Object.prototype.toString.call(value);\n }\n\n getClassName(value) {\n try {\n return value.constructor.name;\n } catch (e) {}\n\n return this.getType(value);\n } //Validation functions\n\n\n isObject(value) {\n if (this.getType(value) === \"[object Object]\") return true;\n return false;\n }\n\n isFunction(value) {\n if (this.getType(value) === \"[object Function]\") return true;\n return false;\n }\n\n isString(value) {\n if (this.getType(value) === \"[object String]\") return true;\n return false;\n }\n\n isBoolean(value) {\n if (this.getType(value) === \"[object Boolean]\") return true;\n return false;\n }\n\n isArray(value) {\n if (this.getType(value) === \"[object Array]\") return true;\n return false;\n }\n\n isNumber(value) {\n if (this.getType(value) === \"[object Number]\") return true;\n return false;\n }\n\n isInteger(value) {\n if (this.getType(value) === \"[object Number]\" && Number.isInteger(value)) return true;\n return false;\n }\n\n isRegEx(value) {\n if (this.getType(value) === \"[object RegExp]\") return true;\n return false;\n }\n\n isStringHex(value) {\n if (!this.isStringWithValue(value)) return false;\n let hexRegEx = /([0-9]|[a-f])/gim;\n return (value.match(hexRegEx) || []).length === value.length;\n }\n\n hasKeys(value, keys) {\n if (keys.map(key => key in value).includes(false)) return false;\n return true;\n }\n\n isStringWithValue(value) {\n if (this.isString(value) && value !== '') return true;\n return false;\n }\n\n isObjectWithKeys(value) {\n if (this.isObject(value) && Object.keys(value).length > 0) return true;\n return false;\n }\n\n isArrayWithValues(value) {\n if (this.isArray(value) && value.length > 0) return true;\n return false;\n }\n\n isSpecificClass(value, className) {\n if (!this.isObject(value)) return false;\n if (this.getClassName(value) !== className) return false;\n return true;\n }\n\n }\n\n class AssertTypes {\n constructor() {\n this.validate = new ValidateTypes();\n } //Validation functions\n\n\n isObject(value) {\n if (!this.validate.isObject(value)) {\n throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isFunction(value) {\n if (!this.validate.isFunction(value)) {\n throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isString(value) {\n if (!this.validate.isString(value)) {\n throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isBoolean(value) {\n if (!this.validate.isBoolean(value)) {\n throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isArray(value) {\n if (!this.validate.isArray(value)) {\n throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isNumber(value) {\n if (!this.validate.isNumber(value)) {\n throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isInteger(value) {\n if (!this.validate.isInteger(value)) {\n throw new TypeError(`Expected \"${value}\" to be an integer but got non-integer value`);\n }\n\n return true;\n }\n\n isRegEx(value) {\n if (!this.validate.isRegEx(value)) {\n throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isStringHex(value) {\n if (!this.validate.isStringHex(value)) {\n throw new TypeError(`Expected \"${value}\" to be hex but got non-hex value`);\n }\n\n return true;\n }\n\n hasKeys(value, keys) {\n if (!this.validate.hasKeys(value, keys)) {\n throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`);\n }\n\n return true;\n }\n\n isStringWithValue(value) {\n if (!this.validate.isStringWithValue(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object String] and not empty`);\n }\n\n return true;\n }\n\n isObjectWithKeys(value) {\n if (!this.validate.isObjectWithKeys(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Object] and have keys`);\n }\n\n return true;\n }\n\n isArrayWithValues(value) {\n if (!this.validate.isArrayWithValues(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Array] and not empty`);\n }\n\n return true;\n }\n\n isSpecificClass(value, className) {\n if (!this.validate.isSpecificClass(value, className)) {\n throw new TypeError(`Expected Object Class to be \"${className}\" but got ${this.validate.getClassName(value)}`);\n }\n\n return true;\n }\n\n }\n\n const validateTypes = new ValidateTypes();\n const assertTypes = new AssertTypes();\n\n exports.assertTypes = assertTypes;\n exports.validateTypes = validateTypes;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * CryptoJS core components.\r\n */\r\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n /**\r\n * CryptoJS namespace.\r\n */\r\n var C = {};\r\n\r\n /**\r\n * Library namespace.\r\n */\r\n var C_lib = C.lib = {};\r\n\r\n /**\r\n * Base object for prototypal inheritance.\r\n */\r\n var Base = C_lib.Base = (function () {\r\n function F() {}\r\n\r\n return {\r\n /**\r\n * Creates a new object that inherits from this object.\r\n *\r\n * @param {Object} overrides Properties to copy into the new object.\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * field: 'value',\r\n *\r\n * method: function () {\r\n * }\r\n * });\r\n */\r\n extend: function (overrides) {\r\n // Spawn\r\n F.prototype = this;\r\n var subtype = new F();\r\n\r\n // Augment\r\n if (overrides) {\r\n subtype.mixIn(overrides);\r\n }\r\n\r\n // Create default initializer\r\n if (!subtype.hasOwnProperty('init')) {\r\n subtype.init = function () {\r\n subtype.$super.init.apply(this, arguments);\r\n };\r\n }\r\n\r\n // Initializer's prototype is the subtype object\r\n subtype.init.prototype = subtype;\r\n\r\n // Reference supertype\r\n subtype.$super = this;\r\n\r\n return subtype;\r\n },\r\n\r\n /**\r\n * Extends this object and runs the init method.\r\n * Arguments to create() will be passed to init().\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var instance = MyType.create();\r\n */\r\n create: function () {\r\n var instance = this.extend();\r\n instance.init.apply(instance, arguments);\r\n\r\n return instance;\r\n },\r\n\r\n /**\r\n * Initializes a newly created object.\r\n * Override this method to add some logic when your objects are created.\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * init: function () {\r\n * // ...\r\n * }\r\n * });\r\n */\r\n init: function () {\r\n },\r\n\r\n /**\r\n * Copies properties into this object.\r\n *\r\n * @param {Object} properties The properties to mix in.\r\n *\r\n * @example\r\n *\r\n * MyType.mixIn({\r\n * field: 'value'\r\n * });\r\n */\r\n mixIn: function (properties) {\r\n for (var propertyName in properties) {\r\n if (properties.hasOwnProperty(propertyName)) {\r\n this[propertyName] = properties[propertyName];\r\n }\r\n }\r\n\r\n // IE won't copy toString using the loop above\r\n if (properties.hasOwnProperty('toString')) {\r\n this.toString = properties.toString;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = instance.clone();\r\n */\r\n clone: function () {\r\n return this.init.prototype.extend(this);\r\n }\r\n };\r\n }());\r\n\r\n /**\r\n * An array of 32-bit words.\r\n *\r\n * @property {Array} words The array of 32-bit words.\r\n * @property {number} sigBytes The number of significant bytes in this word array.\r\n */\r\n var WordArray = C_lib.WordArray = Base.extend({\r\n /**\r\n * Initializes a newly created word array.\r\n *\r\n * @param {Array} words (Optional) An array of 32-bit words.\r\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.create();\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n */\r\n init: function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes != undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 4;\r\n }\r\n },\r\n\r\n /**\r\n * Converts this word array to a string.\r\n *\r\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n *\r\n * @return {string} The stringified word array.\r\n *\r\n * @example\r\n *\r\n * var string = wordArray + '';\r\n * var string = wordArray.toString();\r\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n */\r\n toString: function (encoder) {\r\n return (encoder || Hex).stringify(this);\r\n },\r\n\r\n /**\r\n * Concatenates a word array to this word array.\r\n *\r\n * @param {WordArray} wordArray The word array to append.\r\n *\r\n * @return {WordArray} This word array.\r\n *\r\n * @example\r\n *\r\n * wordArray1.concat(wordArray2);\r\n */\r\n concat: function (wordArray) {\r\n // Shortcuts\r\n var thisWords = this.words;\r\n var thatWords = wordArray.words;\r\n var thisSigBytes = this.sigBytes;\r\n var thatSigBytes = wordArray.sigBytes;\r\n\r\n // Clamp excess bits\r\n this.clamp();\r\n\r\n // Concat\r\n if (thisSigBytes % 4) {\r\n // Copy one byte at a time\r\n for (var i = 0; i < thatSigBytes; i++) {\r\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n }\r\n } else if (thatWords.length > 0xffff) {\r\n // Copy one word at a time\r\n for (var i = 0; i < thatSigBytes; i += 4) {\r\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n }\r\n } else {\r\n // Copy all words at once\r\n thisWords.push.apply(thisWords, thatWords);\r\n }\r\n this.sigBytes += thatSigBytes;\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Removes insignificant bits.\r\n *\r\n * @example\r\n *\r\n * wordArray.clamp();\r\n */\r\n clamp: function () {\r\n // Shortcuts\r\n var words = this.words;\r\n var sigBytes = this.sigBytes;\r\n\r\n // Clamp\r\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n words.length = Math.ceil(sigBytes / 4);\r\n },\r\n\r\n /**\r\n * Creates a copy of this word array.\r\n *\r\n * @return {WordArray} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = wordArray.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone.words = this.words.slice(0);\r\n\r\n return clone;\r\n },\r\n\r\n /**\r\n * Creates a word array filled with random bytes.\r\n *\r\n * @param {number} nBytes The number of random bytes to generate.\r\n *\r\n * @return {WordArray} The random word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n */\r\n random: function (nBytes) {\r\n var words = [];\r\n for (var i = 0; i < nBytes; i += 4) {\r\n words.push((Math.random() * 0x100000000) | 0);\r\n }\r\n\r\n return new WordArray.init(words, nBytes);\r\n }\r\n });\r\n\r\n /**\r\n * Encoder namespace.\r\n */\r\n var C_enc = C.enc = {};\r\n\r\n /**\r\n * Hex encoding strategy.\r\n */\r\n var Hex = C_enc.Hex = {\r\n /**\r\n * Converts a word array to a hex string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The hex string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var hexChars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n hexChars.push((bite >>> 4).toString(16));\r\n hexChars.push((bite & 0x0f).toString(16));\r\n }\r\n\r\n return hexChars.join('');\r\n },\r\n\r\n /**\r\n * Converts a hex string to a word array.\r\n *\r\n * @param {string} hexStr The hex string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n */\r\n parse: function (hexStr) {\r\n // Shortcut\r\n var hexStrLength = hexStr.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < hexStrLength; i += 2) {\r\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n }\r\n\r\n return new WordArray.init(words, hexStrLength / 2);\r\n }\r\n };\r\n\r\n /**\r\n * Latin1 encoding strategy.\r\n */\r\n var Latin1 = C_enc.Latin1 = {\r\n /**\r\n * Converts a word array to a Latin1 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The Latin1 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var latin1Chars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n },\r\n\r\n /**\r\n * Converts a Latin1 string to a word array.\r\n *\r\n * @param {string} latin1Str The Latin1 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n */\r\n parse: function (latin1Str) {\r\n // Shortcut\r\n var latin1StrLength = latin1Str.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < latin1StrLength; i++) {\r\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n }\r\n\r\n return new WordArray.init(words, latin1StrLength);\r\n }\r\n };\r\n\r\n /**\r\n * UTF-8 encoding strategy.\r\n */\r\n var Utf8 = C_enc.Utf8 = {\r\n /**\r\n * Converts a word array to a UTF-8 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The UTF-8 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n try {\r\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n },\r\n\r\n /**\r\n * Converts a UTF-8 string to a word array.\r\n *\r\n * @param {string} utf8Str The UTF-8 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n */\r\n parse: function (utf8Str) {\r\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n }\r\n };\r\n\r\n /**\r\n * Abstract buffered block algorithm template.\r\n *\r\n * The property blockSize must be implemented in a concrete subtype.\r\n *\r\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n */\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n /**\r\n * Resets this block algorithm's data buffer to its initial state.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm.reset();\r\n */\r\n reset: function () {\r\n // Initial values\r\n this._data = new WordArray.init();\r\n this._nDataBytes = 0;\r\n },\r\n\r\n /**\r\n * Adds new data to this block algorithm's buffer.\r\n *\r\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm._append('data');\r\n * bufferedBlockAlgorithm._append(wordArray);\r\n */\r\n _append: function (data) {\r\n // Convert string to WordArray, else assume WordArray already\r\n if (typeof data == 'string') {\r\n data = Utf8.parse(data);\r\n }\r\n\r\n // Append\r\n this._data.concat(data);\r\n this._nDataBytes += data.sigBytes;\r\n },\r\n\r\n /**\r\n * Processes available data blocks.\r\n *\r\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n *\r\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n *\r\n * @return {WordArray} The processed data.\r\n *\r\n * @example\r\n *\r\n * var processedData = bufferedBlockAlgorithm._process();\r\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n */\r\n _process: function (doFlush) {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n var dataSigBytes = data.sigBytes;\r\n var blockSize = this.blockSize;\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count blocks ready\r\n var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n if (doFlush) {\r\n // Round up to include partial blocks\r\n nBlocksReady = Math.ceil(nBlocksReady);\r\n } else {\r\n // Round down to include only full blocks,\r\n // less the number of blocks that must remain in the buffer\r\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n }\r\n\r\n // Count words ready\r\n var nWordsReady = nBlocksReady * blockSize;\r\n\r\n // Count bytes ready\r\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n // Process blocks\r\n if (nWordsReady) {\r\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n // Perform concrete-algorithm logic\r\n this._doProcessBlock(dataWords, offset);\r\n }\r\n\r\n // Remove processed words\r\n var processedWords = dataWords.splice(0, nWordsReady);\r\n data.sigBytes -= nBytesReady;\r\n }\r\n\r\n // Return processed words\r\n return new WordArray.init(processedWords, nBytesReady);\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = bufferedBlockAlgorithm.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone._data = this._data.clone();\r\n\r\n return clone;\r\n },\r\n\r\n _minBufferSize: 0\r\n });\r\n\r\n /**\r\n * Abstract hasher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n */\r\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Initializes a newly created hasher.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n *\r\n * @example\r\n *\r\n * var hasher = CryptoJS.algo.SHA256.create();\r\n */\r\n init: function (cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this hasher to its initial state.\r\n *\r\n * @example\r\n *\r\n * hasher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-hasher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Updates this hasher with a message.\r\n *\r\n * @param {WordArray|string} messageUpdate The message to append.\r\n *\r\n * @return {Hasher} This hasher.\r\n *\r\n * @example\r\n *\r\n * hasher.update('message');\r\n * hasher.update(wordArray);\r\n */\r\n update: function (messageUpdate) {\r\n // Append\r\n this._append(messageUpdate);\r\n\r\n // Update the hash\r\n this._process();\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Finalizes the hash computation.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @example\r\n *\r\n * var hash = hasher.finalize();\r\n * var hash = hasher.finalize('message');\r\n * var hash = hasher.finalize(wordArray);\r\n */\r\n finalize: function (messageUpdate) {\r\n // Final message update\r\n if (messageUpdate) {\r\n this._append(messageUpdate);\r\n }\r\n\r\n // Perform concrete-hasher logic\r\n var hash = this._doFinalize();\r\n\r\n return hash;\r\n },\r\n\r\n blockSize: 512/32,\r\n\r\n /**\r\n * Creates a shortcut function to a hasher's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to create a helper for.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHelper: function (hasher) {\r\n return function (message, cfg) {\r\n return new hasher.init(cfg).finalize(message);\r\n };\r\n },\r\n\r\n /**\r\n * Creates a shortcut function to the HMAC's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHmacHelper: function (hasher) {\r\n return function (message, key) {\r\n return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n };\r\n }\r\n });\r\n\r\n /**\r\n * Algorithm namespace.\r\n */\r\n var C_algo = C.algo = {};\r\n\r\n return C;\r\n}(Math));\r\n\r\nexports.CryptoJS = CryptoJS;\r\n","var CryptoJS = require('./core').CryptoJS;\n\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n}());\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (Math) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var WordArray = C_lib.WordArray;\r\n var Hasher = C_lib.Hasher;\r\n var C_algo = C.algo;\r\n\r\n // Constants table\r\n var T = [];\r\n\r\n // Compute constants\r\n (function () {\r\n for (var i = 0; i < 64; i++) {\r\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n }\r\n }());\r\n\r\n /**\r\n * MD5 hash algorithm.\r\n */\r\n var MD5 = C_algo.MD5 = Hasher.extend({\r\n _doReset: function () {\r\n this._hash = new WordArray.init([\r\n 0x67452301, 0xefcdab89,\r\n 0x98badcfe, 0x10325476\r\n ]);\r\n },\r\n\r\n _doProcessBlock: function (M, offset) {\r\n // Swap endian\r\n for (var i = 0; i < 16; i++) {\r\n // Shortcuts\r\n var offset_i = offset + i;\r\n var M_offset_i = M[offset_i];\r\n\r\n M[offset_i] = (\r\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n );\r\n }\r\n\r\n // Shortcuts\r\n var H = this._hash.words;\r\n\r\n var M_offset_0 = M[offset + 0];\r\n var M_offset_1 = M[offset + 1];\r\n var M_offset_2 = M[offset + 2];\r\n var M_offset_3 = M[offset + 3];\r\n var M_offset_4 = M[offset + 4];\r\n var M_offset_5 = M[offset + 5];\r\n var M_offset_6 = M[offset + 6];\r\n var M_offset_7 = M[offset + 7];\r\n var M_offset_8 = M[offset + 8];\r\n var M_offset_9 = M[offset + 9];\r\n var M_offset_10 = M[offset + 10];\r\n var M_offset_11 = M[offset + 11];\r\n var M_offset_12 = M[offset + 12];\r\n var M_offset_13 = M[offset + 13];\r\n var M_offset_14 = M[offset + 14];\r\n var M_offset_15 = M[offset + 15];\r\n\r\n // Working varialbes\r\n var a = H[0];\r\n var b = H[1];\r\n var c = H[2];\r\n var d = H[3];\r\n\r\n // Computation\r\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n // Intermediate hash value\r\n H[0] = (H[0] + a) | 0;\r\n H[1] = (H[1] + b) | 0;\r\n H[2] = (H[2] + c) | 0;\r\n H[3] = (H[3] + d) | 0;\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n\r\n var nBitsTotal = this._nDataBytes * 8;\r\n var nBitsLeft = data.sigBytes * 8;\r\n\r\n // Add padding\r\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n var nBitsTotalL = nBitsTotal;\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n );\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n );\r\n\r\n data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n // Hash final blocks\r\n this._process();\r\n\r\n // Shortcuts\r\n var hash = this._hash;\r\n var H = hash.words;\r\n\r\n // Swap endian\r\n for (var i = 0; i < 4; i++) {\r\n // Shortcut\r\n var H_i = H[i];\r\n\r\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n }\r\n\r\n // Return final computed hash\r\n return hash;\r\n },\r\n\r\n clone: function () {\r\n var clone = Hasher.clone.call(this);\r\n clone._hash = this._hash.clone();\r\n\r\n return clone;\r\n }\r\n });\r\n\r\n function FF(a, b, c, d, x, s, t) {\r\n var n = a + ((b & c) | (~b & d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function GG(a, b, c, d, x, s, t) {\r\n var n = a + ((b & d) | (c & ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function HH(a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function II(a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n /**\r\n * Shortcut function to the hasher's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hash = CryptoJS.MD5('message');\r\n * var hash = CryptoJS.MD5(wordArray);\r\n */\r\n C.MD5 = Hasher._createHelper(MD5);\r\n\r\n /**\r\n * Shortcut function to the HMAC's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n * @param {WordArray|string} key The secret key.\r\n *\r\n * @return {WordArray} The HMAC.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hmac = CryptoJS.HmacMD5(message, key);\r\n */\r\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n}(Math));\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var C_algo = C.algo;\r\n var MD5 = C_algo.MD5;\r\n\r\n /**\r\n * This key derivation function is meant to conform with EVP_BytesToKey.\r\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n */\r\n var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n * @property {number} iterations The number of iterations to perform. Default: 1\r\n */\r\n cfg: Base.extend({\r\n keySize: 128/32,\r\n hasher: MD5,\r\n iterations: 1\r\n }),\r\n\r\n /**\r\n * Initializes a newly created key derivation function.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n *\r\n * @example\r\n *\r\n * var kdf = CryptoJS.algo.EvpKDF.create();\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n */\r\n init: function (cfg) {\r\n this.cfg = this.cfg.extend(cfg);\r\n },\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @example\r\n *\r\n * var key = kdf.compute(password, salt);\r\n */\r\n compute: function (password, salt) {\r\n // Shortcut\r\n var cfg = this.cfg;\r\n\r\n // Init hasher\r\n var hasher = cfg.hasher.create();\r\n\r\n // Initial values\r\n var derivedKey = WordArray.create();\r\n\r\n // Shortcuts\r\n var derivedKeyWords = derivedKey.words;\r\n var keySize = cfg.keySize;\r\n var iterations = cfg.iterations;\r\n\r\n // Generate key\r\n while (derivedKeyWords.length < keySize) {\r\n if (block) {\r\n hasher.update(block);\r\n }\r\n var block = hasher.update(password).finalize(salt);\r\n hasher.reset();\r\n\r\n // Iterations\r\n for (var i = 1; i < iterations; i++) {\r\n block = hasher.finalize(block);\r\n hasher.reset();\r\n }\r\n\r\n derivedKey.concat(block);\r\n }\r\n derivedKey.sigBytes = keySize * 4;\r\n\r\n return derivedKey;\r\n }\r\n });\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var key = CryptoJS.EvpKDF(password, salt);\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n */\r\n C.EvpKDF = function (password, salt, cfg) {\r\n return EvpKDF.create(cfg).compute(password, salt);\r\n };\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * Cipher core components.\r\n */\r\nCryptoJS.lib.Cipher || (function (undefined) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n var C_enc = C.enc;\r\n var Utf8 = C_enc.Utf8;\r\n var Base64 = C_enc.Base64;\r\n var C_algo = C.algo;\r\n var EvpKDF = C_algo.EvpKDF;\r\n\r\n /**\r\n * Abstract base cipher template.\r\n *\r\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n */\r\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {WordArray} iv The IV to use for this operation.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Creates this cipher in encryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createEncryptor: function (key, cfg) {\r\n return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Creates this cipher in decryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createDecryptor: function (key, cfg) {\r\n return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Initializes a newly created cipher.\r\n *\r\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n */\r\n init: function (xformMode, key, cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Store transform mode and key\r\n this._xformMode = xformMode;\r\n this._key = key;\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this cipher to its initial state.\r\n *\r\n * @example\r\n *\r\n * cipher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-cipher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Adds data to be encrypted or decrypted.\r\n *\r\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.process('data');\r\n * var encrypted = cipher.process(wordArray);\r\n */\r\n process: function (dataUpdate) {\r\n // Append\r\n this._append(dataUpdate);\r\n\r\n // Process available blocks\r\n return this._process();\r\n },\r\n\r\n /**\r\n * Finalizes the encryption or decryption process.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after final processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.finalize();\r\n * var encrypted = cipher.finalize('data');\r\n * var encrypted = cipher.finalize(wordArray);\r\n */\r\n finalize: function (dataUpdate) {\r\n // Final data update\r\n if (dataUpdate) {\r\n this._append(dataUpdate);\r\n }\r\n\r\n // Perform concrete-cipher logic\r\n var finalProcessedData = this._doFinalize();\r\n\r\n return finalProcessedData;\r\n },\r\n\r\n keySize: 128/32,\r\n\r\n ivSize: 128/32,\r\n\r\n _ENC_XFORM_MODE: 1,\r\n\r\n _DEC_XFORM_MODE: 2,\r\n\r\n /**\r\n * Creates shortcut functions to a cipher's object interface.\r\n *\r\n * @param {Cipher} cipher The cipher to create a helper for.\r\n *\r\n * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n */\r\n _createHelper: (function () {\r\n function selectCipherStrategy(key) {\r\n if (typeof key == 'string') {\r\n return PasswordBasedCipher;\r\n } else {\r\n return SerializableCipher;\r\n }\r\n }\r\n\r\n return function (cipher) {\r\n return {\r\n encrypt: function (message, key, cfg) {\r\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n },\r\n\r\n decrypt: function (ciphertext, key, cfg) {\r\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n }\r\n };\r\n };\r\n }())\r\n });\r\n\r\n /**\r\n * Abstract base stream cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n */\r\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n _doFinalize: function () {\r\n // Process partial blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 1\r\n });\r\n\r\n /**\r\n * Mode namespace.\r\n */\r\n var C_mode = C.mode = {};\r\n\r\n /**\r\n * Abstract base block cipher mode template.\r\n */\r\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n /**\r\n * Creates this mode for encryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n */\r\n createEncryptor: function (cipher, iv) {\r\n return this.Encryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Creates this mode for decryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n */\r\n createDecryptor: function (cipher, iv) {\r\n return this.Decryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Initializes a newly created mode.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n */\r\n init: function (cipher, iv) {\r\n this._cipher = cipher;\r\n this._iv = iv;\r\n }\r\n });\r\n\r\n /**\r\n * Cipher Block Chaining mode.\r\n */\r\n var CBC = C_mode.CBC = (function () {\r\n /**\r\n * Abstract base CBC mode.\r\n */\r\n var CBC = BlockCipherMode.extend();\r\n\r\n /**\r\n * CBC encryptor.\r\n */\r\n CBC.Encryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // XOR and encrypt\r\n xorBlock.call(this, words, offset, blockSize);\r\n cipher.encryptBlock(words, offset);\r\n\r\n // Remember this block to use with next block\r\n this._prevBlock = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n /**\r\n * CBC decryptor.\r\n */\r\n CBC.Decryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // Remember this block to use with next block\r\n var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n // Decrypt and XOR\r\n cipher.decryptBlock(words, offset);\r\n xorBlock.call(this, words, offset, blockSize);\r\n\r\n // This block becomes the previous block\r\n this._prevBlock = thisBlock;\r\n }\r\n });\r\n\r\n function xorBlock(words, offset, blockSize) {\r\n // Shortcut\r\n var iv = this._iv;\r\n\r\n // Choose mixing block\r\n if (iv) {\r\n var block = iv;\r\n\r\n // Remove IV for subsequent blocks\r\n this._iv = undefined;\r\n } else {\r\n var block = this._prevBlock;\r\n }\r\n\r\n // XOR blocks\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return CBC;\r\n }());\r\n\r\n /**\r\n * Padding namespace.\r\n */\r\n var C_pad = C.pad = {};\r\n\r\n /**\r\n * PKCS #5/7 padding strategy.\r\n */\r\n var Pkcs7 = C_pad.Pkcs7 = {\r\n /**\r\n * Pads data using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to pad.\r\n * @param {number} blockSize The multiple that the data should be padded to.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n */\r\n pad: function (data, blockSize) {\r\n // Shortcut\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count padding bytes\r\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n // Create padding word\r\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n // Create padding\r\n var paddingWords = [];\r\n for (var i = 0; i < nPaddingBytes; i += 4) {\r\n paddingWords.push(paddingWord);\r\n }\r\n var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n // Add padding\r\n data.concat(padding);\r\n },\r\n\r\n /**\r\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to unpad.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n */\r\n unpad: function (data) {\r\n // Get number of padding bytes from last byte\r\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n // Remove padding\r\n data.sigBytes -= nPaddingBytes;\r\n }\r\n };\r\n\r\n /**\r\n * Abstract base block cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n */\r\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Mode} mode The block mode to use. Default: CBC\r\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n */\r\n cfg: Cipher.cfg.extend({\r\n mode: CBC,\r\n padding: Pkcs7\r\n }),\r\n\r\n reset: function () {\r\n // Reset cipher\r\n Cipher.reset.call(this);\r\n\r\n // Shortcuts\r\n var cfg = this.cfg;\r\n var iv = cfg.iv;\r\n var mode = cfg.mode;\r\n\r\n // Reset block mode\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n var modeCreator = mode.createEncryptor;\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n var modeCreator = mode.createDecryptor;\r\n\r\n // Keep at least one block in the buffer for unpadding\r\n this._minBufferSize = 1;\r\n }\r\n this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n },\r\n\r\n _doProcessBlock: function (words, offset) {\r\n this._mode.processBlock(words, offset);\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcut\r\n var padding = this.cfg.padding;\r\n\r\n // Finalize\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n // Pad data\r\n padding.pad(this._data, this.blockSize);\r\n\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n // Unpad data\r\n padding.unpad(finalProcessedBlocks);\r\n }\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 128/32\r\n });\r\n\r\n /**\r\n * A collection of cipher parameters.\r\n *\r\n * @property {WordArray} ciphertext The raw ciphertext.\r\n * @property {WordArray} key The key to this ciphertext.\r\n * @property {WordArray} iv The IV used in the ciphering operation.\r\n * @property {WordArray} salt The salt used with a key derivation function.\r\n * @property {Cipher} algorithm The cipher algorithm.\r\n * @property {Mode} mode The block mode used in the ciphering operation.\r\n * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n * @property {number} blockSize The block size of the cipher.\r\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n */\r\n var CipherParams = C_lib.CipherParams = Base.extend({\r\n /**\r\n * Initializes a newly created cipher params object.\r\n *\r\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n * ciphertext: ciphertextWordArray,\r\n * key: keyWordArray,\r\n * iv: ivWordArray,\r\n * salt: saltWordArray,\r\n * algorithm: CryptoJS.algo.AES,\r\n * mode: CryptoJS.mode.CBC,\r\n * padding: CryptoJS.pad.PKCS7,\r\n * blockSize: 4,\r\n * formatter: CryptoJS.format.OpenSSL\r\n * });\r\n */\r\n init: function (cipherParams) {\r\n this.mixIn(cipherParams);\r\n },\r\n\r\n /**\r\n * Converts this cipher params object to a string.\r\n *\r\n * @param {Format} formatter (Optional) The formatting strategy to use.\r\n *\r\n * @return {string} The stringified cipher params.\r\n *\r\n * @throws Error If neither the formatter nor the default formatter is set.\r\n *\r\n * @example\r\n *\r\n * var string = cipherParams + '';\r\n * var string = cipherParams.toString();\r\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n */\r\n toString: function (formatter) {\r\n return (formatter || this.formatter).stringify(this);\r\n }\r\n });\r\n\r\n /**\r\n * Format namespace.\r\n */\r\n var C_format = C.format = {};\r\n\r\n /**\r\n * OpenSSL formatting strategy.\r\n */\r\n var OpenSSLFormatter = C_format.OpenSSL = {\r\n /**\r\n * Converts a cipher params object to an OpenSSL-compatible string.\r\n *\r\n * @param {CipherParams} cipherParams The cipher params object.\r\n *\r\n * @return {string} The OpenSSL-compatible string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n */\r\n stringify: function (cipherParams) {\r\n // Shortcuts\r\n var ciphertext = cipherParams.ciphertext;\r\n var salt = cipherParams.salt;\r\n\r\n // Format\r\n if (salt) {\r\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n } else {\r\n var wordArray = ciphertext;\r\n }\r\n\r\n return wordArray.toString(Base64);\r\n },\r\n\r\n /**\r\n * Converts an OpenSSL-compatible string to a cipher params object.\r\n *\r\n * @param {string} openSSLStr The OpenSSL-compatible string.\r\n *\r\n * @return {CipherParams} The cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n */\r\n parse: function (openSSLStr) {\r\n // Parse base64\r\n var ciphertext = Base64.parse(openSSLStr);\r\n\r\n // Shortcut\r\n var ciphertextWords = ciphertext.words;\r\n\r\n // Test for salt\r\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n // Extract salt\r\n var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n // Remove salt from ciphertext\r\n ciphertextWords.splice(0, 4);\r\n ciphertext.sigBytes -= 16;\r\n }\r\n\r\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n */\r\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n */\r\n cfg: Base.extend({\r\n format: OpenSSLFormatter\r\n }),\r\n\r\n /**\r\n * Encrypts a message.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Encrypt\r\n var encryptor = cipher.createEncryptor(key, cfg);\r\n var ciphertext = encryptor.finalize(message);\r\n\r\n // Shortcut\r\n var cipherCfg = encryptor.cfg;\r\n\r\n // Create and return serializable cipher params\r\n return CipherParams.create({\r\n ciphertext: ciphertext,\r\n key: key,\r\n iv: cipherCfg.iv,\r\n algorithm: cipher,\r\n mode: cipherCfg.mode,\r\n padding: cipherCfg.padding,\r\n blockSize: cipher.blockSize,\r\n formatter: cfg.format\r\n });\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Decrypt\r\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n return plaintext;\r\n },\r\n\r\n /**\r\n * Converts serialized ciphertext to CipherParams,\r\n * else assumed CipherParams already and returns ciphertext unchanged.\r\n *\r\n * @param {CipherParams|string} ciphertext The ciphertext.\r\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n *\r\n * @return {CipherParams} The unserialized ciphertext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n */\r\n _parse: function (ciphertext, format) {\r\n if (typeof ciphertext == 'string') {\r\n return format.parse(ciphertext, this);\r\n } else {\r\n return ciphertext;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Key derivation function namespace.\r\n */\r\n var C_kdf = C.kdf = {};\r\n\r\n /**\r\n * OpenSSL key derivation function.\r\n */\r\n var OpenSSLKdf = C_kdf.OpenSSL = {\r\n /**\r\n * Derives a key and IV from a password.\r\n *\r\n * @param {string} password The password to derive from.\r\n * @param {number} keySize The size in words of the key to generate.\r\n * @param {number} ivSize The size in words of the IV to generate.\r\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n *\r\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n */\r\n execute: function (password, keySize, ivSize, salt) {\r\n // Generate random salt\r\n if (!salt) {\r\n salt = WordArray.random(64/8);\r\n }\r\n\r\n // Derive key and IV\r\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n // Separate key and IV\r\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n key.sigBytes = keySize * 4;\r\n\r\n // Return params\r\n return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A serializable cipher wrapper that derives the key from a password,\r\n * and returns ciphertext as a serializable cipher params object.\r\n */\r\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n */\r\n cfg: SerializableCipher.cfg.extend({\r\n kdf: OpenSSLKdf\r\n }),\r\n\r\n /**\r\n * Encrypts a message using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Encrypt\r\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n // Mix in derived params\r\n ciphertext.mixIn(derivedParams);\r\n\r\n return ciphertext;\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Decrypt\r\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n return plaintext;\r\n }\r\n });\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var BlockCipher = C_lib.BlockCipher;\r\n var C_algo = C.algo;\r\n\r\n // Lookup tables\r\n var SBOX = [];\r\n var INV_SBOX = [];\r\n var SUB_MIX_0 = [];\r\n var SUB_MIX_1 = [];\r\n var SUB_MIX_2 = [];\r\n var SUB_MIX_3 = [];\r\n var INV_SUB_MIX_0 = [];\r\n var INV_SUB_MIX_1 = [];\r\n var INV_SUB_MIX_2 = [];\r\n var INV_SUB_MIX_3 = [];\r\n\r\n // Compute lookup tables\r\n (function () {\r\n // Compute double table\r\n var d = [];\r\n for (var i = 0; i < 256; i++) {\r\n if (i < 128) {\r\n d[i] = i << 1;\r\n } else {\r\n d[i] = (i << 1) ^ 0x11b;\r\n }\r\n }\r\n\r\n // Walk GF(2^8)\r\n var x = 0;\r\n var xi = 0;\r\n for (var i = 0; i < 256; i++) {\r\n // Compute sbox\r\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n SBOX[x] = sx;\r\n INV_SBOX[sx] = x;\r\n\r\n // Compute multiplication\r\n var x2 = d[x];\r\n var x4 = d[x2];\r\n var x8 = d[x4];\r\n\r\n // Compute sub bytes, mix columns tables\r\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n SUB_MIX_3[x] = t;\r\n\r\n // Compute inv sub bytes, inv mix columns tables\r\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n INV_SUB_MIX_3[sx] = t;\r\n\r\n // Compute next counter\r\n if (!x) {\r\n x = xi = 1;\r\n } else {\r\n x = x2 ^ d[d[d[x8 ^ x2]]];\r\n xi ^= d[d[xi]];\r\n }\r\n }\r\n }());\r\n\r\n // Precomputed Rcon lookup\r\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n /**\r\n * AES block cipher algorithm.\r\n */\r\n var AES = C_algo.AES = BlockCipher.extend({\r\n _doReset: function () {\r\n // Shortcuts\r\n var key = this._key;\r\n var keyWords = key.words;\r\n var keySize = key.sigBytes / 4;\r\n\r\n // Compute number of rounds\r\n var nRounds = this._nRounds = keySize + 6\r\n\r\n // Compute number of key schedule rows\r\n var ksRows = (nRounds + 1) * 4;\r\n\r\n // Compute key schedule\r\n var keySchedule = this._keySchedule = [];\r\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n if (ksRow < keySize) {\r\n keySchedule[ksRow] = keyWords[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 1];\r\n\r\n if (!(ksRow % keySize)) {\r\n // Rot word\r\n t = (t << 8) | (t >>> 24);\r\n\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n // Mix Rcon\r\n t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n } else if (keySize > 6 && ksRow % keySize == 4) {\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n }\r\n\r\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n }\r\n }\r\n\r\n // Compute inv key schedule\r\n var invKeySchedule = this._invKeySchedule = [];\r\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n var ksRow = ksRows - invKsRow;\r\n\r\n if (invKsRow % 4) {\r\n var t = keySchedule[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 4];\r\n }\r\n\r\n if (invKsRow < 4 || ksRow <= 4) {\r\n invKeySchedule[invKsRow] = t;\r\n } else {\r\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n }\r\n }\r\n },\r\n\r\n encryptBlock: function (M, offset) {\r\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n },\r\n\r\n decryptBlock: function (M, offset) {\r\n // Swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n\r\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n // Inv swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n },\r\n\r\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n // Shortcut\r\n var nRounds = this._nRounds;\r\n\r\n // Get input, add round key\r\n var s0 = M[offset] ^ keySchedule[0];\r\n var s1 = M[offset + 1] ^ keySchedule[1];\r\n var s2 = M[offset + 2] ^ keySchedule[2];\r\n var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n // Key schedule row counter\r\n var ksRow = 4;\r\n\r\n // Rounds\r\n for (var round = 1; round < nRounds; round++) {\r\n // Shift rows, sub bytes, mix columns, add round key\r\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n // Update state\r\n s0 = t0;\r\n s1 = t1;\r\n s2 = t2;\r\n s3 = t3;\r\n }\r\n\r\n // Shift rows, sub bytes, add round key\r\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n // Set output\r\n M[offset] = t0;\r\n M[offset + 1] = t1;\r\n M[offset + 2] = t2;\r\n M[offset + 3] = t3;\r\n },\r\n\r\n keySize: 256/32\r\n });\r\n\r\n /**\r\n * Shortcut functions to the cipher's object interface.\r\n *\r\n * @example\r\n *\r\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n */\r\n C.AES = BlockCipher._createHelper(AES);\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\n\n// create custom json serialization format\nvar JsonFormatter = {\n\tstringify: function (cipherParams) {\n\t\t// create json object with ciphertext\n\t\tvar jsonObj = {\n\t\t\tct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)\n\t\t};\n\t\t\n\t\t// optionally add iv and salt\n\t\tif (cipherParams.iv) {\n\t\t\tjsonObj.iv = cipherParams.iv.toString();\n\t\t}\n\t\t\n\t\tif (cipherParams.salt) {\n\t\t\tjsonObj.s = cipherParams.salt.toString();\n\t\t}\n\n\t\t// stringify json object\n\t\treturn JSON.stringify(jsonObj)\n\t},\n\n\tparse: function (jsonStr) {\n\t\t// parse json string\n\t\tvar jsonObj = JSON.parse(jsonStr);\n\t\t\n\t\t// extract ciphertext from json object, and create cipher params object\n\t\tvar cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t\tciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)\n\t\t});\n\t\t\n\t\t// optionally extract iv and salt\n\t\tif (jsonObj.iv) {\n\t\t\tcipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);\n\t\t}\n \n\t\tif (jsonObj.s) {\n\t\t\tcipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);\n\t\t}\n\t\t\n\t\treturn cipherParams;\n\t}\n};\n\nexports.JsonFormatter = JsonFormatter;","var CryptoJS = require('./lib/core').CryptoJS;\nrequire('./lib/enc-base64');\nrequire('./lib/md5');\nrequire('./lib/evpkdf');\nrequire('./lib/cipher-core');\nrequire('./lib/aes');\nvar JsonFormatter = require('./lib/jsonformatter').JsonFormatter;\n\nexports.CryptoJS = CryptoJS;\nexports.JsonFormatter = JsonFormatter;","import nodeCryptoJs from \"node-cryptojs-aes\";\nconst { CryptoJS, JsonFormatter } = nodeCryptoJs;\nimport validators from \"types-validate-assert\";\nconst { validateTypes, assertTypes } = validators;\n\n/**\n * Encrypt a Javascript object with a string password\n * The object passed must pass JSON.stringify or the method will fail.\n *\n * @param {string} password A password to encrypt the object with\n * @param {Object} obj A javascript object (must be JSON compatible)\n * @return {string} Encrypted string\n */\nexport function encryptObject(password, obj) {\n assertTypes.isStringWithValue(password);\n assertTypes.isObject(obj);\n\n const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, {\n format: JsonFormatter,\n }).toString();\n return encrypted;\n}\n\n/**\n * Decrypt an Object using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} objString A javascript object as JSON string\n * @return {string} Encrypted string\n */\nexport function decryptObject(password, objString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(objString);\n\n try {\n const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter });\n return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Encrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} string A string to be password encrypted\n * @return {string} Encrypted string\n */\nexport function encryptStrHash(password, string) {\n assertTypes.isStringWithValue(password);\n assertTypes.isString(string);\n\n const encrypt = CryptoJS.AES.encrypt(string, password).toString();\n return encrypt;\n}\n\n/**\n * Decrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} encryptedString A string to decrypt\n * @return {string} Decrypted string\n */\nexport function decryptStrHash(password, encryptedString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(encryptedString);\n\n try {\n const decrypted = CryptoJS.AES.decrypt(encryptedString, password);\n return CryptoJS.enc.Utf8.stringify(decrypted) === \"\"\n ? false\n : CryptoJS.enc.Utf8.stringify(decrypted);\n } catch (e) {\n return false;\n }\n}\n\nexport function buf2hex(buffer) {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (x) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\nexport function hex2buf(hexString) {\n var bytes = new Uint8Array(Math.ceil(hexString.length / 2));\n for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16);\n return bytes;\n}\nexport function str2buf(string) {\n var buf = new Buffer.from(string);\n return new Uint8Array(buf);\n}\nexport function concatUint8Arrays(array1, array2) {\n var arr = new Uint8Array(array1.length + array2.length);\n arr.set(array1);\n arr.set(array2, array1.length);\n return arr;\n}\nexport function ab2str(buf) {\n return String.fromCharCode.apply(null, new Uint8Array(buf));\n}\nexport function str2ab(str) {\n var buf = new ArrayBuffer(str.length);\n var bufView = new Uint8Array(buf);\n for (var i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\nexport function str2hex(str) {\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n hex += \"\" + str.charCodeAt(i).toString(16);\n }\n return hex;\n}\nexport function hex2str(hexx) {\n var hex = hexx.toString(); //force conversion\n var str = \"\";\n for (var i = 0; i < hex.length && hex.substr(i, 2) !== \"00\"; i += 2)\n str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\nexport function randomString(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (var i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n}\nexport function isStringHex(string = \"\") {\n let hexRegEx = /([0-9]|[a-f])/gim;\n return typeof string === \"string\" && (string.match(hexRegEx) || []).length === string.length;\n}\n\nexport function isLamdenKey(string) {\n if (validateTypes.isStringHex(string) && string.length === 64) return true;\n return false;\n}\n","import * as helpers from \"./helpers\";\nimport nacl from \"tweetnacl\";\nimport * as bip39 from \"bip39\";\nimport bip32 from \"ed25519-hd-key\";\n\n/**\n * Create a wallet object for signing and verifying messages\n *\n * @param {Object} [args={}] Args Object\n * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from\n * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users\n * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages\n * @return {Object} Wallet Object with sign and verify methods\n */\nexport let create_wallet = (args = {}) => {\n let { sk = undefined, keepPrivate = false, seed = null } = args;\n\n let vk;\n\n if (sk) {\n vk = get_vk(sk);\n } else {\n let keyPair = new_wallet(seed);\n vk = keyPair.vk;\n sk = keyPair.sk;\n }\n\n const wallet = () => {\n return {\n sign: (msg) => sign(sk, msg),\n verify: (msg, sig) => verify(vk, msg, sig),\n vk,\n sk: !keepPrivate ? sk : undefined,\n };\n };\n\n return wallet();\n};\n\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function generate_keys(seed = null) {\n var kp = null;\n if (seed == null) {\n kp = nacl.sign.keyPair();\n } else {\n kp = nacl.sign.keyPair.fromSeed(seed);\n }\n // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey\n // and the vk is the last 32 bytes of the secretKey as well as the publicKey\n // {\n // 'publicKey': ,\n // 'secretKey': \n // }\n return {\n sk: new Uint8Array(kp[\"secretKey\"].slice(0, 32)),\n vk: new Uint8Array(kp[\"secretKey\"].slice(32, 64)),\n };\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return String vk\n * vk: A 64 character long hex representation of a verify key (public key)\n */\nexport function get_vk(sk) {\n var kp = format_to_keys(sk);\n var kpf = keys_to_format(kp);\n return kpf.vk;\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function format_to_keys(sk) {\n var skf = helpers.hex2buf(sk);\n var kp = generate_keys(skf);\n return kp;\n}\n/**\n * @param Object kp\n * kp: Object containing the properties sk and vk\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function keys_to_format(kp) {\n return {\n vk: helpers.buf2hex(kp.vk),\n sk: helpers.buf2hex(kp.sk),\n };\n}\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function new_wallet(seed = null) {\n const keys = generate_keys(seed);\n return keys_to_format(keys);\n}\n\n/**\n *\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}}\n * derivationIndex: bip32 derivation key index\n * vk: Verify Key (VK) represented as a 64 character hex string\n * sk: Signing Key (SK) represented as a 64 character hex string\n * mnemonic: 24 word seed phrase\n\n */\nfunction generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) {\n let finalMnemonic;\n\n if (mnemonic !== undefined) {\n finalMnemonic = mnemonic;\n } else {\n finalMnemonic = bip39.generateMnemonic(256);\n }\n\n const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString(\"hex\");\n\n const derivationPath = \"m/44'/789'/\" + derivationIndex + \"'/0'/0'\";\n const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000);\n\n const privateKey = key.toString(\"hex\");\n const publicKey = bip32.getPublicKey(key, false).toString(\"hex\");\n\n if (publicKey !== get_vk(privateKey)) {\n throw Error(\"Bip32 public key does not match with Lamden public key!\");\n }\n\n return {\n sk: privateKey,\n vk: publicKey,\n derivationIndex: derivationIndex,\n mnemonic: finalMnemonic,\n };\n}\n\n/**\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n *\n * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n * derivationIndex: Bip32 derivation index\n * mnemonic: 24 word seed phrase\n */\nexport function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) {\n return generate_keys_bip39(mnemonic, derivationIndex);\n}\n\n/**\n * @param String sk\n * @param Uint8Array msg\n * sk: A 64 character long hex representation of a signing key (private key)\n * msg: A Uint8Array of bytes representing the message you would like to sign\n *\n * @return String sig\n * sig: A 128 character long hex string representing the message's signature\n */\nexport function sign(sk, msg) {\n var kp = format_to_keys(sk);\n // This is required due to the secretKey required to sign a transaction\n // in the js implementation of NaCL being the combination of the sk and\n // vk for some stupid reason. That being said, we still want the sk and\n // vk objects to exist in 32-byte string format (same as cilantro's\n // python implementation) when presented to the user.\n var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk);\n return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk));\n}\n/**\n * @param String vk\n * @param Uint8Array msg\n * @param String sig\n * vk: A 64 character long hex representation of a verify key (public key)\n * msg: A Uint8Array (bytes) representation of a message that has been signed\n * sig: A 128 character long hex representation of a nacl signature\n *\n * @return Bool result\n * result: true if verify checked out, false if not\n */\nexport function verify(vk, msg, sig) {\n var vkb = helpers.hex2buf(vk);\n var sigb = helpers.hex2buf(sig);\n try {\n return nacl.sign.detached.verify(msg, sigb, vkb);\n } catch (_a) {\n return false;\n }\n}\n","export class EventEmitter {\n constructor() {\n this._events = {};\n }\n \n on(name, listener) {\n if (!this._events[name]) {\n this._events[name] = [];\n }\n\n this._events[name].push(listener);\n }\n \n removeListener(name, listenerToRemove) {\n if (!this._events[name]) {\n throw new Error(`Can't remove a listener. Event \"${name}\" doesn't exits.`);\n }\n\n const filterListeners = (listener) => listener !== listenerToRemove;\n this._events[name] = this._events[name].filter(filterListeners);\n }\n \n emit(name, data) {\n if (!this._events[name]) return\n \n const fireCallbacks = (callback) => {\n callback(data);\n };\n \n this._events[name].forEach(fireCallbacks);\n }\n }\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","/*\r\n * bignumber.js v9.0.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2019 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if only one character,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.$|[+-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","import BigNumber from \"bignumber.js\";\nBigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 });\nBigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent\n\nexport function Encoder(type, value) {\n const throwError = (val) => {\n throw new Error(`Error encoding ${val} to ${type}`);\n };\n const countDecimals = (n) => {\n if (Math.floor(n) === n) return 0;\n try {\n return n.toString().split(\".\")[1].length;\n } catch (e) {\n return 0;\n }\n };\n const isString = (val) => typeof val === \"string\" || val instanceof String;\n const isArray = (val) => val && typeof val === \"object\" && val.constructor === Array;\n const isObject = (val) => val && typeof val === \"object\" && val.constructor === Object;\n const isDate = (val) => val instanceof Date;\n const isBoolean = (val) => typeof val === \"boolean\";\n\n const isNumber = (val) => {\n if (isArray(val)) return false;\n return !isNaN(encodeBigNumber(val).toNumber());\n };\n\n const isInteger = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return true;\n return false;\n };\n const encodeInt = (val) => {\n if (!isNumber(val)) throwError(val);\n else return parseInt(val);\n };\n const isFloat = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return false;\n return true;\n };\n const encodeFloat = (val) => {\n if (!isNumber(val)) throwError(val);\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n };\n const encodeNumber = (val) => {\n if (!isNumber(val)) throwError(val);\n if (isFloat(val)) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n }\n if (isInteger(val)) return parseInt(val);\n };\n const encodeBigNumber = (val) => {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return val;\n };\n\n const encodeBool = (val) => {\n if (isBoolean(val)) return val;\n if (val === \"true\" || val === 1) return true;\n if (val === \"false\" || val === 0) return false;\n throwError(val);\n };\n const encodeStr = (val) => {\n if (isString(val)) return val;\n if (isDate(val)) return val.toISOString();\n return JSON.stringify(val);\n };\n const encodeDateTime = (val) => {\n val = !isDate(val) ? new Date(val) : val;\n if (!isDate(val)) throwError(val);\n return {\n __time__: [\n val.getUTCFullYear(),\n val.getUTCMonth(),\n val.getUTCDate(),\n val.getUTCHours(),\n val.getUTCMinutes(),\n val.getUTCSeconds(),\n val.getUTCMilliseconds(),\n ],\n };\n };\n const encodeTimeDelta = (val) => {\n const time = isDate(val) ? val.getTime() : new Date(val).getTime();\n const days = parseInt(time / 1000 / 60 / 60 / 24);\n const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000;\n return { __delta__: [days, seconds] };\n };\n\n const encodeList = (val) => {\n if (isArray(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isArray(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeDict = (val) => {\n if (isObject(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isObject(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeObject = (val) => {\n try {\n return encodeList(val);\n } catch (e) {\n return encodeDict(val);\n }\n };\n\n function parseObject(obj) {\n const encode = (k, v) => {\n if (k === \"datetime\" || k === \"datetime.datetime\") return Encoder(\"datetime.datetime\", v);\n if (k === \"timedelta\" || k === \"datetime.timedelta\") return Encoder(\"datetime.timedelta\", v);\n if (k !== \"__fixed__\" && isFloat(v)) return encodeFloat(v);\n return v;\n };\n\n const fixDatetime = (k, v) => {\n const isDatetimeObject = (val) => {\n let datetimeTypes = [\"datetime.datetime\", \"datetime\", \"datetime.timedelta\", \"timedelta\"];\n return (\n Object.keys(val).length === 1 &&\n datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0\n );\n };\n\n if (v.constructor === Array) {\n v.map((val) => {\n if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]];\n //if (isFloat(val)) return encodeFloat(val)\n return val;\n });\n }\n if (v.constructor === Object) {\n if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]];\n }\n\n //if (isFloat(v)) return encodeFloat(v)\n\n return v;\n };\n\n let encodeValues = JSON.stringify(obj, encode);\n return JSON.parse(encodeValues, fixDatetime);\n }\n\n const encoder = {\n str: encodeStr,\n string: encodeStr,\n float: encodeFloat,\n int: encodeInt,\n bool: encodeBool,\n boolean: encodeBool,\n dict: encodeDict,\n list: encodeList,\n Any: () => value,\n \"datetime.timedelta\": encodeTimeDelta,\n \"datetime.datetime\": encodeDateTime,\n timedelta: encodeTimeDelta,\n datetime: encodeDateTime,\n number: encodeNumber,\n object: encodeObject,\n bigNumber: encodeBigNumber,\n };\n\n if (Object.keys(encoder).includes(type)) return encoder[type](value);\n else throw new Error(`Error: ${type} is not a valid encoder type.`);\n}\n\nEncoder.BigNumber = BigNumber;\n\nexport default { Encoder };\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport fetch from \"node-fetch\";\nimport { Encoder } from \"./encoder\";\n\nexport class LamdenMasterNode_API {\n constructor(networkInfoObj) {\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n\n send(method, path, data, overrideURL, callback) {\n let parms = \"\";\n if (Object.keys(data).includes(\"parms\")) {\n parms = this.createParms(data.parms);\n }\n\n let options = {};\n if (method === \"POST\") {\n let headers = { \"Content-Type\": \"application/json\" };\n options.method = method;\n options.headers = headers;\n options.body = data;\n }\n\n return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options)\n .then(async (res) => {\n if (res.status === 200) {\n let json = await res.json();\n callback(json, undefined);\n return json;\n } else {\n let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false;\n callback(undefined, error);\n return error;\n }\n })\n .catch((err) => {\n return callback(undefined, err.toString());\n });\n }\n\n createParms(parms) {\n if (Object.keys(parms).length === 0) return \"\";\n let parmString = \"?\";\n Object.keys(parms).forEach((key) => {\n parmString = `${parmString}${key}=${parms[key]}&`;\n });\n return parmString.slice(0, -1);\n }\n\n async getContractInfo(contractName) {\n const returnInfo = (res) => {\n try {\n if (res.name) return res;\n } catch (e) {}\n return null;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => returnInfo(res)).then((res) =>\n returnInfo(res)\n );\n }\n\n async getVariable(contract, variable, key = \"\") {\n let parms = {};\n if (validateTypes.isStringWithValue(key)) parms.key = key;\n\n let path = `/contracts/${contract}/${variable}/`;\n\n const returnValue = (res) => {\n try {\n if (res.value) return res.value;\n } catch (e) {}\n return null;\n };\n return this.send(\"GET\", path, { parms }, undefined, (res, err) => returnValue(res)).then(\n (res) => returnValue(res)\n );\n }\n\n async getContractMethods(contract) {\n const getMethods = (res) => {\n try {\n if (res.methods) return res.methods;\n } catch (e) {}\n return [];\n };\n let path = `/contracts/${contract}/methods`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getMethods(res)).then((res) =>\n getMethods(res)\n );\n }\n\n async getContractVariables(contract) {\n const getVariables = (res) => {\n try {\n if (res.variables) return res;\n } catch (e) {}\n return {};\n };\n let path = `/contracts/${contract}/variables`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getVariables(res)).then((res) =>\n getVariables(res)\n );\n }\n\n async pingServer() {\n const getStatus = (res) => {\n try {\n if (res.status) return true;\n } catch (e) {}\n return false;\n };\n let response = await this.send(\"GET\", \"/ping\", {}, undefined, (res, err) => getStatus(res));\n return getStatus(response);\n }\n\n async getCurrencyBalance(vk) {\n let balanceRes = await this.getVariable(\"currency\", \"balances\", vk);\n if (!balanceRes) return Encoder(\"bigNumber\", 0);\n if (balanceRes.__fixed__) return Encoder(\"bigNumber\", balanceRes.__fixed__);\n return Encoder(\"bigNumber\", balanceRes.toString());\n }\n\n async contractExists(contractName) {\n const exists = (res) => {\n try {\n if (res.name) return true;\n } catch (e) {}\n return false;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => exists(res)).then((res) =>\n exists(res)\n );\n }\n\n async sendTransaction(data, url = undefined, callback) {\n return this.send(\"POST\", \"/\", JSON.stringify(data), url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n\n async getNonce(sender, callback) {\n if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.`;\n let path = `/nonce/${sender}`;\n let url = this.host;\n return this.send(\"GET\", path, {}, url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, `Unable to get nonce for ${sender} on network ${url}`);\n return;\n }\n return `Unable to get nonce for ${sender} on network ${url}`;\n }\n res.masternode = url;\n if (callback) {\n callback(res, undefined);\n return;\n } else return res;\n });\n }\n\n checkTransaction(hash, callback) {\n const parms = { hash };\n return this.send(\"GET\", \"/tx\", { parms }, undefined, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n}\n","import { EventEmitter } from \"./eventEmitter\";\nimport validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport { LamdenMasterNode_API } from \"./masternode-api\";\n\nexport class Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // networkInfo: {\n // hosts: list of masternode hostname/ip urls,\n // type: \"testnet\", \"mainnet\" or \"custom\"\n // },\n constructor(networkInfoObj) {\n //Reject undefined or missing info\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.type = validateTypes.isStringWithValue(networkInfoObj.type)\n ? networkInfoObj.type.toLowerCase()\n : \"custom\";\n this.events = new EventEmitter();\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol)\n ? networkInfoObj.currencySymbol\n : \"TAU\";\n this.name = validateTypes.isStringWithValue(networkInfoObj.name)\n ? networkInfoObj.name\n : \"lamden network\";\n this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false;\n this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer)\n ? networkInfoObj.blockExplorer\n : undefined;\n\n this.online = false;\n try {\n this.API = new LamdenMasterNode_API(networkInfoObj);\n } catch (e) {\n throw new Error(e);\n }\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n //Check if the network is online\n //Emits boolean as 'online' event\n //Also returns status as well as passes status to a callback\n async ping(callback = undefined) {\n this.online = await this.API.pingServer();\n this.events.emit(\"online\", this.online);\n if (validateTypes.isFunction(callback)) callback(this.online);\n return this.online;\n }\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n async getNetworkInfo() {\n await this.ping();\n return {\n name: this.name,\n lamden: this.lamden,\n type: this.type,\n hosts: this.hosts,\n url: this.url,\n online: this.online,\n };\n }\n}\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport * as wallet from \"./wallet\";\nimport { Network } from \"./network\";\n\nexport class TransactionBuilder extends Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // arg[0] (networkInfo): { //Can also accpet a Lamden \"Network Class\"\n // host: masternode webserver hostname/ip,\n // type: \"testnet\", \"mainnet\" or \"mockchain\"\n // }\n // arg[1] (txInfo): {\n // uid: [Optional] unique ID for tracking purposes,\n // senderVk: public key of the transaction sender,\n // contractName: name of lamden smart contract,\n // methodName: name of method to call in contractName,\n // kwargs: key/values of args to pass to methodName\n // example: kwargs.to = \"270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e\"\n // kwargs.amount = 1000\n // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail.\n // nonce: [Optional] send() will attempt to retrieve this info automatically\n // processor [Optional] send() will attempt to retrieve this info automatically\n // }\n // arg[2] (txData): [Optional] state hydrating data\n constructor(networkInfo, txInfo, txData) {\n if (validateTypes.isSpecificClass(networkInfo, \"Network\")) super(networkInfo.getNetworkInfo());\n else super(networkInfo);\n\n //Validate arguments\n if (!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`);\n if (!validateTypes.isStringHex(txInfo.senderVk))\n throw new Error(`Sender Public Key Required (Type: Hex String)`);\n if (!validateTypes.isStringWithValue(txInfo.contractName))\n throw new Error(`Contract Name Required (Type: String)`);\n if (!validateTypes.isStringWithValue(txInfo.methodName))\n throw new Error(`Method Required (Type: String)`);\n if (!validateTypes.isInteger(txInfo.stampLimit))\n throw new Error(`Stamps Limit Required (Type: Integer)`);\n\n //Store variables in self for reference\n this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined;\n this.sender = txInfo.senderVk;\n this.contract = txInfo.contractName;\n this.method = txInfo.methodName;\n this.kwargs = {};\n if (validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs;\n this.stampLimit = txInfo.stampLimit;\n\n //validate and set nonce and processor if user provided them\n if (typeof txInfo.nonce !== \"undefined\") {\n if (!validateTypes.isInteger(txInfo.nonce))\n throw new Error(\n `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`\n );\n this.nonce = txInfo.nonce;\n }\n if (typeof txInfo.processor !== \"undefined\") {\n if (!validateTypes.isStringWithValue(txInfo.processor))\n throw new Error(\n `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`\n );\n this.processor = txInfo.processor;\n }\n\n this.signature;\n this.transactionSigned = false;\n\n //Transaction result information\n this.nonceResult = {};\n this.txSendResult = { errors: [] };\n this.txBlockResult = {};\n this.txHash;\n this.txCheckResult = {};\n this.txCheckAttempts = 0;\n this.txCheckLimit = 1;\n\n //Hydrate other items if passed\n if (txData) {\n if (txData.uid) this.uid = txData.uid;\n if (validateTypes.isObjectWithKeys(txData.txSendResult))\n this.txSendResult = txData.txSendResult;\n if (validateTypes.isObjectWithKeys(txData.nonceResult)) {\n this.nonceResult = txData.nonceResult;\n if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce;\n if (validateTypes.isStringWithValue(this.nonceResult.processor))\n this.processor = this.nonceResult.processor;\n }\n if (validateTypes.isObjectWithKeys(txData.txSendResult)) {\n this.txSendResult = txData.txSendResult;\n if (this.txSendResult.hash) this.txHash = this.txSendResult.hash;\n }\n if (validateTypes.isObjectWithKeys(txData.txBlockResult))\n this.txBlockResult = txData.txBlockResult;\n if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo;\n }\n //Create Capnp messages and transactionMessages\n this.makePayload();\n }\n makePayload() {\n this.payload = {\n contract: this.contract,\n function: this.method,\n kwargs: this.kwargs,\n nonce: this.nonce,\n processor: this.processor,\n sender: this.sender,\n stamps_supplied: this.stampLimit,\n };\n this.sortedPayload = this.sortObject(this.payload);\n }\n makeTransaction() {\n this.tx = {\n metadata: {\n signature: this.signature,\n timestamp: parseInt(+new Date() / 1000),\n },\n payload: this.sortedPayload.orderedObj,\n };\n }\n verifySignature() {\n //Verify the signature is correct\n if (!this.transactionSigned)\n throw new Error(\n \"Transaction has not be been signed. Use the sign() method first.\"\n );\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n return wallet.verify(this.sender, stringArray, this.signature);\n }\n sign(sk = undefined, userWallet = undefined) {\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n if (userWallet) this.signature = userWallet.sign(stringArray);\n else this.signature = wallet.sign(sk, stringArray);\n this.transactionSigned = true;\n }\n sortObject(object) {\n const processObj = (obj) => {\n const getType = (value) => {\n return Object.prototype.toString.call(value);\n };\n const isArray = (value) => {\n if (getType(value) === \"[object Array]\") return true;\n return false;\n };\n const isObject = (value) => {\n if (getType(value) === \"[object Object]\") return true;\n return false;\n };\n\n const sortObjKeys = (unsorted) => {\n const sorted = {};\n Object.keys(unsorted)\n .sort()\n .forEach((key) => (sorted[key] = unsorted[key]));\n return sorted;\n };\n\n const formatKeys = (unformatted) => {\n Object.keys(unformatted).forEach((key) => {\n if (isArray(unformatted[key]))\n unformatted[key] = unformatted[key].map((item) => {\n if (isObject(item)) return formatKeys(item);\n return item;\n });\n if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]);\n });\n return sortObjKeys(unformatted);\n };\n\n if (!isObject(obj)) throw new TypeError(\"Not a valid Object\");\n try {\n obj = JSON.parse(JSON.stringify(obj));\n } catch (e) {\n throw new TypeError(\"Not a valid JSON Object\");\n }\n return formatKeys(obj);\n };\n const orderedObj = processObj(object);\n return {\n orderedObj,\n json: JSON.stringify(orderedObj),\n };\n }\n async getNonce(callback = undefined) {\n let timestamp = new Date().toUTCString();\n this.nonceResult = await this.API.getNonce(this.sender);\n if (typeof this.nonceResult.nonce === \"undefined\") {\n throw new Error(this.nonceResult);\n }\n this.nonceResult.timestamp = timestamp;\n this.nonce = this.nonceResult.nonce;\n this.processor = this.nonceResult.processor;\n this.nonceMasternode = this.nonceResult.masternode;\n //Create payload object\n this.makePayload();\n\n if (!callback) return this.nonceResult;\n return callback(this.nonceResult);\n }\n async send(sk = undefined, masternode = undefined, callback = undefined) {\n //Error if transaction is not signed and no sk provided to the send method to sign it before sending\n if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned) {\n throw new Error(\n `Transation Not Signed: Private key needed or call sign() first`\n );\n }\n\n let timestamp = new Date().toUTCString();\n\n try {\n //If the nonce isn't set attempt to get it\n if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor))\n await this.getNonce();\n //if the sk is provided then sign the transaction\n if (validateTypes.isStringWithValue(sk)) this.sign(sk);\n //Serialize transaction\n this.makeTransaction();\n //Send transaction to the masternode\n let masternodeURL = masternode;\n if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode;\n let response = await this.API.sendTransaction(this.tx, masternodeURL);\n //Set error if txSendResult doesn't exist\n if (!response || validateTypes.isStringWithValue(response)) {\n this.txSendResult.errors = [response || \"Unknown Transaction Error\"];\n } else {\n if (response.error) this.txSendResult.errors = [response.error];\n else this.txSendResult = response;\n }\n } catch (e) {\n this.txSendResult.errors = [e.message];\n }\n this.txSendResult.timestamp = timestamp;\n return this.handleMasterNodeResponse(this.txSendResult, callback);\n }\n checkForTransactionResult(callback = undefined) {\n return new Promise((resolve) => {\n let timerId = setTimeout(\n async function checkTx() {\n this.txCheckAttempts = this.txCheckAttempts + 1;\n let res = await this.API.checkTransaction(this.txHash);\n let checkAgain = false;\n let timestamp = new Date().toUTCString();\n if (typeof res === \"string\" || !res) {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n res,\n ];\n }\n } else {\n if (res.error) {\n if (res.error === \"Transaction not found.\") {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n res.error,\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n ];\n }\n } else {\n this.txCheckResult.errors = [res.error];\n }\n } else {\n this.txCheckResult = res;\n }\n }\n if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000);\n else {\n if (validateTypes.isNumber(this.txCheckResult.status)) {\n if (this.txCheckResult.status > 0) {\n if (!validateTypes.isArray(this.txCheckResult.errors))\n this.txCheckResult.errors = [];\n this.txCheckResult.errors.push(\"This transaction returned a non-zero status code\");\n }\n }\n this.txCheckResult.timestamp = timestamp;\n clearTimeout(timerId);\n resolve(this.handleMasterNodeResponse(this.txCheckResult, callback));\n }\n }.bind(this),\n 1000\n );\n });\n }\n handleMasterNodeResponse(result, callback = undefined) {\n //Check to see if this is a successful transacation submission\n if (\n validateTypes.isStringWithValue(result.hash) &&\n validateTypes.isStringWithValue(result.success)\n ) {\n this.txHash = result.hash;\n this.setPendingBlockInfo();\n } else {\n this.setBlockResultInfo(result);\n this.txBlockResult = result;\n }\n this.events.emit(\"response\", result, this.resultInfo.subtitle);\n if (validateTypes.isFunction(callback)) callback(result);\n return result;\n }\n setPendingBlockInfo() {\n this.resultInfo = {\n title: \"Transaction Pending\",\n subtitle: \"Your transaction was submitted and is being processed\",\n message: `Tx Hash: ${this.txHash}`,\n type: \"success\",\n };\n return this.resultInfo;\n }\n setBlockResultInfo(result) {\n let erroredTx = false;\n let errorText = `returned an error and `;\n let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined;\n let stamps = result.stampsUsed || result.stamps_used || 0;\n let message = \"\";\n if (validateTypes.isArrayWithValues(result.errors)) {\n erroredTx = true;\n message = `This transaction returned ${result.errors.length} errors.`;\n if (result.result) {\n if (result.result.includes(\"AssertionError\")) result.errors.push(result.result);\n }\n }\n if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `;\n\n this.resultInfo = {\n title: `Transaction ${erroredTx ? \"Failed\" : \"Successful\"}`,\n subtitle: `Your transaction ${erroredTx ? `${errorText} ` : \"\"}used ${stamps} stamps`,\n message,\n type: `${erroredTx ? \"error\" : \"success\"}`,\n errorInfo: erroredTx ? result.errors : undefined,\n returnResult: result.result || \"\",\n stampsUsed: stamps,\n statusCode,\n };\n return this.resultInfo;\n }\n getResultInfo() {\n return this.resultInfo;\n }\n getTxInfo() {\n return {\n senderVk: this.sender,\n contractName: this.contract,\n methodName: this.method,\n kwargs: this.kwargs,\n stampLimit: this.stampLimit,\n };\n }\n getAllInfo() {\n return {\n uid: this.uid,\n txHash: this.txHash,\n signed: this.transactionSigned,\n tx: this.tx,\n signature: this.signature,\n networkInfo: this.getNetworkInfo(),\n txInfo: this.getTxInfo(),\n txSendResult: this.txSendResult,\n txBlockResult: this.txBlockResult,\n resultInfo: this.getResultInfo(),\n nonceResult: this.nonceResult,\n };\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes } = validators;\nimport { Network } from './network'\nimport { TransactionBuilder } from './transactionBuilder'\n\nexport class TransactionBatcher extends Network {\n constructor(networkInfo) {\n if (validateTypes.isSpecificClass(networkInfo, 'Network'))\n super(networkInfo.getNetworkInfo())\n else super(networkInfo)\n\n this.txBatches = {}\n this.overflow = []\n this.nonceResults = {}\n this.running = false;\n }\n addTransaction(txInfo){\n if (this.running) {\n this.overflow.push(txInfo)\n return\n }\n this.validateTransactionInfo(txInfo)\n if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []\n this.txBatches[txInfo.senderVk].push(txInfo)\n }\n addTransactionList(txList){\n txList.forEach(txInfo => this.addTransaction(txInfo))\n }\n processOverflow(){\n const overflow = this.overflow\n this.overflow = []\n overflow.forEach(txInfo => this.addTransaction(txInfo))\n }\n hasTransactions(){\n let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length)\n test.filter(f => f === 0)\n if (test.length > 0 ) return true\n return false\n }\n validateTransactionInfo(txInfo){\n try{\n new TransactionBuilder(txInfo)\n }catch(e){\n return false\n }\n return true\n }\n async getStartingNonce(senderVk, callback = undefined){\n let timestamp = new Date().toUTCString();\n let response = await this.API.getNonce(senderVk)\n if (typeof response.nonce === 'undefined'){\n throw new Error(response)\n }\n response.timestamp = timestamp\n this.nonceResults[senderVk] = response\n\n if (callback) callback(response)\n return response;\n }\n async sendAllBatches(keyDict){\n if (this.running) return\n let sentTransactions = []\n this.running = true;\n \n await Promise.all(Object.keys(this.txBatches).map((senderVk) => {\n const senderBatch = this.txBatches[senderVk].splice(0,15);\n if (senderBatch.length <= 15) delete this.txBatches[senderVk]\n \n return new Promise(async (resolver) => {\n if (senderBatch.length === 0 ) resolver()\n\n if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`)\n let nonceResponse = await this.getStartingNonce(senderVk)\n let txBatch = this.setBatchNonces(nonceResponse, senderBatch);\n this.signBatch(txBatch, keyDict[senderVk])\n this.sendBatch(txBatch).then(sentList => {\n sentTransactions = [...sentTransactions, ...sentList]\n resolver()\n }) \n })\n }))\n\n try{\n return Promise.all(sentTransactions)\n }catch (e){}\n finally{\n this.running = false;\n this.processOverflow();\n }\n }\n setBatchNonces(nonceResult, txList){\n return txList.map((txInfo, index) => {\n txInfo.nonce = nonceResult.nonce + index\n txInfo.processor = nonceResult.processor\n return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo)\n }).sort((a, b) => a.nonce - b.nonce)\n }\n signBatch(txBatch, key){\n txBatch.forEach(txBuilder => txBuilder.sign(key))\n }\n sendBatch(txBatch){\n let resolvedTransactions = []\n return new Promise(resolver => {\n const resolve = (index) => {\n if ((index + 1) === txBatch.length) resolver(resolvedTransactions)\n }\n txBatch.forEach((txBuilder, index) => {\n const delayedSend = () => {\n resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder})\n resolve(index)\n }\n setTimeout(delayedSend, 1200 * index)\n })\n })\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes, assertTypes } = validators;\nimport * as helpers from './helpers';\nimport * as wallet from './wallet'\n\nexport class Keystore {\n /**\n * Lamden Keystores\n *\n * This Class will create a lamden keystore instance\n *\n * @param {Object|undefined} arg constructor argument\n * @param {String|undefined} arg.key Create an instance and load it with one private key\n * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys\n * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data\n * @return {Keystore}\n */\n constructor(arg = undefined) {\n this.KEYSTORE_VERSION = \"1.0\"\n this.password = null\n this.encryptedData = null;\n\n this.keyList = (() => {\n let keyList = []\n let outerClass = this\n let wallets = []\n\n const addKey = (key) => {\n keyList.push(key)\n createWallets()\n }\n const deleteKey = (position) => {\n keyList.splice(position, 1);\n createWallets()\n }\n const clearKeys = () => {\n keyList = []\n createWallets()\n }\n const numOfKeys = () => keyList.length\n const createWallets = () => {\n wallets = []\n keyList.forEach(keyInfo => {\n let newWallet = wallet.create_wallet({sk: keyInfo.sk, keepPrivate: true})\n newWallet = {...newWallet, ...keyInfo}\n delete newWallet.sk\n wallets.push(newWallet)\n })\n }\n const createKeystore = (password, hint = undefined) => {\n return JSON.stringify({\n data: helpers.encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}),\n w: !hint ? \"\" : helpers.encryptStrHash('n1ahcKc0lb', hint),\n });\n }\n const decryptKeystore = (password, data) => {\n let decrypted = helpers.decryptObject(password, data)\n if (decrypted) {\n assertTypes.isArray(decrypted.keyList)\n decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk))\n decrypted.keyList.forEach(keyInfo => addKey(keyInfo))\n outerClass.version = decrypted.version\n } else {\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n\n return {\n getWallets: () => wallets,\n getWallet: (vk) => wallets.find(wallet => wallet.vk === vk),\n addKey, \n clearKeys, \n numOfKeys,\n deleteKey,\n createKeystore,\n decryptKeystore\n }\n })()\n\n if (arg){\n if (arg.key) this.addKey(arg.key)\n if (arg.keyList) this.addKeys(arg.keyList)\n if (arg.keystoreData) this.addKeystoreData(arg.keystoreData)\n }\n }\n /**\n * Add a list of keys to add to the keystore\n * @param {Array.} keyList An array of 32 character long Lamden private keys\n */\n addKeys(keyList){\n assertTypes.isArray(keyList)\n keyList.forEach(key => this.addKey(key))\n }\n /**\n * Add a key to the keystore\n * @param {string} key A 32 character long Lamden private key\n */\n addKey(keyInfo){\n assertTypes.isObjectWithKeys(keyInfo)\n assertTypes.isStringWithValue(keyInfo.sk)\n if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk\n this.keyList.addKey(keyInfo)\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {string} keystoreData The contents of an existing encrypted keystore file\n */\n addKeystoreData(keystoreData){\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n if(this.validateKeyStore(keystoreData)){\n this.encryptedData = keystoreData\n }\n }\n /**\n * Returns the password hint in a keystore file\n * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor\n */\n getPasswordHint(keystoreData = undefined){\n if (!this.encryptedData && !keystoreData) throw new Error(\"No keystore data found.\")\n\n if (keystoreData) {\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n }\n else keystoreData = this.encryptedData\n\n if (keystoreData.w) return helpers.decryptStrHash('n1ahcKc0lb', keystoreData.w);\n else return \"\"\n }\n /**\n * Removes a specific key from the keyList\n * @param {Number} keyIndex The index of the key you want to remove\n */\n deleteKey(keyIndex){\n assertTypes.isInteger(keyIndex)\n if (this.keyList.numOfKeys() === 0) return\n if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error(\"Key index out of range.\")\n this.keyList.deleteKey(keyIndex)\n }\n /**\n * Clears all keys from the keystore\n */\n clearKeys(){\n this.keyList.clearKeys()\n }\n /**\n * Clears all keys from the keystore\n * @return {Array.} An array of wallet objects\n */\n get wallets() {\n return this.keyList.getWallets()\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {String} vk A 32 character long Lamden public key\n * @return {Object} A wallet object\n */\n getWallet(vk) {\n return this.keyList.getWallet(vk)\n }\n /**\n * Used to validate that a keystore is the proper Lamden Format (does not decrypt data)\n * @param {String} keystoreData The contents of an existing encrypted keystore file\n * @return {Boolean} valid\n * @throws {Error} This is not a valid keystore file.\n */\n validateKeyStore(keystoreData){\n assertTypes.isObjectWithKeys(keystoreData)\n try{\n let encryptedData = JSON.parse(keystoreData.data);\n if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){\n throw new Error(\"This is not a valid keystore file.\")\n }\n } catch (e) {\n throw new Error(\"This is not a valid keystore file.\")\n }\n return true;\n }\n /**\n * Create a Keystore text string from the keys contained in the Keystore instance\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password.\n * @return {String} A JSON stringified object containing the encrypted data\n * @throws {Error} Any errors from the encyption process\n */\n createKeystore(password, hint = undefined) {\n assertTypes.isStringWithValue(password)\n if (hint){\n assertTypes.isStringWithValue(hint)\n }\n return this.keyList.createKeystore(password, hint)\n }\n /**\n * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore.\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor.\n * @throws {Error} Any errors from the encyption process\n */\n decryptKeystore(password, keystoreData = undefined){\n if (keystoreData) this.addKeystoreData(keystoreData)\n if (!this.encryptedData) throw new Error (\"No keystoreData to decrypt.\")\n try{\n this.keyList.decryptKeystore(password, this.encryptedData.data)\n }catch (e){\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n}\n","import { TransactionBuilder } from \"./js/transactionBuilder\";\nimport { TransactionBatcher } from \"./js/transactionBatcher\";\nimport { Network } from \"./js/network\";\nimport { Encoder } from \"./js/encoder\";\nimport { Keystore } from \"./js/keystore\";\nimport { LamdenMasterNode_API as Masternode_API } from \"./js/masternode-api\";\nimport * as wallet from \"./js/wallet\";\nimport * as utils from \"./js/helpers\";\nimport { Buffer } from \"buffer\";\n\nglobalThis.Buffer = Buffer;\n\nexport default {\n TransactionBuilder,\n TransactionBatcher,\n Masternode_API,\n Network,\n wallet,\n Keystore,\n Encoder,\n utils,\n};\n"],"names":["this","CryptoJS","undefined","require$$0","JsonFormatter","require$$1","nodeCryptoJs","validateTypes","assertTypes","nacl","helpers.hex2buf","helpers.buf2hex","bip39","bip32","helpers.concatUint8Arrays","Stream","clone","http","Url","https","zlib","wallet.verify","wallet.sign","wallet.create_wallet","helpers.encryptObject","helpers.encryptStrHash","helpers.decryptObject","helpers.decryptStrHash","Buffer","Masternode_API"],"mappings":"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C,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAA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"} \ No newline at end of file diff --git a/dist/esm/lamden.js.map b/dist/esm/lamden.js.map deleted file mode 100644 index 03894aa..0000000 --- a/dist/esm/lamden.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lamden.js","sources":["../../node_modules/types-validate-assert/dist/index.js","../../node_modules/node-cryptojs-aes/lib/core.js","../../node_modules/node-cryptojs-aes/lib/enc-base64.js","../../node_modules/node-cryptojs-aes/lib/md5.js","../../node_modules/node-cryptojs-aes/lib/evpkdf.js","../../node_modules/node-cryptojs-aes/lib/cipher-core.js","../../node_modules/node-cryptojs-aes/lib/aes.js","../../node_modules/node-cryptojs-aes/lib/jsonformatter.js","../../node_modules/node-cryptojs-aes/cryptojs.js","../../src/js/helpers.js","../../node_modules/tweetnacl/nacl-fast.js","../../src/bip39.browser.js","../../node_modules/inherits/inherits_browser.js","../../node_modules/base64-js/index.js","../../node_modules/ieee754/index.js","../../node_modules/buffer/index.js","../../node_modules/safe-buffer/index.js","../../node_modules/util/support/isBufferBrowser.js","../../node_modules/util/util.js","../../node_modules/string_decoder/lib/string_decoder.js","../../node_modules/cipher-base/index.js","../../node_modules/create-hmac/legacy.js","../../node_modules/hash-base/node_modules/safe-buffer/index.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","../../node_modules/hash-base/node_modules/readable-stream/errors-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","../../node_modules/hash-base/node_modules/inherits/inherits_browser.js","../../node_modules/util-deprecate/browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","../../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","../../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../node_modules/hash-base/node_modules/readable-stream/readable-browser.js","../../node_modules/hash-base/index.js","../../node_modules/md5.js/index.js","../../node_modules/create-hash/md5.js","../../node_modules/ripemd160/index.js","../../node_modules/sha.js/hash.js","../../node_modules/sha.js/sha.js","../../node_modules/sha.js/sha1.js","../../node_modules/sha.js/sha256.js","../../node_modules/sha.js/sha224.js","../../node_modules/sha.js/sha512.js","../../node_modules/sha.js/sha384.js","../../node_modules/sha.js/index.js","../../node_modules/create-hmac/browser.js","../../node_modules/ed25519-hd-key/node_modules/tweetnacl/nacl-fast.js","../../node_modules/ed25519-hd-key/dist/utils.js","../../node_modules/ed25519-hd-key/dist/index.js","../../src/js/wallet.js","../../src/js/eventEmitter.js","../../node_modules/node-fetch/browser.js","../../node_modules/bignumber.js/bignumber.js","../../src/js/encoder.js","../../src/js/masternode-api.js","../../src/js/network.js","../../src/js/transactionBuilder.js","../../src/js/transactionBatcher.js","../../src/js/keystore.js","../../src/index.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('index', ['exports'], factory) :\n (global = global || self, factory(global.index = {}));\n}(this, (function (exports) { 'use strict';\n\n class ValidateTypes {\n constructor() {}\n\n getType(value) {\n return Object.prototype.toString.call(value);\n }\n\n getClassName(value) {\n try {\n return value.constructor.name;\n } catch (e) {}\n\n return this.getType(value);\n } //Validation functions\n\n\n isObject(value) {\n if (this.getType(value) === \"[object Object]\") return true;\n return false;\n }\n\n isFunction(value) {\n if (this.getType(value) === \"[object Function]\") return true;\n return false;\n }\n\n isString(value) {\n if (this.getType(value) === \"[object String]\") return true;\n return false;\n }\n\n isBoolean(value) {\n if (this.getType(value) === \"[object Boolean]\") return true;\n return false;\n }\n\n isArray(value) {\n if (this.getType(value) === \"[object Array]\") return true;\n return false;\n }\n\n isNumber(value) {\n if (this.getType(value) === \"[object Number]\") return true;\n return false;\n }\n\n isInteger(value) {\n if (this.getType(value) === \"[object Number]\" && Number.isInteger(value)) return true;\n return false;\n }\n\n isRegEx(value) {\n if (this.getType(value) === \"[object RegExp]\") return true;\n return false;\n }\n\n isStringHex(value) {\n if (!this.isStringWithValue(value)) return false;\n let hexRegEx = /([0-9]|[a-f])/gim;\n return (value.match(hexRegEx) || []).length === value.length;\n }\n\n hasKeys(value, keys) {\n if (keys.map(key => key in value).includes(false)) return false;\n return true;\n }\n\n isStringWithValue(value) {\n if (this.isString(value) && value !== '') return true;\n return false;\n }\n\n isObjectWithKeys(value) {\n if (this.isObject(value) && Object.keys(value).length > 0) return true;\n return false;\n }\n\n isArrayWithValues(value) {\n if (this.isArray(value) && value.length > 0) return true;\n return false;\n }\n\n isSpecificClass(value, className) {\n if (!this.isObject(value)) return false;\n if (this.getClassName(value) !== className) return false;\n return true;\n }\n\n }\n\n class AssertTypes {\n constructor() {\n this.validate = new ValidateTypes();\n } //Validation functions\n\n\n isObject(value) {\n if (!this.validate.isObject(value)) {\n throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isFunction(value) {\n if (!this.validate.isFunction(value)) {\n throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isString(value) {\n if (!this.validate.isString(value)) {\n throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isBoolean(value) {\n if (!this.validate.isBoolean(value)) {\n throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isArray(value) {\n if (!this.validate.isArray(value)) {\n throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isNumber(value) {\n if (!this.validate.isNumber(value)) {\n throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isInteger(value) {\n if (!this.validate.isInteger(value)) {\n throw new TypeError(`Expected \"${value}\" to be an integer but got non-integer value`);\n }\n\n return true;\n }\n\n isRegEx(value) {\n if (!this.validate.isRegEx(value)) {\n throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`);\n }\n\n return true;\n }\n\n isStringHex(value) {\n if (!this.validate.isStringHex(value)) {\n throw new TypeError(`Expected \"${value}\" to be hex but got non-hex value`);\n }\n\n return true;\n }\n\n hasKeys(value, keys) {\n if (!this.validate.hasKeys(value, keys)) {\n throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`);\n }\n\n return true;\n }\n\n isStringWithValue(value) {\n if (!this.validate.isStringWithValue(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object String] and not empty`);\n }\n\n return true;\n }\n\n isObjectWithKeys(value) {\n if (!this.validate.isObjectWithKeys(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Object] and have keys`);\n }\n\n return true;\n }\n\n isArrayWithValues(value) {\n if (!this.validate.isArrayWithValues(value)) {\n throw new TypeError(`Expected \"${value}\" to be [object Array] and not empty`);\n }\n\n return true;\n }\n\n isSpecificClass(value, className) {\n if (!this.validate.isSpecificClass(value, className)) {\n throw new TypeError(`Expected Object Class to be \"${className}\" but got ${this.validate.getClassName(value)}`);\n }\n\n return true;\n }\n\n }\n\n const validateTypes = new ValidateTypes();\n const assertTypes = new AssertTypes();\n\n exports.assertTypes = assertTypes;\n exports.validateTypes = validateTypes;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * CryptoJS core components.\r\n */\r\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n /**\r\n * CryptoJS namespace.\r\n */\r\n var C = {};\r\n\r\n /**\r\n * Library namespace.\r\n */\r\n var C_lib = C.lib = {};\r\n\r\n /**\r\n * Base object for prototypal inheritance.\r\n */\r\n var Base = C_lib.Base = (function () {\r\n function F() {}\r\n\r\n return {\r\n /**\r\n * Creates a new object that inherits from this object.\r\n *\r\n * @param {Object} overrides Properties to copy into the new object.\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * field: 'value',\r\n *\r\n * method: function () {\r\n * }\r\n * });\r\n */\r\n extend: function (overrides) {\r\n // Spawn\r\n F.prototype = this;\r\n var subtype = new F();\r\n\r\n // Augment\r\n if (overrides) {\r\n subtype.mixIn(overrides);\r\n }\r\n\r\n // Create default initializer\r\n if (!subtype.hasOwnProperty('init')) {\r\n subtype.init = function () {\r\n subtype.$super.init.apply(this, arguments);\r\n };\r\n }\r\n\r\n // Initializer's prototype is the subtype object\r\n subtype.init.prototype = subtype;\r\n\r\n // Reference supertype\r\n subtype.$super = this;\r\n\r\n return subtype;\r\n },\r\n\r\n /**\r\n * Extends this object and runs the init method.\r\n * Arguments to create() will be passed to init().\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var instance = MyType.create();\r\n */\r\n create: function () {\r\n var instance = this.extend();\r\n instance.init.apply(instance, arguments);\r\n\r\n return instance;\r\n },\r\n\r\n /**\r\n * Initializes a newly created object.\r\n * Override this method to add some logic when your objects are created.\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * init: function () {\r\n * // ...\r\n * }\r\n * });\r\n */\r\n init: function () {\r\n },\r\n\r\n /**\r\n * Copies properties into this object.\r\n *\r\n * @param {Object} properties The properties to mix in.\r\n *\r\n * @example\r\n *\r\n * MyType.mixIn({\r\n * field: 'value'\r\n * });\r\n */\r\n mixIn: function (properties) {\r\n for (var propertyName in properties) {\r\n if (properties.hasOwnProperty(propertyName)) {\r\n this[propertyName] = properties[propertyName];\r\n }\r\n }\r\n\r\n // IE won't copy toString using the loop above\r\n if (properties.hasOwnProperty('toString')) {\r\n this.toString = properties.toString;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = instance.clone();\r\n */\r\n clone: function () {\r\n return this.init.prototype.extend(this);\r\n }\r\n };\r\n }());\r\n\r\n /**\r\n * An array of 32-bit words.\r\n *\r\n * @property {Array} words The array of 32-bit words.\r\n * @property {number} sigBytes The number of significant bytes in this word array.\r\n */\r\n var WordArray = C_lib.WordArray = Base.extend({\r\n /**\r\n * Initializes a newly created word array.\r\n *\r\n * @param {Array} words (Optional) An array of 32-bit words.\r\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.create();\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n */\r\n init: function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes != undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 4;\r\n }\r\n },\r\n\r\n /**\r\n * Converts this word array to a string.\r\n *\r\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n *\r\n * @return {string} The stringified word array.\r\n *\r\n * @example\r\n *\r\n * var string = wordArray + '';\r\n * var string = wordArray.toString();\r\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n */\r\n toString: function (encoder) {\r\n return (encoder || Hex).stringify(this);\r\n },\r\n\r\n /**\r\n * Concatenates a word array to this word array.\r\n *\r\n * @param {WordArray} wordArray The word array to append.\r\n *\r\n * @return {WordArray} This word array.\r\n *\r\n * @example\r\n *\r\n * wordArray1.concat(wordArray2);\r\n */\r\n concat: function (wordArray) {\r\n // Shortcuts\r\n var thisWords = this.words;\r\n var thatWords = wordArray.words;\r\n var thisSigBytes = this.sigBytes;\r\n var thatSigBytes = wordArray.sigBytes;\r\n\r\n // Clamp excess bits\r\n this.clamp();\r\n\r\n // Concat\r\n if (thisSigBytes % 4) {\r\n // Copy one byte at a time\r\n for (var i = 0; i < thatSigBytes; i++) {\r\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n }\r\n } else if (thatWords.length > 0xffff) {\r\n // Copy one word at a time\r\n for (var i = 0; i < thatSigBytes; i += 4) {\r\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n }\r\n } else {\r\n // Copy all words at once\r\n thisWords.push.apply(thisWords, thatWords);\r\n }\r\n this.sigBytes += thatSigBytes;\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Removes insignificant bits.\r\n *\r\n * @example\r\n *\r\n * wordArray.clamp();\r\n */\r\n clamp: function () {\r\n // Shortcuts\r\n var words = this.words;\r\n var sigBytes = this.sigBytes;\r\n\r\n // Clamp\r\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n words.length = Math.ceil(sigBytes / 4);\r\n },\r\n\r\n /**\r\n * Creates a copy of this word array.\r\n *\r\n * @return {WordArray} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = wordArray.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone.words = this.words.slice(0);\r\n\r\n return clone;\r\n },\r\n\r\n /**\r\n * Creates a word array filled with random bytes.\r\n *\r\n * @param {number} nBytes The number of random bytes to generate.\r\n *\r\n * @return {WordArray} The random word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n */\r\n random: function (nBytes) {\r\n var words = [];\r\n for (var i = 0; i < nBytes; i += 4) {\r\n words.push((Math.random() * 0x100000000) | 0);\r\n }\r\n\r\n return new WordArray.init(words, nBytes);\r\n }\r\n });\r\n\r\n /**\r\n * Encoder namespace.\r\n */\r\n var C_enc = C.enc = {};\r\n\r\n /**\r\n * Hex encoding strategy.\r\n */\r\n var Hex = C_enc.Hex = {\r\n /**\r\n * Converts a word array to a hex string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The hex string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var hexChars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n hexChars.push((bite >>> 4).toString(16));\r\n hexChars.push((bite & 0x0f).toString(16));\r\n }\r\n\r\n return hexChars.join('');\r\n },\r\n\r\n /**\r\n * Converts a hex string to a word array.\r\n *\r\n * @param {string} hexStr The hex string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n */\r\n parse: function (hexStr) {\r\n // Shortcut\r\n var hexStrLength = hexStr.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < hexStrLength; i += 2) {\r\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n }\r\n\r\n return new WordArray.init(words, hexStrLength / 2);\r\n }\r\n };\r\n\r\n /**\r\n * Latin1 encoding strategy.\r\n */\r\n var Latin1 = C_enc.Latin1 = {\r\n /**\r\n * Converts a word array to a Latin1 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The Latin1 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var latin1Chars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n },\r\n\r\n /**\r\n * Converts a Latin1 string to a word array.\r\n *\r\n * @param {string} latin1Str The Latin1 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n */\r\n parse: function (latin1Str) {\r\n // Shortcut\r\n var latin1StrLength = latin1Str.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < latin1StrLength; i++) {\r\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n }\r\n\r\n return new WordArray.init(words, latin1StrLength);\r\n }\r\n };\r\n\r\n /**\r\n * UTF-8 encoding strategy.\r\n */\r\n var Utf8 = C_enc.Utf8 = {\r\n /**\r\n * Converts a word array to a UTF-8 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The UTF-8 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n try {\r\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n },\r\n\r\n /**\r\n * Converts a UTF-8 string to a word array.\r\n *\r\n * @param {string} utf8Str The UTF-8 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n */\r\n parse: function (utf8Str) {\r\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n }\r\n };\r\n\r\n /**\r\n * Abstract buffered block algorithm template.\r\n *\r\n * The property blockSize must be implemented in a concrete subtype.\r\n *\r\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n */\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n /**\r\n * Resets this block algorithm's data buffer to its initial state.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm.reset();\r\n */\r\n reset: function () {\r\n // Initial values\r\n this._data = new WordArray.init();\r\n this._nDataBytes = 0;\r\n },\r\n\r\n /**\r\n * Adds new data to this block algorithm's buffer.\r\n *\r\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm._append('data');\r\n * bufferedBlockAlgorithm._append(wordArray);\r\n */\r\n _append: function (data) {\r\n // Convert string to WordArray, else assume WordArray already\r\n if (typeof data == 'string') {\r\n data = Utf8.parse(data);\r\n }\r\n\r\n // Append\r\n this._data.concat(data);\r\n this._nDataBytes += data.sigBytes;\r\n },\r\n\r\n /**\r\n * Processes available data blocks.\r\n *\r\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n *\r\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n *\r\n * @return {WordArray} The processed data.\r\n *\r\n * @example\r\n *\r\n * var processedData = bufferedBlockAlgorithm._process();\r\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n */\r\n _process: function (doFlush) {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n var dataSigBytes = data.sigBytes;\r\n var blockSize = this.blockSize;\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count blocks ready\r\n var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n if (doFlush) {\r\n // Round up to include partial blocks\r\n nBlocksReady = Math.ceil(nBlocksReady);\r\n } else {\r\n // Round down to include only full blocks,\r\n // less the number of blocks that must remain in the buffer\r\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n }\r\n\r\n // Count words ready\r\n var nWordsReady = nBlocksReady * blockSize;\r\n\r\n // Count bytes ready\r\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n // Process blocks\r\n if (nWordsReady) {\r\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n // Perform concrete-algorithm logic\r\n this._doProcessBlock(dataWords, offset);\r\n }\r\n\r\n // Remove processed words\r\n var processedWords = dataWords.splice(0, nWordsReady);\r\n data.sigBytes -= nBytesReady;\r\n }\r\n\r\n // Return processed words\r\n return new WordArray.init(processedWords, nBytesReady);\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = bufferedBlockAlgorithm.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone._data = this._data.clone();\r\n\r\n return clone;\r\n },\r\n\r\n _minBufferSize: 0\r\n });\r\n\r\n /**\r\n * Abstract hasher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n */\r\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Initializes a newly created hasher.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n *\r\n * @example\r\n *\r\n * var hasher = CryptoJS.algo.SHA256.create();\r\n */\r\n init: function (cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this hasher to its initial state.\r\n *\r\n * @example\r\n *\r\n * hasher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-hasher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Updates this hasher with a message.\r\n *\r\n * @param {WordArray|string} messageUpdate The message to append.\r\n *\r\n * @return {Hasher} This hasher.\r\n *\r\n * @example\r\n *\r\n * hasher.update('message');\r\n * hasher.update(wordArray);\r\n */\r\n update: function (messageUpdate) {\r\n // Append\r\n this._append(messageUpdate);\r\n\r\n // Update the hash\r\n this._process();\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Finalizes the hash computation.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @example\r\n *\r\n * var hash = hasher.finalize();\r\n * var hash = hasher.finalize('message');\r\n * var hash = hasher.finalize(wordArray);\r\n */\r\n finalize: function (messageUpdate) {\r\n // Final message update\r\n if (messageUpdate) {\r\n this._append(messageUpdate);\r\n }\r\n\r\n // Perform concrete-hasher logic\r\n var hash = this._doFinalize();\r\n\r\n return hash;\r\n },\r\n\r\n blockSize: 512/32,\r\n\r\n /**\r\n * Creates a shortcut function to a hasher's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to create a helper for.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHelper: function (hasher) {\r\n return function (message, cfg) {\r\n return new hasher.init(cfg).finalize(message);\r\n };\r\n },\r\n\r\n /**\r\n * Creates a shortcut function to the HMAC's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHmacHelper: function (hasher) {\r\n return function (message, key) {\r\n return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n };\r\n }\r\n });\r\n\r\n /**\r\n * Algorithm namespace.\r\n */\r\n var C_algo = C.algo = {};\r\n\r\n return C;\r\n}(Math));\r\n\r\nexports.CryptoJS = CryptoJS;\r\n","var CryptoJS = require('./core').CryptoJS;\n\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n}());\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (Math) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var WordArray = C_lib.WordArray;\r\n var Hasher = C_lib.Hasher;\r\n var C_algo = C.algo;\r\n\r\n // Constants table\r\n var T = [];\r\n\r\n // Compute constants\r\n (function () {\r\n for (var i = 0; i < 64; i++) {\r\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n }\r\n }());\r\n\r\n /**\r\n * MD5 hash algorithm.\r\n */\r\n var MD5 = C_algo.MD5 = Hasher.extend({\r\n _doReset: function () {\r\n this._hash = new WordArray.init([\r\n 0x67452301, 0xefcdab89,\r\n 0x98badcfe, 0x10325476\r\n ]);\r\n },\r\n\r\n _doProcessBlock: function (M, offset) {\r\n // Swap endian\r\n for (var i = 0; i < 16; i++) {\r\n // Shortcuts\r\n var offset_i = offset + i;\r\n var M_offset_i = M[offset_i];\r\n\r\n M[offset_i] = (\r\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n );\r\n }\r\n\r\n // Shortcuts\r\n var H = this._hash.words;\r\n\r\n var M_offset_0 = M[offset + 0];\r\n var M_offset_1 = M[offset + 1];\r\n var M_offset_2 = M[offset + 2];\r\n var M_offset_3 = M[offset + 3];\r\n var M_offset_4 = M[offset + 4];\r\n var M_offset_5 = M[offset + 5];\r\n var M_offset_6 = M[offset + 6];\r\n var M_offset_7 = M[offset + 7];\r\n var M_offset_8 = M[offset + 8];\r\n var M_offset_9 = M[offset + 9];\r\n var M_offset_10 = M[offset + 10];\r\n var M_offset_11 = M[offset + 11];\r\n var M_offset_12 = M[offset + 12];\r\n var M_offset_13 = M[offset + 13];\r\n var M_offset_14 = M[offset + 14];\r\n var M_offset_15 = M[offset + 15];\r\n\r\n // Working varialbes\r\n var a = H[0];\r\n var b = H[1];\r\n var c = H[2];\r\n var d = H[3];\r\n\r\n // Computation\r\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n // Intermediate hash value\r\n H[0] = (H[0] + a) | 0;\r\n H[1] = (H[1] + b) | 0;\r\n H[2] = (H[2] + c) | 0;\r\n H[3] = (H[3] + d) | 0;\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n\r\n var nBitsTotal = this._nDataBytes * 8;\r\n var nBitsLeft = data.sigBytes * 8;\r\n\r\n // Add padding\r\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n var nBitsTotalL = nBitsTotal;\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n );\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n );\r\n\r\n data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n // Hash final blocks\r\n this._process();\r\n\r\n // Shortcuts\r\n var hash = this._hash;\r\n var H = hash.words;\r\n\r\n // Swap endian\r\n for (var i = 0; i < 4; i++) {\r\n // Shortcut\r\n var H_i = H[i];\r\n\r\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n }\r\n\r\n // Return final computed hash\r\n return hash;\r\n },\r\n\r\n clone: function () {\r\n var clone = Hasher.clone.call(this);\r\n clone._hash = this._hash.clone();\r\n\r\n return clone;\r\n }\r\n });\r\n\r\n function FF(a, b, c, d, x, s, t) {\r\n var n = a + ((b & c) | (~b & d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function GG(a, b, c, d, x, s, t) {\r\n var n = a + ((b & d) | (c & ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function HH(a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function II(a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n /**\r\n * Shortcut function to the hasher's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hash = CryptoJS.MD5('message');\r\n * var hash = CryptoJS.MD5(wordArray);\r\n */\r\n C.MD5 = Hasher._createHelper(MD5);\r\n\r\n /**\r\n * Shortcut function to the HMAC's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n * @param {WordArray|string} key The secret key.\r\n *\r\n * @return {WordArray} The HMAC.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hmac = CryptoJS.HmacMD5(message, key);\r\n */\r\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n}(Math));\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var C_algo = C.algo;\r\n var MD5 = C_algo.MD5;\r\n\r\n /**\r\n * This key derivation function is meant to conform with EVP_BytesToKey.\r\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n */\r\n var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n * @property {number} iterations The number of iterations to perform. Default: 1\r\n */\r\n cfg: Base.extend({\r\n keySize: 128/32,\r\n hasher: MD5,\r\n iterations: 1\r\n }),\r\n\r\n /**\r\n * Initializes a newly created key derivation function.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n *\r\n * @example\r\n *\r\n * var kdf = CryptoJS.algo.EvpKDF.create();\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n */\r\n init: function (cfg) {\r\n this.cfg = this.cfg.extend(cfg);\r\n },\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @example\r\n *\r\n * var key = kdf.compute(password, salt);\r\n */\r\n compute: function (password, salt) {\r\n // Shortcut\r\n var cfg = this.cfg;\r\n\r\n // Init hasher\r\n var hasher = cfg.hasher.create();\r\n\r\n // Initial values\r\n var derivedKey = WordArray.create();\r\n\r\n // Shortcuts\r\n var derivedKeyWords = derivedKey.words;\r\n var keySize = cfg.keySize;\r\n var iterations = cfg.iterations;\r\n\r\n // Generate key\r\n while (derivedKeyWords.length < keySize) {\r\n if (block) {\r\n hasher.update(block);\r\n }\r\n var block = hasher.update(password).finalize(salt);\r\n hasher.reset();\r\n\r\n // Iterations\r\n for (var i = 1; i < iterations; i++) {\r\n block = hasher.finalize(block);\r\n hasher.reset();\r\n }\r\n\r\n derivedKey.concat(block);\r\n }\r\n derivedKey.sigBytes = keySize * 4;\r\n\r\n return derivedKey;\r\n }\r\n });\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var key = CryptoJS.EvpKDF(password, salt);\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n */\r\n C.EvpKDF = function (password, salt, cfg) {\r\n return EvpKDF.create(cfg).compute(password, salt);\r\n };\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * Cipher core components.\r\n */\r\nCryptoJS.lib.Cipher || (function (undefined) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n var C_enc = C.enc;\r\n var Utf8 = C_enc.Utf8;\r\n var Base64 = C_enc.Base64;\r\n var C_algo = C.algo;\r\n var EvpKDF = C_algo.EvpKDF;\r\n\r\n /**\r\n * Abstract base cipher template.\r\n *\r\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n */\r\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {WordArray} iv The IV to use for this operation.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Creates this cipher in encryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createEncryptor: function (key, cfg) {\r\n return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Creates this cipher in decryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createDecryptor: function (key, cfg) {\r\n return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Initializes a newly created cipher.\r\n *\r\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n */\r\n init: function (xformMode, key, cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Store transform mode and key\r\n this._xformMode = xformMode;\r\n this._key = key;\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this cipher to its initial state.\r\n *\r\n * @example\r\n *\r\n * cipher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-cipher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Adds data to be encrypted or decrypted.\r\n *\r\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.process('data');\r\n * var encrypted = cipher.process(wordArray);\r\n */\r\n process: function (dataUpdate) {\r\n // Append\r\n this._append(dataUpdate);\r\n\r\n // Process available blocks\r\n return this._process();\r\n },\r\n\r\n /**\r\n * Finalizes the encryption or decryption process.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after final processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.finalize();\r\n * var encrypted = cipher.finalize('data');\r\n * var encrypted = cipher.finalize(wordArray);\r\n */\r\n finalize: function (dataUpdate) {\r\n // Final data update\r\n if (dataUpdate) {\r\n this._append(dataUpdate);\r\n }\r\n\r\n // Perform concrete-cipher logic\r\n var finalProcessedData = this._doFinalize();\r\n\r\n return finalProcessedData;\r\n },\r\n\r\n keySize: 128/32,\r\n\r\n ivSize: 128/32,\r\n\r\n _ENC_XFORM_MODE: 1,\r\n\r\n _DEC_XFORM_MODE: 2,\r\n\r\n /**\r\n * Creates shortcut functions to a cipher's object interface.\r\n *\r\n * @param {Cipher} cipher The cipher to create a helper for.\r\n *\r\n * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n */\r\n _createHelper: (function () {\r\n function selectCipherStrategy(key) {\r\n if (typeof key == 'string') {\r\n return PasswordBasedCipher;\r\n } else {\r\n return SerializableCipher;\r\n }\r\n }\r\n\r\n return function (cipher) {\r\n return {\r\n encrypt: function (message, key, cfg) {\r\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n },\r\n\r\n decrypt: function (ciphertext, key, cfg) {\r\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n }\r\n };\r\n };\r\n }())\r\n });\r\n\r\n /**\r\n * Abstract base stream cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n */\r\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n _doFinalize: function () {\r\n // Process partial blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 1\r\n });\r\n\r\n /**\r\n * Mode namespace.\r\n */\r\n var C_mode = C.mode = {};\r\n\r\n /**\r\n * Abstract base block cipher mode template.\r\n */\r\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n /**\r\n * Creates this mode for encryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n */\r\n createEncryptor: function (cipher, iv) {\r\n return this.Encryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Creates this mode for decryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n */\r\n createDecryptor: function (cipher, iv) {\r\n return this.Decryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Initializes a newly created mode.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n */\r\n init: function (cipher, iv) {\r\n this._cipher = cipher;\r\n this._iv = iv;\r\n }\r\n });\r\n\r\n /**\r\n * Cipher Block Chaining mode.\r\n */\r\n var CBC = C_mode.CBC = (function () {\r\n /**\r\n * Abstract base CBC mode.\r\n */\r\n var CBC = BlockCipherMode.extend();\r\n\r\n /**\r\n * CBC encryptor.\r\n */\r\n CBC.Encryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // XOR and encrypt\r\n xorBlock.call(this, words, offset, blockSize);\r\n cipher.encryptBlock(words, offset);\r\n\r\n // Remember this block to use with next block\r\n this._prevBlock = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n /**\r\n * CBC decryptor.\r\n */\r\n CBC.Decryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // Remember this block to use with next block\r\n var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n // Decrypt and XOR\r\n cipher.decryptBlock(words, offset);\r\n xorBlock.call(this, words, offset, blockSize);\r\n\r\n // This block becomes the previous block\r\n this._prevBlock = thisBlock;\r\n }\r\n });\r\n\r\n function xorBlock(words, offset, blockSize) {\r\n // Shortcut\r\n var iv = this._iv;\r\n\r\n // Choose mixing block\r\n if (iv) {\r\n var block = iv;\r\n\r\n // Remove IV for subsequent blocks\r\n this._iv = undefined;\r\n } else {\r\n var block = this._prevBlock;\r\n }\r\n\r\n // XOR blocks\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return CBC;\r\n }());\r\n\r\n /**\r\n * Padding namespace.\r\n */\r\n var C_pad = C.pad = {};\r\n\r\n /**\r\n * PKCS #5/7 padding strategy.\r\n */\r\n var Pkcs7 = C_pad.Pkcs7 = {\r\n /**\r\n * Pads data using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to pad.\r\n * @param {number} blockSize The multiple that the data should be padded to.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n */\r\n pad: function (data, blockSize) {\r\n // Shortcut\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count padding bytes\r\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n // Create padding word\r\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n // Create padding\r\n var paddingWords = [];\r\n for (var i = 0; i < nPaddingBytes; i += 4) {\r\n paddingWords.push(paddingWord);\r\n }\r\n var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n // Add padding\r\n data.concat(padding);\r\n },\r\n\r\n /**\r\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to unpad.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n */\r\n unpad: function (data) {\r\n // Get number of padding bytes from last byte\r\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n // Remove padding\r\n data.sigBytes -= nPaddingBytes;\r\n }\r\n };\r\n\r\n /**\r\n * Abstract base block cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n */\r\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Mode} mode The block mode to use. Default: CBC\r\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n */\r\n cfg: Cipher.cfg.extend({\r\n mode: CBC,\r\n padding: Pkcs7\r\n }),\r\n\r\n reset: function () {\r\n // Reset cipher\r\n Cipher.reset.call(this);\r\n\r\n // Shortcuts\r\n var cfg = this.cfg;\r\n var iv = cfg.iv;\r\n var mode = cfg.mode;\r\n\r\n // Reset block mode\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n var modeCreator = mode.createEncryptor;\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n var modeCreator = mode.createDecryptor;\r\n\r\n // Keep at least one block in the buffer for unpadding\r\n this._minBufferSize = 1;\r\n }\r\n this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n },\r\n\r\n _doProcessBlock: function (words, offset) {\r\n this._mode.processBlock(words, offset);\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcut\r\n var padding = this.cfg.padding;\r\n\r\n // Finalize\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n // Pad data\r\n padding.pad(this._data, this.blockSize);\r\n\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n // Unpad data\r\n padding.unpad(finalProcessedBlocks);\r\n }\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 128/32\r\n });\r\n\r\n /**\r\n * A collection of cipher parameters.\r\n *\r\n * @property {WordArray} ciphertext The raw ciphertext.\r\n * @property {WordArray} key The key to this ciphertext.\r\n * @property {WordArray} iv The IV used in the ciphering operation.\r\n * @property {WordArray} salt The salt used with a key derivation function.\r\n * @property {Cipher} algorithm The cipher algorithm.\r\n * @property {Mode} mode The block mode used in the ciphering operation.\r\n * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n * @property {number} blockSize The block size of the cipher.\r\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n */\r\n var CipherParams = C_lib.CipherParams = Base.extend({\r\n /**\r\n * Initializes a newly created cipher params object.\r\n *\r\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n * ciphertext: ciphertextWordArray,\r\n * key: keyWordArray,\r\n * iv: ivWordArray,\r\n * salt: saltWordArray,\r\n * algorithm: CryptoJS.algo.AES,\r\n * mode: CryptoJS.mode.CBC,\r\n * padding: CryptoJS.pad.PKCS7,\r\n * blockSize: 4,\r\n * formatter: CryptoJS.format.OpenSSL\r\n * });\r\n */\r\n init: function (cipherParams) {\r\n this.mixIn(cipherParams);\r\n },\r\n\r\n /**\r\n * Converts this cipher params object to a string.\r\n *\r\n * @param {Format} formatter (Optional) The formatting strategy to use.\r\n *\r\n * @return {string} The stringified cipher params.\r\n *\r\n * @throws Error If neither the formatter nor the default formatter is set.\r\n *\r\n * @example\r\n *\r\n * var string = cipherParams + '';\r\n * var string = cipherParams.toString();\r\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n */\r\n toString: function (formatter) {\r\n return (formatter || this.formatter).stringify(this);\r\n }\r\n });\r\n\r\n /**\r\n * Format namespace.\r\n */\r\n var C_format = C.format = {};\r\n\r\n /**\r\n * OpenSSL formatting strategy.\r\n */\r\n var OpenSSLFormatter = C_format.OpenSSL = {\r\n /**\r\n * Converts a cipher params object to an OpenSSL-compatible string.\r\n *\r\n * @param {CipherParams} cipherParams The cipher params object.\r\n *\r\n * @return {string} The OpenSSL-compatible string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n */\r\n stringify: function (cipherParams) {\r\n // Shortcuts\r\n var ciphertext = cipherParams.ciphertext;\r\n var salt = cipherParams.salt;\r\n\r\n // Format\r\n if (salt) {\r\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n } else {\r\n var wordArray = ciphertext;\r\n }\r\n\r\n return wordArray.toString(Base64);\r\n },\r\n\r\n /**\r\n * Converts an OpenSSL-compatible string to a cipher params object.\r\n *\r\n * @param {string} openSSLStr The OpenSSL-compatible string.\r\n *\r\n * @return {CipherParams} The cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n */\r\n parse: function (openSSLStr) {\r\n // Parse base64\r\n var ciphertext = Base64.parse(openSSLStr);\r\n\r\n // Shortcut\r\n var ciphertextWords = ciphertext.words;\r\n\r\n // Test for salt\r\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n // Extract salt\r\n var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n // Remove salt from ciphertext\r\n ciphertextWords.splice(0, 4);\r\n ciphertext.sigBytes -= 16;\r\n }\r\n\r\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n */\r\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n */\r\n cfg: Base.extend({\r\n format: OpenSSLFormatter\r\n }),\r\n\r\n /**\r\n * Encrypts a message.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Encrypt\r\n var encryptor = cipher.createEncryptor(key, cfg);\r\n var ciphertext = encryptor.finalize(message);\r\n\r\n // Shortcut\r\n var cipherCfg = encryptor.cfg;\r\n\r\n // Create and return serializable cipher params\r\n return CipherParams.create({\r\n ciphertext: ciphertext,\r\n key: key,\r\n iv: cipherCfg.iv,\r\n algorithm: cipher,\r\n mode: cipherCfg.mode,\r\n padding: cipherCfg.padding,\r\n blockSize: cipher.blockSize,\r\n formatter: cfg.format\r\n });\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Decrypt\r\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n return plaintext;\r\n },\r\n\r\n /**\r\n * Converts serialized ciphertext to CipherParams,\r\n * else assumed CipherParams already and returns ciphertext unchanged.\r\n *\r\n * @param {CipherParams|string} ciphertext The ciphertext.\r\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n *\r\n * @return {CipherParams} The unserialized ciphertext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n */\r\n _parse: function (ciphertext, format) {\r\n if (typeof ciphertext == 'string') {\r\n return format.parse(ciphertext, this);\r\n } else {\r\n return ciphertext;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Key derivation function namespace.\r\n */\r\n var C_kdf = C.kdf = {};\r\n\r\n /**\r\n * OpenSSL key derivation function.\r\n */\r\n var OpenSSLKdf = C_kdf.OpenSSL = {\r\n /**\r\n * Derives a key and IV from a password.\r\n *\r\n * @param {string} password The password to derive from.\r\n * @param {number} keySize The size in words of the key to generate.\r\n * @param {number} ivSize The size in words of the IV to generate.\r\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n *\r\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n */\r\n execute: function (password, keySize, ivSize, salt) {\r\n // Generate random salt\r\n if (!salt) {\r\n salt = WordArray.random(64/8);\r\n }\r\n\r\n // Derive key and IV\r\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n // Separate key and IV\r\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n key.sigBytes = keySize * 4;\r\n\r\n // Return params\r\n return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A serializable cipher wrapper that derives the key from a password,\r\n * and returns ciphertext as a serializable cipher params object.\r\n */\r\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n */\r\n cfg: SerializableCipher.cfg.extend({\r\n kdf: OpenSSLKdf\r\n }),\r\n\r\n /**\r\n * Encrypts a message using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Encrypt\r\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n // Mix in derived params\r\n ciphertext.mixIn(derivedParams);\r\n\r\n return ciphertext;\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Decrypt\r\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n return plaintext;\r\n }\r\n });\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var BlockCipher = C_lib.BlockCipher;\r\n var C_algo = C.algo;\r\n\r\n // Lookup tables\r\n var SBOX = [];\r\n var INV_SBOX = [];\r\n var SUB_MIX_0 = [];\r\n var SUB_MIX_1 = [];\r\n var SUB_MIX_2 = [];\r\n var SUB_MIX_3 = [];\r\n var INV_SUB_MIX_0 = [];\r\n var INV_SUB_MIX_1 = [];\r\n var INV_SUB_MIX_2 = [];\r\n var INV_SUB_MIX_3 = [];\r\n\r\n // Compute lookup tables\r\n (function () {\r\n // Compute double table\r\n var d = [];\r\n for (var i = 0; i < 256; i++) {\r\n if (i < 128) {\r\n d[i] = i << 1;\r\n } else {\r\n d[i] = (i << 1) ^ 0x11b;\r\n }\r\n }\r\n\r\n // Walk GF(2^8)\r\n var x = 0;\r\n var xi = 0;\r\n for (var i = 0; i < 256; i++) {\r\n // Compute sbox\r\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n SBOX[x] = sx;\r\n INV_SBOX[sx] = x;\r\n\r\n // Compute multiplication\r\n var x2 = d[x];\r\n var x4 = d[x2];\r\n var x8 = d[x4];\r\n\r\n // Compute sub bytes, mix columns tables\r\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n SUB_MIX_3[x] = t;\r\n\r\n // Compute inv sub bytes, inv mix columns tables\r\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n INV_SUB_MIX_3[sx] = t;\r\n\r\n // Compute next counter\r\n if (!x) {\r\n x = xi = 1;\r\n } else {\r\n x = x2 ^ d[d[d[x8 ^ x2]]];\r\n xi ^= d[d[xi]];\r\n }\r\n }\r\n }());\r\n\r\n // Precomputed Rcon lookup\r\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n /**\r\n * AES block cipher algorithm.\r\n */\r\n var AES = C_algo.AES = BlockCipher.extend({\r\n _doReset: function () {\r\n // Shortcuts\r\n var key = this._key;\r\n var keyWords = key.words;\r\n var keySize = key.sigBytes / 4;\r\n\r\n // Compute number of rounds\r\n var nRounds = this._nRounds = keySize + 6\r\n\r\n // Compute number of key schedule rows\r\n var ksRows = (nRounds + 1) * 4;\r\n\r\n // Compute key schedule\r\n var keySchedule = this._keySchedule = [];\r\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n if (ksRow < keySize) {\r\n keySchedule[ksRow] = keyWords[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 1];\r\n\r\n if (!(ksRow % keySize)) {\r\n // Rot word\r\n t = (t << 8) | (t >>> 24);\r\n\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n // Mix Rcon\r\n t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n } else if (keySize > 6 && ksRow % keySize == 4) {\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n }\r\n\r\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n }\r\n }\r\n\r\n // Compute inv key schedule\r\n var invKeySchedule = this._invKeySchedule = [];\r\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n var ksRow = ksRows - invKsRow;\r\n\r\n if (invKsRow % 4) {\r\n var t = keySchedule[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 4];\r\n }\r\n\r\n if (invKsRow < 4 || ksRow <= 4) {\r\n invKeySchedule[invKsRow] = t;\r\n } else {\r\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n }\r\n }\r\n },\r\n\r\n encryptBlock: function (M, offset) {\r\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n },\r\n\r\n decryptBlock: function (M, offset) {\r\n // Swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n\r\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n // Inv swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n },\r\n\r\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n // Shortcut\r\n var nRounds = this._nRounds;\r\n\r\n // Get input, add round key\r\n var s0 = M[offset] ^ keySchedule[0];\r\n var s1 = M[offset + 1] ^ keySchedule[1];\r\n var s2 = M[offset + 2] ^ keySchedule[2];\r\n var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n // Key schedule row counter\r\n var ksRow = 4;\r\n\r\n // Rounds\r\n for (var round = 1; round < nRounds; round++) {\r\n // Shift rows, sub bytes, mix columns, add round key\r\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n // Update state\r\n s0 = t0;\r\n s1 = t1;\r\n s2 = t2;\r\n s3 = t3;\r\n }\r\n\r\n // Shift rows, sub bytes, add round key\r\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n // Set output\r\n M[offset] = t0;\r\n M[offset + 1] = t1;\r\n M[offset + 2] = t2;\r\n M[offset + 3] = t3;\r\n },\r\n\r\n keySize: 256/32\r\n });\r\n\r\n /**\r\n * Shortcut functions to the cipher's object interface.\r\n *\r\n * @example\r\n *\r\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n */\r\n C.AES = BlockCipher._createHelper(AES);\r\n}());\r\n","var CryptoJS = require('./core').CryptoJS;\n\n// create custom json serialization format\nvar JsonFormatter = {\n\tstringify: function (cipherParams) {\n\t\t// create json object with ciphertext\n\t\tvar jsonObj = {\n\t\t\tct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)\n\t\t};\n\t\t\n\t\t// optionally add iv and salt\n\t\tif (cipherParams.iv) {\n\t\t\tjsonObj.iv = cipherParams.iv.toString();\n\t\t}\n\t\t\n\t\tif (cipherParams.salt) {\n\t\t\tjsonObj.s = cipherParams.salt.toString();\n\t\t}\n\n\t\t// stringify json object\n\t\treturn JSON.stringify(jsonObj)\n\t},\n\n\tparse: function (jsonStr) {\n\t\t// parse json string\n\t\tvar jsonObj = JSON.parse(jsonStr);\n\t\t\n\t\t// extract ciphertext from json object, and create cipher params object\n\t\tvar cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t\tciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)\n\t\t});\n\t\t\n\t\t// optionally extract iv and salt\n\t\tif (jsonObj.iv) {\n\t\t\tcipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);\n\t\t}\n \n\t\tif (jsonObj.s) {\n\t\t\tcipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);\n\t\t}\n\t\t\n\t\treturn cipherParams;\n\t}\n};\n\nexports.JsonFormatter = JsonFormatter;","var CryptoJS = require('./lib/core').CryptoJS;\nrequire('./lib/enc-base64');\nrequire('./lib/md5');\nrequire('./lib/evpkdf');\nrequire('./lib/cipher-core');\nrequire('./lib/aes');\nvar JsonFormatter = require('./lib/jsonformatter').JsonFormatter;\n\nexports.CryptoJS = CryptoJS;\nexports.JsonFormatter = JsonFormatter;","import nodeCryptoJs from \"node-cryptojs-aes\";\nconst { CryptoJS, JsonFormatter } = nodeCryptoJs;\nimport validators from \"types-validate-assert\";\nconst { validateTypes, assertTypes } = validators;\n\n/**\n * Encrypt a Javascript object with a string password\n * The object passed must pass JSON.stringify or the method will fail.\n *\n * @param {string} password A password to encrypt the object with\n * @param {Object} obj A javascript object (must be JSON compatible)\n * @return {string} Encrypted string\n */\nexport function encryptObject(password, obj) {\n assertTypes.isStringWithValue(password);\n assertTypes.isObject(obj);\n\n const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, {\n format: JsonFormatter,\n }).toString();\n return encrypted;\n}\n\n/**\n * Decrypt an Object using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} objString A javascript object as JSON string\n * @return {string} Encrypted string\n */\nexport function decryptObject(password, objString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(objString);\n\n try {\n const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter });\n return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Encrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} string A string to be password encrypted\n * @return {string} Encrypted string\n */\nexport function encryptStrHash(password, string) {\n assertTypes.isStringWithValue(password);\n assertTypes.isString(string);\n\n const encrypt = CryptoJS.AES.encrypt(string, password).toString();\n return encrypt;\n}\n\n/**\n * Decrypt a string using a password string\n *\n * @param {string} password A password to encrypt the object with\n * @param {string} encryptedString A string to decrypt\n * @return {string} Decrypted string\n */\nexport function decryptStrHash(password, encryptedString) {\n assertTypes.isStringWithValue(password);\n assertTypes.isStringWithValue(encryptedString);\n\n try {\n const decrypted = CryptoJS.AES.decrypt(encryptedString, password);\n return CryptoJS.enc.Utf8.stringify(decrypted) === \"\"\n ? false\n : CryptoJS.enc.Utf8.stringify(decrypted);\n } catch (e) {\n return false;\n }\n}\n\nexport function buf2hex(buffer) {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (x) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\nexport function hex2buf(hexString) {\n var bytes = new Uint8Array(Math.ceil(hexString.length / 2));\n for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16);\n return bytes;\n}\nexport function str2buf(string) {\n var buf = new Buffer.from(string);\n return new Uint8Array(buf);\n}\nexport function concatUint8Arrays(array1, array2) {\n var arr = new Uint8Array(array1.length + array2.length);\n arr.set(array1);\n arr.set(array2, array1.length);\n return arr;\n}\nexport function ab2str(buf) {\n return String.fromCharCode.apply(null, new Uint8Array(buf));\n}\nexport function str2ab(str) {\n var buf = new ArrayBuffer(str.length);\n var bufView = new Uint8Array(buf);\n for (var i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\nexport function str2hex(str) {\n var hex = \"\";\n for (var i = 0; i < str.length; i++) {\n hex += \"\" + str.charCodeAt(i).toString(16);\n }\n return hex;\n}\nexport function hex2str(hexx) {\n var hex = hexx.toString(); //force conversion\n var str = \"\";\n for (var i = 0; i < hex.length && hex.substr(i, 2) !== \"00\"; i += 2)\n str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n return str;\n}\nexport function randomString(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (var i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n}\nexport function isStringHex(string = \"\") {\n let hexRegEx = /([0-9]|[a-f])/gim;\n return typeof string === \"string\" && (string.match(hexRegEx) || []).length === string.length;\n}\n\nexport function isLamdenKey(string) {\n if (validateTypes.isStringHex(string) && string.length === 64) return true;\n return false;\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.bip39 = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],2:[function(require,module,exports){\n\n},{}],3:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction 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\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n 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\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction 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)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n},{\"base64-js\":1,\"buffer\":3,\"ieee754\":5}],4:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n},{}],5:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],6:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],7:[function(require,module,exports){\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n},{}],8:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],9:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":3}],10:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n},{\"events\":4,\"inherits\":6,\"readable-stream/lib/_stream_duplex.js\":12,\"readable-stream/lib/_stream_passthrough.js\":13,\"readable-stream/lib/_stream_readable.js\":14,\"readable-stream/lib/_stream_transform.js\":15,\"readable-stream/lib/_stream_writable.js\":16,\"readable-stream/lib/internal/streams/end-of-stream.js\":20,\"readable-stream/lib/internal/streams/pipeline.js\":22}],11:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],12:[function(require,module,exports){\n(function (process){(function (){\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});\n}).call(this)}).call(this,require('_process'))\n},{\"./_stream_readable\":14,\"./_stream_writable\":16,\"_process\":8,\"inherits\":6}],13:[function(require,module,exports){\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};\n},{\"./_stream_transform\":15,\"inherits\":6}],14:[function(require,module,exports){\n(function (process,global){(function (){\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}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../errors\":11,\"./_stream_duplex\":12,\"./internal/streams/async_iterator\":17,\"./internal/streams/buffer_list\":18,\"./internal/streams/destroy\":19,\"./internal/streams/from\":21,\"./internal/streams/state\":23,\"./internal/streams/stream\":24,\"_process\":8,\"buffer\":3,\"events\":4,\"inherits\":6,\"string_decoder/\":25,\"util\":2}],15:[function(require,module,exports){\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}\n},{\"../errors\":11,\"./_stream_duplex\":12,\"inherits\":6}],16:[function(require,module,exports){\n(function (process,global){(function (){\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};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../errors\":11,\"./_stream_duplex\":12,\"./internal/streams/destroy\":19,\"./internal/streams/state\":23,\"./internal/streams/stream\":24,\"_process\":8,\"buffer\":3,\"inherits\":6,\"util-deprecate\":26}],17:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n},{\"./end-of-stream\":20,\"_process\":8}],18:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n},{\"buffer\":3,\"util\":2}],19:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n},{\"_process\":8}],20:[function(require,module,exports){\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;\n},{\"../../../errors\":11}],21:[function(require,module,exports){\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],22:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":11,\"./end-of-stream\":20}],23:[function(require,module,exports){\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};\n},{\"../../../errors\":11}],24:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":4}],25:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":9}],26:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],27:[function(require,module,exports){\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n\n},{\"inherits\":31,\"safe-buffer\":40,\"stream\":10,\"string_decoder\":25}],28:[function(require,module,exports){\n'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n\n},{\"cipher-base\":27,\"inherits\":31,\"md5.js\":32,\"ripemd160\":39,\"sha.js\":42}],29:[function(require,module,exports){\nvar MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n\n},{\"md5.js\":32}],30:[function(require,module,exports){\n'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n\n},{\"inherits\":31,\"safe-buffer\":40,\"stream\":10}],31:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],32:[function(require,module,exports){\n'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n\n},{\"hash-base\":30,\"inherits\":31,\"safe-buffer\":40}],33:[function(require,module,exports){\nexports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n\n},{\"./lib/async\":34,\"./lib/sync\":37}],34:[function(require,module,exports){\n(function (process,global){(function (){\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./default-encoding\":35,\"./precondition\":36,\"./sync\":37,\"_process\":8,\"safe-buffer\":40}],35:[function(require,module,exports){\n(function (process){(function (){\nvar defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n\n}).call(this)}).call(this,require('_process'))\n},{\"_process\":8}],36:[function(require,module,exports){\n(function (Buffer){(function (){\nvar MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n\n}).call(this)}).call(this,{\"isBuffer\":require(\"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js\")})\n},{\"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js\":7}],37:[function(require,module,exports){\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n\n},{\"./default-encoding\":35,\"./precondition\":36,\"create-hash/md5\":29,\"ripemd160\":39,\"safe-buffer\":40,\"sha.js\":42}],38:[function(require,module,exports){\n(function (process,global){(function (){\n'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":8,\"safe-buffer\":40}],39:[function(require,module,exports){\n'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n\n},{\"buffer\":3,\"hash-base\":30,\"inherits\":31}],40:[function(require,module,exports){\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":3}],41:[function(require,module,exports){\nvar Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n\n},{\"safe-buffer\":40}],42:[function(require,module,exports){\nvar exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n\n},{\"./sha\":43,\"./sha1\":44,\"./sha224\":45,\"./sha256\":46,\"./sha384\":47,\"./sha512\":48}],43:[function(require,module,exports){\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],44:[function(require,module,exports){\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],45:[function(require,module,exports){\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n\n},{\"./hash\":41,\"./sha256\":46,\"inherits\":31,\"safe-buffer\":40}],46:[function(require,module,exports){\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],47:[function(require,module,exports){\nvar inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n\n},{\"./hash\":41,\"./sha512\":48,\"inherits\":31,\"safe-buffer\":40}],48:[function(require,module,exports){\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n\n},{\"./hash\":41,\"inherits\":31,\"safe-buffer\":40}],49:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// browserify by default only pulls in files that are hard coded in requires\n// In order of last to first in this file, the default wordlist will be chosen\n// based on what is present. (Bundles may remove wordlists they don't need)\nconst wordlists = {};\nexports.wordlists = wordlists;\nlet _default;\nexports._default = _default;\ntry {\n exports._default = _default = require('./wordlists/czech.json');\n wordlists.czech = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_simplified.json');\n wordlists.chinese_simplified = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/chinese_traditional.json');\n wordlists.chinese_traditional = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/korean.json');\n wordlists.korean = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/french.json');\n wordlists.french = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/italian.json');\n wordlists.italian = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/spanish.json');\n wordlists.spanish = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/japanese.json');\n wordlists.japanese = _default;\n wordlists.JA = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/portuguese.json');\n wordlists.portuguese = _default;\n}\ncatch (err) { }\ntry {\n exports._default = _default = require('./wordlists/english.json');\n wordlists.english = _default;\n wordlists.EN = _default;\n}\ncatch (err) { }\n\n},{\"./wordlists/chinese_simplified.json\":51,\"./wordlists/chinese_traditional.json\":undefined,\"./wordlists/czech.json\":undefined,\"./wordlists/english.json\":52,\"./wordlists/french.json\":undefined,\"./wordlists/italian.json\":undefined,\"./wordlists/japanese.json\":53,\"./wordlists/korean.json\":undefined,\"./wordlists/portuguese.json\":54,\"./wordlists/spanish.json\":undefined}],50:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createHash = require(\"create-hash\");\nconst pbkdf2_1 = require(\"pbkdf2\");\nconst randomBytes = require(\"randombytes\");\nconst _wordlists_1 = require(\"./_wordlists\");\nlet DEFAULT_WORDLIST = _wordlists_1._default;\nconst INVALID_MNEMONIC = 'Invalid mnemonic';\nconst INVALID_ENTROPY = 'Invalid entropy';\nconst INVALID_CHECKSUM = 'Invalid mnemonic checksum';\nconst WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\\n' +\n 'Please pass a 2048 word array explicitly.';\nfunction pbkdf2Promise(password, saltMixin, iterations, keylen, digest) {\n return Promise.resolve().then(() => new Promise((resolve, reject) => {\n const callback = (err, derivedKey) => {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(derivedKey);\n }\n };\n pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback);\n }));\n}\nfunction normalize(str) {\n return (str || '').normalize('NFKD');\n}\nfunction lpad(str, padString, length) {\n while (str.length < length) {\n str = padString + str;\n }\n return str;\n}\nfunction binaryToByte(bin) {\n return parseInt(bin, 2);\n}\nfunction bytesToBinary(bytes) {\n return bytes.map((x) => lpad(x.toString(2), '0', 8)).join('');\n}\nfunction deriveChecksumBits(entropyBuffer) {\n const ENT = entropyBuffer.length * 8;\n const CS = ENT / 32;\n const hash = createHash('sha256')\n .update(entropyBuffer)\n .digest();\n return bytesToBinary(Array.from(hash)).slice(0, CS);\n}\nfunction salt(password) {\n return 'mnemonic' + (password || '');\n}\nfunction mnemonicToSeedSync(mnemonic, password) {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n}\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\nfunction mnemonicToSeed(mnemonic, password) {\n return Promise.resolve().then(() => {\n const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8');\n const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8');\n return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512');\n });\n}\nexports.mnemonicToSeed = mnemonicToSeed;\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n const words = normalize(mnemonic).split(' ');\n if (words.length % 3 !== 0) {\n throw new Error(INVALID_MNEMONIC);\n }\n // convert word indices to 11 bit binary strings\n const bits = words\n .map((word) => {\n const index = wordlist.indexOf(word);\n if (index === -1) {\n throw new Error(INVALID_MNEMONIC);\n }\n return lpad(index.toString(2), '0', 11);\n })\n .join('');\n // split the binary string into ENT/CS\n const dividerIndex = Math.floor(bits.length / 33) * 32;\n const entropyBits = bits.slice(0, dividerIndex);\n const checksumBits = bits.slice(dividerIndex);\n // calculate the checksum and compare\n const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte);\n if (entropyBytes.length < 16) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length > 32) {\n throw new Error(INVALID_ENTROPY);\n }\n if (entropyBytes.length % 4 !== 0) {\n throw new Error(INVALID_ENTROPY);\n }\n const entropy = Buffer.from(entropyBytes);\n const newChecksum = deriveChecksumBits(entropy);\n if (newChecksum !== checksumBits) {\n throw new Error(INVALID_CHECKSUM);\n }\n return entropy.toString('hex');\n}\nexports.mnemonicToEntropy = mnemonicToEntropy;\nfunction entropyToMnemonic(entropy, wordlist) {\n if (!Buffer.isBuffer(entropy)) {\n entropy = Buffer.from(entropy, 'hex');\n }\n wordlist = wordlist || DEFAULT_WORDLIST;\n if (!wordlist) {\n throw new Error(WORDLIST_REQUIRED);\n }\n // 128 <= ENT <= 256\n if (entropy.length < 16) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length > 32) {\n throw new TypeError(INVALID_ENTROPY);\n }\n if (entropy.length % 4 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n const entropyBits = bytesToBinary(Array.from(entropy));\n const checksumBits = deriveChecksumBits(entropy);\n const bits = entropyBits + checksumBits;\n const chunks = bits.match(/(.{1,11})/g);\n const words = chunks.map((binary) => {\n const index = binaryToByte(binary);\n return wordlist[index];\n });\n return wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093' // Japanese wordlist\n ? words.join('\\u3000')\n : words.join(' ');\n}\nexports.entropyToMnemonic = entropyToMnemonic;\nfunction generateMnemonic(strength, rng, wordlist) {\n strength = strength || 128;\n if (strength % 32 !== 0) {\n throw new TypeError(INVALID_ENTROPY);\n }\n rng = rng || randomBytes;\n return entropyToMnemonic(rng(strength / 8), wordlist);\n}\nexports.generateMnemonic = generateMnemonic;\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.validateMnemonic = validateMnemonic;\nfunction setDefaultWordlist(language) {\n const result = _wordlists_1.wordlists[language];\n if (result) {\n DEFAULT_WORDLIST = result;\n }\n else {\n throw new Error('Could not find wordlist for language \"' + language + '\"');\n }\n}\nexports.setDefaultWordlist = setDefaultWordlist;\nfunction getDefaultWordlist() {\n if (!DEFAULT_WORDLIST) {\n throw new Error('No Default Wordlist set');\n }\n return Object.keys(_wordlists_1.wordlists).filter((lang) => {\n if (lang === 'JA' || lang === 'EN') {\n return false;\n }\n return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]);\n })[0];\n}\nexports.getDefaultWordlist = getDefaultWordlist;\nvar _wordlists_2 = require(\"./_wordlists\");\nexports.wordlists = _wordlists_2.wordlists;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n},{\"./_wordlists\":49,\"buffer\":3,\"create-hash\":28,\"pbkdf2\":33,\"randombytes\":38}],51:[function(require,module,exports){\nmodule.exports=[\n \"的\",\n \"一\",\n \"是\",\n \"在\",\n \"不\",\n \"了\",\n \"有\",\n \"和\",\n \"人\",\n \"这\",\n \"中\",\n \"大\",\n \"为\",\n \"上\",\n \"个\",\n \"国\",\n \"我\",\n \"以\",\n \"要\",\n \"他\",\n \"时\",\n \"来\",\n \"用\",\n \"们\",\n \"生\",\n \"到\",\n \"作\",\n \"地\",\n \"于\",\n \"出\",\n \"就\",\n \"分\",\n \"对\",\n \"成\",\n \"会\",\n \"可\",\n \"主\",\n \"发\",\n \"年\",\n \"动\",\n \"同\",\n \"工\",\n \"也\",\n \"能\",\n \"下\",\n \"过\",\n \"子\",\n \"说\",\n \"产\",\n \"种\",\n \"面\",\n \"而\",\n \"方\",\n \"后\",\n \"多\",\n \"定\",\n \"行\",\n \"学\",\n \"法\",\n \"所\",\n \"民\",\n \"得\",\n \"经\",\n \"十\",\n \"三\",\n \"之\",\n \"进\",\n \"着\",\n \"等\",\n \"部\",\n \"度\",\n \"家\",\n \"电\",\n \"力\",\n \"里\",\n \"如\",\n \"水\",\n \"化\",\n \"高\",\n \"自\",\n \"二\",\n \"理\",\n \"起\",\n \"小\",\n \"物\",\n \"现\",\n \"实\",\n \"加\",\n \"量\",\n \"都\",\n \"两\",\n \"体\",\n \"制\",\n \"机\",\n \"当\",\n \"使\",\n \"点\",\n \"从\",\n \"业\",\n \"本\",\n \"去\",\n \"把\",\n \"性\",\n \"好\",\n \"应\",\n \"开\",\n \"它\",\n \"合\",\n \"还\",\n \"因\",\n \"由\",\n \"其\",\n \"些\",\n \"然\",\n \"前\",\n \"外\",\n \"天\",\n \"政\",\n \"四\",\n \"日\",\n \"那\",\n \"社\",\n \"义\",\n \"事\",\n \"平\",\n \"形\",\n \"相\",\n \"全\",\n \"表\",\n \"间\",\n \"样\",\n \"与\",\n \"关\",\n \"各\",\n \"重\",\n \"新\",\n \"线\",\n \"内\",\n \"数\",\n \"正\",\n \"心\",\n \"反\",\n \"你\",\n \"明\",\n \"看\",\n \"原\",\n \"又\",\n \"么\",\n \"利\",\n \"比\",\n \"或\",\n \"但\",\n \"质\",\n \"气\",\n \"第\",\n \"向\",\n \"道\",\n \"命\",\n \"此\",\n \"变\",\n \"条\",\n \"只\",\n \"没\",\n \"结\",\n \"解\",\n \"问\",\n \"意\",\n \"建\",\n \"月\",\n \"公\",\n \"无\",\n \"系\",\n \"军\",\n \"很\",\n \"情\",\n \"者\",\n \"最\",\n \"立\",\n \"代\",\n \"想\",\n \"已\",\n \"通\",\n \"并\",\n \"提\",\n \"直\",\n \"题\",\n \"党\",\n \"程\",\n \"展\",\n \"五\",\n \"果\",\n \"料\",\n \"象\",\n \"员\",\n \"革\",\n \"位\",\n \"入\",\n \"常\",\n \"文\",\n \"总\",\n \"次\",\n \"品\",\n \"式\",\n \"活\",\n \"设\",\n \"及\",\n \"管\",\n \"特\",\n \"件\",\n \"长\",\n \"求\",\n \"老\",\n \"头\",\n \"基\",\n \"资\",\n \"边\",\n \"流\",\n \"路\",\n \"级\",\n \"少\",\n \"图\",\n \"山\",\n \"统\",\n \"接\",\n \"知\",\n \"较\",\n \"将\",\n \"组\",\n \"见\",\n \"计\",\n \"别\",\n \"她\",\n \"手\",\n \"角\",\n \"期\",\n \"根\",\n \"论\",\n \"运\",\n \"农\",\n \"指\",\n \"几\",\n \"九\",\n \"区\",\n \"强\",\n \"放\",\n \"决\",\n \"西\",\n \"被\",\n \"干\",\n \"做\",\n \"必\",\n \"战\",\n \"先\",\n \"回\",\n \"则\",\n \"任\",\n \"取\",\n \"据\",\n \"处\",\n \"队\",\n \"南\",\n \"给\",\n \"色\",\n \"光\",\n \"门\",\n \"即\",\n \"保\",\n \"治\",\n \"北\",\n \"造\",\n \"百\",\n \"规\",\n \"热\",\n \"领\",\n \"七\",\n \"海\",\n \"口\",\n \"东\",\n \"导\",\n \"器\",\n \"压\",\n \"志\",\n \"世\",\n \"金\",\n \"增\",\n \"争\",\n \"济\",\n \"阶\",\n \"油\",\n \"思\",\n \"术\",\n \"极\",\n \"交\",\n \"受\",\n \"联\",\n \"什\",\n \"认\",\n \"六\",\n \"共\",\n \"权\",\n \"收\",\n \"证\",\n \"改\",\n \"清\",\n \"美\",\n \"再\",\n \"采\",\n \"转\",\n \"更\",\n \"单\",\n \"风\",\n \"切\",\n \"打\",\n \"白\",\n \"教\",\n \"速\",\n \"花\",\n \"带\",\n \"安\",\n \"场\",\n \"身\",\n \"车\",\n \"例\",\n \"真\",\n \"务\",\n \"具\",\n \"万\",\n \"每\",\n \"目\",\n \"至\",\n \"达\",\n \"走\",\n \"积\",\n \"示\",\n \"议\",\n \"声\",\n \"报\",\n \"斗\",\n \"完\",\n \"类\",\n \"八\",\n \"离\",\n \"华\",\n \"名\",\n \"确\",\n \"才\",\n \"科\",\n \"张\",\n \"信\",\n \"马\",\n \"节\",\n \"话\",\n \"米\",\n \"整\",\n \"空\",\n \"元\",\n \"况\",\n \"今\",\n \"集\",\n \"温\",\n \"传\",\n \"土\",\n \"许\",\n \"步\",\n \"群\",\n \"广\",\n \"石\",\n \"记\",\n \"需\",\n \"段\",\n \"研\",\n \"界\",\n \"拉\",\n \"林\",\n \"律\",\n \"叫\",\n \"且\",\n \"究\",\n \"观\",\n \"越\",\n \"织\",\n \"装\",\n \"影\",\n \"算\",\n \"低\",\n \"持\",\n \"音\",\n \"众\",\n \"书\",\n \"布\",\n \"复\",\n \"容\",\n \"儿\",\n \"须\",\n \"际\",\n \"商\",\n \"非\",\n \"验\",\n \"连\",\n \"断\",\n \"深\",\n \"难\",\n \"近\",\n \"矿\",\n \"千\",\n \"周\",\n \"委\",\n \"素\",\n \"技\",\n \"备\",\n \"半\",\n \"办\",\n \"青\",\n \"省\",\n \"列\",\n \"习\",\n \"响\",\n \"约\",\n \"支\",\n \"般\",\n \"史\",\n \"感\",\n \"劳\",\n \"便\",\n \"团\",\n \"往\",\n \"酸\",\n \"历\",\n \"市\",\n \"克\",\n \"何\",\n \"除\",\n \"消\",\n \"构\",\n \"府\",\n \"称\",\n \"太\",\n \"准\",\n \"精\",\n \"值\",\n \"号\",\n \"率\",\n \"族\",\n \"维\",\n \"划\",\n \"选\",\n \"标\",\n \"写\",\n \"存\",\n \"候\",\n \"毛\",\n \"亲\",\n \"快\",\n \"效\",\n \"斯\",\n \"院\",\n \"查\",\n \"江\",\n \"型\",\n \"眼\",\n \"王\",\n \"按\",\n \"格\",\n \"养\",\n \"易\",\n \"置\",\n \"派\",\n \"层\",\n \"片\",\n \"始\",\n \"却\",\n \"专\",\n \"状\",\n \"育\",\n \"厂\",\n \"京\",\n \"识\",\n \"适\",\n \"属\",\n \"圆\",\n \"包\",\n \"火\",\n \"住\",\n \"调\",\n \"满\",\n \"县\",\n \"局\",\n \"照\",\n \"参\",\n \"红\",\n \"细\",\n \"引\",\n \"听\",\n \"该\",\n \"铁\",\n \"价\",\n \"严\",\n \"首\",\n \"底\",\n \"液\",\n \"官\",\n \"德\",\n \"随\",\n \"病\",\n \"苏\",\n \"失\",\n \"尔\",\n \"死\",\n \"讲\",\n \"配\",\n \"女\",\n \"黄\",\n \"推\",\n \"显\",\n \"谈\",\n \"罪\",\n \"神\",\n \"艺\",\n \"呢\",\n \"席\",\n \"含\",\n \"企\",\n \"望\",\n \"密\",\n \"批\",\n \"营\",\n \"项\",\n \"防\",\n \"举\",\n \"球\",\n \"英\",\n \"氧\",\n \"势\",\n \"告\",\n \"李\",\n \"台\",\n \"落\",\n \"木\",\n \"帮\",\n \"轮\",\n \"破\",\n \"亚\",\n \"师\",\n \"围\",\n \"注\",\n \"远\",\n \"字\",\n \"材\",\n \"排\",\n \"供\",\n \"河\",\n \"态\",\n \"封\",\n \"另\",\n \"施\",\n \"减\",\n \"树\",\n \"溶\",\n \"怎\",\n \"止\",\n \"案\",\n \"言\",\n \"士\",\n \"均\",\n \"武\",\n \"固\",\n \"叶\",\n \"鱼\",\n \"波\",\n \"视\",\n \"仅\",\n \"费\",\n \"紧\",\n \"爱\",\n \"左\",\n \"章\",\n \"早\",\n \"朝\",\n \"害\",\n \"续\",\n \"轻\",\n \"服\",\n \"试\",\n \"食\",\n \"充\",\n \"兵\",\n \"源\",\n \"判\",\n \"护\",\n \"司\",\n \"足\",\n \"某\",\n \"练\",\n \"差\",\n \"致\",\n \"板\",\n \"田\",\n \"降\",\n \"黑\",\n \"犯\",\n \"负\",\n \"击\",\n \"范\",\n \"继\",\n \"兴\",\n \"似\",\n \"余\",\n \"坚\",\n \"曲\",\n \"输\",\n \"修\",\n \"故\",\n \"城\",\n \"夫\",\n \"够\",\n \"送\",\n \"笔\",\n \"船\",\n \"占\",\n \"右\",\n \"财\",\n \"吃\",\n \"富\",\n \"春\",\n \"职\",\n \"觉\",\n \"汉\",\n \"画\",\n \"功\",\n \"巴\",\n \"跟\",\n \"虽\",\n \"杂\",\n \"飞\",\n \"检\",\n \"吸\",\n \"助\",\n \"升\",\n \"阳\",\n \"互\",\n \"初\",\n \"创\",\n \"抗\",\n \"考\",\n \"投\",\n \"坏\",\n \"策\",\n \"古\",\n \"径\",\n \"换\",\n \"未\",\n \"跑\",\n \"留\",\n \"钢\",\n \"曾\",\n \"端\",\n \"责\",\n \"站\",\n \"简\",\n \"述\",\n \"钱\",\n \"副\",\n \"尽\",\n \"帝\",\n \"射\",\n \"草\",\n \"冲\",\n \"承\",\n \"独\",\n \"令\",\n \"限\",\n \"阿\",\n \"宣\",\n \"环\",\n \"双\",\n \"请\",\n \"超\",\n \"微\",\n \"让\",\n \"控\",\n \"州\",\n \"良\",\n \"轴\",\n \"找\",\n \"否\",\n \"纪\",\n \"益\",\n \"依\",\n \"优\",\n \"顶\",\n \"础\",\n \"载\",\n \"倒\",\n \"房\",\n \"突\",\n \"坐\",\n \"粉\",\n \"敌\",\n \"略\",\n \"客\",\n \"袁\",\n \"冷\",\n \"胜\",\n \"绝\",\n \"析\",\n \"块\",\n \"剂\",\n \"测\",\n \"丝\",\n \"协\",\n \"诉\",\n \"念\",\n \"陈\",\n \"仍\",\n \"罗\",\n \"盐\",\n \"友\",\n \"洋\",\n \"错\",\n \"苦\",\n \"夜\",\n \"刑\",\n \"移\",\n \"频\",\n \"逐\",\n \"靠\",\n \"混\",\n \"母\",\n \"短\",\n \"皮\",\n \"终\",\n \"聚\",\n \"汽\",\n \"村\",\n \"云\",\n \"哪\",\n \"既\",\n \"距\",\n \"卫\",\n \"停\",\n \"烈\",\n \"央\",\n \"察\",\n \"烧\",\n \"迅\",\n \"境\",\n \"若\",\n \"印\",\n \"洲\",\n \"刻\",\n \"括\",\n \"激\",\n \"孔\",\n \"搞\",\n \"甚\",\n \"室\",\n \"待\",\n \"核\",\n \"校\",\n \"散\",\n \"侵\",\n \"吧\",\n \"甲\",\n \"游\",\n \"久\",\n \"菜\",\n \"味\",\n \"旧\",\n \"模\",\n \"湖\",\n \"货\",\n \"损\",\n \"预\",\n \"阻\",\n \"毫\",\n \"普\",\n \"稳\",\n \"乙\",\n \"妈\",\n \"植\",\n \"息\",\n \"扩\",\n \"银\",\n \"语\",\n \"挥\",\n \"酒\",\n \"守\",\n \"拿\",\n \"序\",\n \"纸\",\n \"医\",\n \"缺\",\n \"雨\",\n \"吗\",\n \"针\",\n \"刘\",\n \"啊\",\n \"急\",\n \"唱\",\n \"误\",\n \"训\",\n \"愿\",\n \"审\",\n \"附\",\n \"获\",\n \"茶\",\n \"鲜\",\n \"粮\",\n \"斤\",\n \"孩\",\n \"脱\",\n \"硫\",\n \"肥\",\n \"善\",\n \"龙\",\n \"演\",\n \"父\",\n \"渐\",\n \"血\",\n \"欢\",\n \"械\",\n \"掌\",\n \"歌\",\n \"沙\",\n \"刚\",\n \"攻\",\n \"谓\",\n \"盾\",\n \"讨\",\n \"晚\",\n \"粒\",\n \"乱\",\n \"燃\",\n \"矛\",\n \"乎\",\n \"杀\",\n \"药\",\n \"宁\",\n \"鲁\",\n \"贵\",\n \"钟\",\n \"煤\",\n \"读\",\n \"班\",\n \"伯\",\n \"香\",\n \"介\",\n \"迫\",\n \"句\",\n \"丰\",\n \"培\",\n \"握\",\n \"兰\",\n \"担\",\n \"弦\",\n \"蛋\",\n \"沉\",\n \"假\",\n \"穿\",\n \"执\",\n \"答\",\n \"乐\",\n \"谁\",\n \"顺\",\n \"烟\",\n \"缩\",\n \"征\",\n \"脸\",\n \"喜\",\n \"松\",\n \"脚\",\n \"困\",\n \"异\",\n \"免\",\n \"背\",\n \"星\",\n \"福\",\n \"买\",\n \"染\",\n \"井\",\n \"概\",\n \"慢\",\n \"怕\",\n \"磁\",\n \"倍\",\n \"祖\",\n \"皇\",\n \"促\",\n \"静\",\n \"补\",\n \"评\",\n \"翻\",\n \"肉\",\n \"践\",\n \"尼\",\n \"衣\",\n \"宽\",\n \"扬\",\n \"棉\",\n \"希\",\n \"伤\",\n \"操\",\n \"垂\",\n \"秋\",\n \"宜\",\n \"氢\",\n \"套\",\n \"督\",\n \"振\",\n \"架\",\n \"亮\",\n \"末\",\n \"宪\",\n \"庆\",\n \"编\",\n \"牛\",\n \"触\",\n \"映\",\n \"雷\",\n \"销\",\n \"诗\",\n \"座\",\n \"居\",\n \"抓\",\n \"裂\",\n \"胞\",\n \"呼\",\n \"娘\",\n \"景\",\n \"威\",\n \"绿\",\n \"晶\",\n \"厚\",\n \"盟\",\n \"衡\",\n \"鸡\",\n \"孙\",\n \"延\",\n \"危\",\n \"胶\",\n \"屋\",\n \"乡\",\n \"临\",\n \"陆\",\n \"顾\",\n \"掉\",\n \"呀\",\n \"灯\",\n \"岁\",\n \"措\",\n \"束\",\n \"耐\",\n \"剧\",\n \"玉\",\n \"赵\",\n \"跳\",\n \"哥\",\n \"季\",\n \"课\",\n \"凯\",\n \"胡\",\n \"额\",\n \"款\",\n \"绍\",\n \"卷\",\n \"齐\",\n \"伟\",\n \"蒸\",\n \"殖\",\n \"永\",\n \"宗\",\n \"苗\",\n \"川\",\n \"炉\",\n \"岩\",\n \"弱\",\n \"零\",\n \"杨\",\n \"奏\",\n \"沿\",\n \"露\",\n \"杆\",\n \"探\",\n \"滑\",\n \"镇\",\n \"饭\",\n \"浓\",\n \"航\",\n \"怀\",\n \"赶\",\n \"库\",\n \"夺\",\n \"伊\",\n \"灵\",\n \"税\",\n \"途\",\n \"灭\",\n \"赛\",\n \"归\",\n \"召\",\n \"鼓\",\n \"播\",\n \"盘\",\n \"裁\",\n \"险\",\n \"康\",\n \"唯\",\n \"录\",\n \"菌\",\n \"纯\",\n \"借\",\n \"糖\",\n \"盖\",\n \"横\",\n \"符\",\n \"私\",\n \"努\",\n \"堂\",\n \"域\",\n \"枪\",\n \"润\",\n \"幅\",\n \"哈\",\n \"竟\",\n \"熟\",\n \"虫\",\n \"泽\",\n \"脑\",\n \"壤\",\n \"碳\",\n \"欧\",\n \"遍\",\n \"侧\",\n \"寨\",\n \"敢\",\n \"彻\",\n \"虑\",\n \"斜\",\n \"薄\",\n \"庭\",\n \"纳\",\n \"弹\",\n \"饲\",\n \"伸\",\n \"折\",\n \"麦\",\n \"湿\",\n \"暗\",\n \"荷\",\n \"瓦\",\n \"塞\",\n \"床\",\n \"筑\",\n \"恶\",\n \"户\",\n \"访\",\n \"塔\",\n \"奇\",\n \"透\",\n \"梁\",\n \"刀\",\n \"旋\",\n \"迹\",\n \"卡\",\n \"氯\",\n \"遇\",\n \"份\",\n \"毒\",\n \"泥\",\n \"退\",\n \"洗\",\n \"摆\",\n \"灰\",\n \"彩\",\n \"卖\",\n \"耗\",\n \"夏\",\n \"择\",\n \"忙\",\n \"铜\",\n \"献\",\n \"硬\",\n \"予\",\n \"繁\",\n \"圈\",\n \"雪\",\n \"函\",\n \"亦\",\n \"抽\",\n \"篇\",\n \"阵\",\n \"阴\",\n \"丁\",\n \"尺\",\n \"追\",\n \"堆\",\n \"雄\",\n \"迎\",\n \"泛\",\n \"爸\",\n \"楼\",\n \"避\",\n \"谋\",\n \"吨\",\n \"野\",\n \"猪\",\n \"旗\",\n \"累\",\n \"偏\",\n \"典\",\n \"馆\",\n \"索\",\n \"秦\",\n \"脂\",\n \"潮\",\n \"爷\",\n \"豆\",\n \"忽\",\n \"托\",\n \"惊\",\n \"塑\",\n \"遗\",\n \"愈\",\n \"朱\",\n \"替\",\n \"纤\",\n \"粗\",\n \"倾\",\n \"尚\",\n \"痛\",\n \"楚\",\n \"谢\",\n \"奋\",\n \"购\",\n \"磨\",\n \"君\",\n \"池\",\n \"旁\",\n \"碎\",\n \"骨\",\n \"监\",\n \"捕\",\n \"弟\",\n \"暴\",\n \"割\",\n \"贯\",\n \"殊\",\n \"释\",\n \"词\",\n \"亡\",\n \"壁\",\n \"顿\",\n \"宝\",\n \"午\",\n \"尘\",\n \"闻\",\n \"揭\",\n \"炮\",\n \"残\",\n \"冬\",\n \"桥\",\n \"妇\",\n \"警\",\n \"综\",\n \"招\",\n \"吴\",\n \"付\",\n \"浮\",\n \"遭\",\n \"徐\",\n \"您\",\n \"摇\",\n \"谷\",\n \"赞\",\n \"箱\",\n \"隔\",\n \"订\",\n \"男\",\n \"吹\",\n \"园\",\n \"纷\",\n \"唐\",\n \"败\",\n \"宋\",\n \"玻\",\n \"巨\",\n \"耕\",\n \"坦\",\n \"荣\",\n \"闭\",\n \"湾\",\n \"键\",\n \"凡\",\n \"驻\",\n \"锅\",\n \"救\",\n \"恩\",\n \"剥\",\n \"凝\",\n \"碱\",\n \"齿\",\n \"截\",\n \"炼\",\n \"麻\",\n \"纺\",\n \"禁\",\n \"废\",\n \"盛\",\n \"版\",\n \"缓\",\n \"净\",\n \"睛\",\n \"昌\",\n \"婚\",\n \"涉\",\n \"筒\",\n \"嘴\",\n \"插\",\n \"岸\",\n \"朗\",\n \"庄\",\n \"街\",\n \"藏\",\n \"姑\",\n \"贸\",\n \"腐\",\n \"奴\",\n \"啦\",\n \"惯\",\n \"乘\",\n \"伙\",\n \"恢\",\n \"匀\",\n \"纱\",\n \"扎\",\n \"辩\",\n \"耳\",\n \"彪\",\n \"臣\",\n \"亿\",\n \"璃\",\n \"抵\",\n \"脉\",\n \"秀\",\n \"萨\",\n \"俄\",\n \"网\",\n \"舞\",\n \"店\",\n \"喷\",\n \"纵\",\n \"寸\",\n \"汗\",\n \"挂\",\n \"洪\",\n \"贺\",\n \"闪\",\n \"柬\",\n \"爆\",\n \"烯\",\n \"津\",\n \"稻\",\n \"墙\",\n \"软\",\n \"勇\",\n \"像\",\n \"滚\",\n \"厘\",\n \"蒙\",\n \"芳\",\n \"肯\",\n \"坡\",\n \"柱\",\n \"荡\",\n \"腿\",\n \"仪\",\n \"旅\",\n \"尾\",\n \"轧\",\n \"冰\",\n \"贡\",\n \"登\",\n \"黎\",\n \"削\",\n \"钻\",\n \"勒\",\n \"逃\",\n \"障\",\n \"氨\",\n \"郭\",\n \"峰\",\n \"币\",\n \"港\",\n \"伏\",\n \"轨\",\n \"亩\",\n \"毕\",\n \"擦\",\n \"莫\",\n \"刺\",\n \"浪\",\n \"秘\",\n \"援\",\n \"株\",\n \"健\",\n \"售\",\n \"股\",\n \"岛\",\n \"甘\",\n \"泡\",\n \"睡\",\n \"童\",\n \"铸\",\n \"汤\",\n \"阀\",\n \"休\",\n \"汇\",\n \"舍\",\n \"牧\",\n \"绕\",\n \"炸\",\n \"哲\",\n \"磷\",\n \"绩\",\n \"朋\",\n \"淡\",\n \"尖\",\n \"启\",\n \"陷\",\n \"柴\",\n \"呈\",\n \"徒\",\n \"颜\",\n \"泪\",\n \"稍\",\n \"忘\",\n \"泵\",\n \"蓝\",\n \"拖\",\n \"洞\",\n \"授\",\n \"镜\",\n \"辛\",\n \"壮\",\n \"锋\",\n \"贫\",\n \"虚\",\n \"弯\",\n \"摩\",\n \"泰\",\n \"幼\",\n \"廷\",\n \"尊\",\n \"窗\",\n \"纲\",\n \"弄\",\n \"隶\",\n \"疑\",\n \"氏\",\n \"宫\",\n \"姐\",\n \"震\",\n \"瑞\",\n \"怪\",\n \"尤\",\n \"琴\",\n \"循\",\n \"描\",\n \"膜\",\n \"违\",\n \"夹\",\n \"腰\",\n \"缘\",\n \"珠\",\n \"穷\",\n \"森\",\n \"枝\",\n \"竹\",\n \"沟\",\n \"催\",\n \"绳\",\n \"忆\",\n \"邦\",\n \"剩\",\n \"幸\",\n \"浆\",\n \"栏\",\n \"拥\",\n \"牙\",\n \"贮\",\n \"礼\",\n \"滤\",\n \"钠\",\n \"纹\",\n \"罢\",\n \"拍\",\n \"咱\",\n \"喊\",\n \"袖\",\n \"埃\",\n \"勤\",\n \"罚\",\n \"焦\",\n \"潜\",\n \"伍\",\n \"墨\",\n \"欲\",\n \"缝\",\n \"姓\",\n \"刊\",\n \"饱\",\n \"仿\",\n \"奖\",\n \"铝\",\n \"鬼\",\n \"丽\",\n \"跨\",\n \"默\",\n \"挖\",\n \"链\",\n \"扫\",\n \"喝\",\n \"袋\",\n \"炭\",\n \"污\",\n \"幕\",\n \"诸\",\n \"弧\",\n \"励\",\n \"梅\",\n \"奶\",\n \"洁\",\n \"灾\",\n \"舟\",\n \"鉴\",\n \"苯\",\n \"讼\",\n \"抱\",\n \"毁\",\n \"懂\",\n \"寒\",\n \"智\",\n \"埔\",\n \"寄\",\n \"届\",\n \"跃\",\n \"渡\",\n \"挑\",\n \"丹\",\n \"艰\",\n \"贝\",\n \"碰\",\n \"拔\",\n \"爹\",\n \"戴\",\n \"码\",\n \"梦\",\n \"芽\",\n \"熔\",\n \"赤\",\n \"渔\",\n \"哭\",\n \"敬\",\n \"颗\",\n \"奔\",\n \"铅\",\n \"仲\",\n \"虎\",\n \"稀\",\n \"妹\",\n \"乏\",\n \"珍\",\n \"申\",\n \"桌\",\n \"遵\",\n \"允\",\n \"隆\",\n \"螺\",\n \"仓\",\n \"魏\",\n \"锐\",\n \"晓\",\n \"氮\",\n \"兼\",\n \"隐\",\n \"碍\",\n \"赫\",\n \"拨\",\n \"忠\",\n \"肃\",\n \"缸\",\n \"牵\",\n \"抢\",\n \"博\",\n \"巧\",\n \"壳\",\n \"兄\",\n \"杜\",\n \"讯\",\n \"诚\",\n \"碧\",\n \"祥\",\n \"柯\",\n \"页\",\n \"巡\",\n \"矩\",\n \"悲\",\n \"灌\",\n \"龄\",\n \"伦\",\n \"票\",\n \"寻\",\n \"桂\",\n \"铺\",\n \"圣\",\n \"恐\",\n \"恰\",\n \"郑\",\n \"趣\",\n \"抬\",\n \"荒\",\n \"腾\",\n \"贴\",\n \"柔\",\n \"滴\",\n \"猛\",\n \"阔\",\n \"辆\",\n \"妻\",\n \"填\",\n \"撤\",\n \"储\",\n \"签\",\n \"闹\",\n \"扰\",\n \"紫\",\n \"砂\",\n \"递\",\n \"戏\",\n \"吊\",\n \"陶\",\n \"伐\",\n \"喂\",\n \"疗\",\n \"瓶\",\n \"婆\",\n \"抚\",\n \"臂\",\n \"摸\",\n \"忍\",\n \"虾\",\n \"蜡\",\n \"邻\",\n \"胸\",\n \"巩\",\n \"挤\",\n \"偶\",\n \"弃\",\n \"槽\",\n \"劲\",\n \"乳\",\n \"邓\",\n \"吉\",\n \"仁\",\n \"烂\",\n \"砖\",\n \"租\",\n \"乌\",\n \"舰\",\n \"伴\",\n \"瓜\",\n \"浅\",\n \"丙\",\n \"暂\",\n \"燥\",\n \"橡\",\n \"柳\",\n \"迷\",\n \"暖\",\n \"牌\",\n \"秧\",\n \"胆\",\n \"详\",\n \"簧\",\n \"踏\",\n \"瓷\",\n \"谱\",\n \"呆\",\n \"宾\",\n \"糊\",\n \"洛\",\n \"辉\",\n \"愤\",\n \"竞\",\n \"隙\",\n \"怒\",\n \"粘\",\n \"乃\",\n \"绪\",\n \"肩\",\n \"籍\",\n \"敏\",\n \"涂\",\n \"熙\",\n \"皆\",\n \"侦\",\n \"悬\",\n \"掘\",\n \"享\",\n \"纠\",\n \"醒\",\n \"狂\",\n \"锁\",\n \"淀\",\n \"恨\",\n \"牲\",\n \"霸\",\n \"爬\",\n \"赏\",\n \"逆\",\n \"玩\",\n \"陵\",\n \"祝\",\n \"秒\",\n \"浙\",\n \"貌\",\n \"役\",\n \"彼\",\n \"悉\",\n \"鸭\",\n \"趋\",\n \"凤\",\n \"晨\",\n \"畜\",\n \"辈\",\n \"秩\",\n \"卵\",\n \"署\",\n \"梯\",\n \"炎\",\n \"滩\",\n \"棋\",\n \"驱\",\n \"筛\",\n \"峡\",\n \"冒\",\n \"啥\",\n \"寿\",\n \"译\",\n \"浸\",\n \"泉\",\n \"帽\",\n \"迟\",\n \"硅\",\n \"疆\",\n \"贷\",\n \"漏\",\n \"稿\",\n \"冠\",\n \"嫩\",\n \"胁\",\n \"芯\",\n \"牢\",\n \"叛\",\n \"蚀\",\n \"奥\",\n \"鸣\",\n \"岭\",\n \"羊\",\n \"凭\",\n \"串\",\n \"塘\",\n \"绘\",\n \"酵\",\n \"融\",\n \"盆\",\n \"锡\",\n \"庙\",\n \"筹\",\n \"冻\",\n \"辅\",\n \"摄\",\n \"袭\",\n \"筋\",\n \"拒\",\n \"僚\",\n \"旱\",\n \"钾\",\n \"鸟\",\n \"漆\",\n \"沈\",\n \"眉\",\n \"疏\",\n \"添\",\n \"棒\",\n \"穗\",\n \"硝\",\n \"韩\",\n \"逼\",\n \"扭\",\n \"侨\",\n \"凉\",\n \"挺\",\n \"碗\",\n \"栽\",\n \"炒\",\n \"杯\",\n \"患\",\n \"馏\",\n \"劝\",\n \"豪\",\n \"辽\",\n \"勃\",\n \"鸿\",\n \"旦\",\n \"吏\",\n \"拜\",\n \"狗\",\n \"埋\",\n \"辊\",\n \"掩\",\n \"饮\",\n \"搬\",\n \"骂\",\n \"辞\",\n \"勾\",\n \"扣\",\n \"估\",\n \"蒋\",\n \"绒\",\n \"雾\",\n \"丈\",\n \"朵\",\n \"姆\",\n \"拟\",\n \"宇\",\n \"辑\",\n \"陕\",\n \"雕\",\n \"偿\",\n \"蓄\",\n \"崇\",\n \"剪\",\n \"倡\",\n \"厅\",\n \"咬\",\n \"驶\",\n \"薯\",\n \"刷\",\n \"斥\",\n \"番\",\n \"赋\",\n \"奉\",\n \"佛\",\n \"浇\",\n \"漫\",\n \"曼\",\n \"扇\",\n \"钙\",\n \"桃\",\n \"扶\",\n \"仔\",\n \"返\",\n \"俗\",\n \"亏\",\n \"腔\",\n \"鞋\",\n \"棱\",\n \"覆\",\n \"框\",\n \"悄\",\n \"叔\",\n \"撞\",\n \"骗\",\n \"勘\",\n \"旺\",\n \"沸\",\n \"孤\",\n \"吐\",\n \"孟\",\n \"渠\",\n \"屈\",\n \"疾\",\n \"妙\",\n \"惜\",\n \"仰\",\n \"狠\",\n \"胀\",\n \"谐\",\n \"抛\",\n \"霉\",\n \"桑\",\n \"岗\",\n \"嘛\",\n \"衰\",\n \"盗\",\n \"渗\",\n \"脏\",\n \"赖\",\n \"涌\",\n \"甜\",\n \"曹\",\n \"阅\",\n \"肌\",\n \"哩\",\n \"厉\",\n \"烃\",\n \"纬\",\n \"毅\",\n \"昨\",\n \"伪\",\n \"症\",\n \"煮\",\n \"叹\",\n \"钉\",\n \"搭\",\n \"茎\",\n \"笼\",\n \"酷\",\n \"偷\",\n \"弓\",\n \"锥\",\n \"恒\",\n \"杰\",\n \"坑\",\n \"鼻\",\n \"翼\",\n \"纶\",\n \"叙\",\n \"狱\",\n \"逮\",\n \"罐\",\n \"络\",\n \"棚\",\n \"抑\",\n \"膨\",\n \"蔬\",\n \"寺\",\n \"骤\",\n \"穆\",\n \"冶\",\n \"枯\",\n \"册\",\n \"尸\",\n \"凸\",\n \"绅\",\n \"坯\",\n \"牺\",\n \"焰\",\n \"轰\",\n \"欣\",\n \"晋\",\n \"瘦\",\n \"御\",\n \"锭\",\n \"锦\",\n \"丧\",\n \"旬\",\n \"锻\",\n \"垄\",\n \"搜\",\n \"扑\",\n \"邀\",\n \"亭\",\n \"酯\",\n \"迈\",\n \"舒\",\n \"脆\",\n \"酶\",\n \"闲\",\n \"忧\",\n \"酚\",\n \"顽\",\n \"羽\",\n \"涨\",\n \"卸\",\n \"仗\",\n \"陪\",\n \"辟\",\n \"惩\",\n \"杭\",\n \"姚\",\n \"肚\",\n \"捉\",\n \"飘\",\n \"漂\",\n \"昆\",\n \"欺\",\n \"吾\",\n \"郎\",\n \"烷\",\n \"汁\",\n \"呵\",\n \"饰\",\n \"萧\",\n \"雅\",\n \"邮\",\n \"迁\",\n \"燕\",\n \"撒\",\n \"姻\",\n \"赴\",\n \"宴\",\n \"烦\",\n \"债\",\n \"帐\",\n \"斑\",\n \"铃\",\n \"旨\",\n \"醇\",\n \"董\",\n \"饼\",\n \"雏\",\n \"姿\",\n \"拌\",\n \"傅\",\n \"腹\",\n \"妥\",\n \"揉\",\n \"贤\",\n \"拆\",\n \"歪\",\n \"葡\",\n \"胺\",\n \"丢\",\n \"浩\",\n \"徽\",\n \"昂\",\n \"垫\",\n \"挡\",\n \"览\",\n \"贪\",\n \"慰\",\n \"缴\",\n \"汪\",\n \"慌\",\n \"冯\",\n \"诺\",\n \"姜\",\n \"谊\",\n \"凶\",\n \"劣\",\n \"诬\",\n \"耀\",\n \"昏\",\n \"躺\",\n \"盈\",\n \"骑\",\n \"乔\",\n \"溪\",\n \"丛\",\n \"卢\",\n \"抹\",\n \"闷\",\n \"咨\",\n \"刮\",\n \"驾\",\n \"缆\",\n \"悟\",\n \"摘\",\n \"铒\",\n \"掷\",\n \"颇\",\n \"幻\",\n \"柄\",\n \"惠\",\n \"惨\",\n \"佳\",\n \"仇\",\n \"腊\",\n \"窝\",\n \"涤\",\n \"剑\",\n \"瞧\",\n \"堡\",\n \"泼\",\n \"葱\",\n \"罩\",\n \"霍\",\n \"捞\",\n \"胎\",\n \"苍\",\n \"滨\",\n \"俩\",\n \"捅\",\n \"湘\",\n \"砍\",\n \"霞\",\n \"邵\",\n \"萄\",\n \"疯\",\n \"淮\",\n \"遂\",\n \"熊\",\n \"粪\",\n \"烘\",\n \"宿\",\n \"档\",\n \"戈\",\n \"驳\",\n \"嫂\",\n \"裕\",\n \"徙\",\n \"箭\",\n \"捐\",\n \"肠\",\n \"撑\",\n \"晒\",\n \"辨\",\n \"殿\",\n \"莲\",\n \"摊\",\n \"搅\",\n \"酱\",\n \"屏\",\n \"疫\",\n \"哀\",\n \"蔡\",\n \"堵\",\n \"沫\",\n \"皱\",\n \"畅\",\n \"叠\",\n \"阁\",\n \"莱\",\n \"敲\",\n \"辖\",\n \"钩\",\n \"痕\",\n \"坝\",\n \"巷\",\n \"饿\",\n \"祸\",\n \"丘\",\n \"玄\",\n \"溜\",\n \"曰\",\n \"逻\",\n \"彭\",\n \"尝\",\n \"卿\",\n \"妨\",\n \"艇\",\n \"吞\",\n \"韦\",\n \"怨\",\n \"矮\",\n \"歇\"\n]\n\n},{}],52:[function(require,module,exports){\nmodule.exports=[\n \"abandon\",\n \"ability\",\n \"able\",\n \"about\",\n \"above\",\n \"absent\",\n \"absorb\",\n \"abstract\",\n \"absurd\",\n \"abuse\",\n \"access\",\n \"accident\",\n \"account\",\n \"accuse\",\n \"achieve\",\n \"acid\",\n \"acoustic\",\n \"acquire\",\n \"across\",\n \"act\",\n \"action\",\n \"actor\",\n \"actress\",\n \"actual\",\n \"adapt\",\n \"add\",\n \"addict\",\n \"address\",\n \"adjust\",\n \"admit\",\n \"adult\",\n \"advance\",\n \"advice\",\n \"aerobic\",\n \"affair\",\n \"afford\",\n \"afraid\",\n \"again\",\n \"age\",\n \"agent\",\n \"agree\",\n \"ahead\",\n \"aim\",\n \"air\",\n \"airport\",\n \"aisle\",\n \"alarm\",\n \"album\",\n \"alcohol\",\n \"alert\",\n \"alien\",\n \"all\",\n \"alley\",\n \"allow\",\n \"almost\",\n \"alone\",\n \"alpha\",\n \"already\",\n \"also\",\n \"alter\",\n \"always\",\n \"amateur\",\n \"amazing\",\n \"among\",\n \"amount\",\n \"amused\",\n \"analyst\",\n \"anchor\",\n \"ancient\",\n \"anger\",\n \"angle\",\n \"angry\",\n \"animal\",\n \"ankle\",\n \"announce\",\n \"annual\",\n \"another\",\n \"answer\",\n \"antenna\",\n \"antique\",\n \"anxiety\",\n \"any\",\n \"apart\",\n \"apology\",\n \"appear\",\n \"apple\",\n \"approve\",\n \"april\",\n \"arch\",\n \"arctic\",\n \"area\",\n \"arena\",\n \"argue\",\n \"arm\",\n \"armed\",\n \"armor\",\n \"army\",\n \"around\",\n \"arrange\",\n \"arrest\",\n \"arrive\",\n \"arrow\",\n \"art\",\n \"artefact\",\n \"artist\",\n \"artwork\",\n \"ask\",\n \"aspect\",\n \"assault\",\n \"asset\",\n \"assist\",\n \"assume\",\n \"asthma\",\n \"athlete\",\n \"atom\",\n \"attack\",\n \"attend\",\n \"attitude\",\n \"attract\",\n \"auction\",\n \"audit\",\n \"august\",\n \"aunt\",\n \"author\",\n \"auto\",\n \"autumn\",\n \"average\",\n \"avocado\",\n \"avoid\",\n \"awake\",\n \"aware\",\n \"away\",\n \"awesome\",\n \"awful\",\n \"awkward\",\n \"axis\",\n \"baby\",\n \"bachelor\",\n \"bacon\",\n \"badge\",\n \"bag\",\n \"balance\",\n \"balcony\",\n \"ball\",\n \"bamboo\",\n \"banana\",\n \"banner\",\n \"bar\",\n \"barely\",\n \"bargain\",\n \"barrel\",\n \"base\",\n \"basic\",\n \"basket\",\n \"battle\",\n \"beach\",\n \"bean\",\n \"beauty\",\n \"because\",\n \"become\",\n \"beef\",\n \"before\",\n \"begin\",\n \"behave\",\n \"behind\",\n \"believe\",\n \"below\",\n \"belt\",\n \"bench\",\n \"benefit\",\n \"best\",\n \"betray\",\n \"better\",\n \"between\",\n \"beyond\",\n \"bicycle\",\n \"bid\",\n \"bike\",\n \"bind\",\n \"biology\",\n \"bird\",\n \"birth\",\n \"bitter\",\n \"black\",\n \"blade\",\n \"blame\",\n \"blanket\",\n \"blast\",\n \"bleak\",\n \"bless\",\n \"blind\",\n \"blood\",\n \"blossom\",\n \"blouse\",\n \"blue\",\n \"blur\",\n \"blush\",\n \"board\",\n \"boat\",\n \"body\",\n \"boil\",\n \"bomb\",\n \"bone\",\n \"bonus\",\n \"book\",\n \"boost\",\n \"border\",\n \"boring\",\n \"borrow\",\n \"boss\",\n \"bottom\",\n \"bounce\",\n \"box\",\n \"boy\",\n \"bracket\",\n \"brain\",\n \"brand\",\n \"brass\",\n \"brave\",\n \"bread\",\n \"breeze\",\n \"brick\",\n \"bridge\",\n \"brief\",\n \"bright\",\n \"bring\",\n \"brisk\",\n \"broccoli\",\n \"broken\",\n \"bronze\",\n \"broom\",\n \"brother\",\n \"brown\",\n \"brush\",\n \"bubble\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"build\",\n \"bulb\",\n \"bulk\",\n \"bullet\",\n \"bundle\",\n \"bunker\",\n \"burden\",\n \"burger\",\n \"burst\",\n \"bus\",\n \"business\",\n \"busy\",\n \"butter\",\n \"buyer\",\n \"buzz\",\n \"cabbage\",\n \"cabin\",\n \"cable\",\n \"cactus\",\n \"cage\",\n \"cake\",\n \"call\",\n \"calm\",\n \"camera\",\n \"camp\",\n \"can\",\n \"canal\",\n \"cancel\",\n \"candy\",\n \"cannon\",\n \"canoe\",\n \"canvas\",\n \"canyon\",\n \"capable\",\n \"capital\",\n \"captain\",\n \"car\",\n \"carbon\",\n \"card\",\n \"cargo\",\n \"carpet\",\n \"carry\",\n \"cart\",\n \"case\",\n \"cash\",\n \"casino\",\n \"castle\",\n \"casual\",\n \"cat\",\n \"catalog\",\n \"catch\",\n \"category\",\n \"cattle\",\n \"caught\",\n \"cause\",\n \"caution\",\n \"cave\",\n \"ceiling\",\n \"celery\",\n \"cement\",\n \"census\",\n \"century\",\n \"cereal\",\n \"certain\",\n \"chair\",\n \"chalk\",\n \"champion\",\n \"change\",\n \"chaos\",\n \"chapter\",\n \"charge\",\n \"chase\",\n \"chat\",\n \"cheap\",\n \"check\",\n \"cheese\",\n \"chef\",\n \"cherry\",\n \"chest\",\n \"chicken\",\n \"chief\",\n \"child\",\n \"chimney\",\n \"choice\",\n \"choose\",\n \"chronic\",\n \"chuckle\",\n \"chunk\",\n \"churn\",\n \"cigar\",\n \"cinnamon\",\n \"circle\",\n \"citizen\",\n \"city\",\n \"civil\",\n \"claim\",\n \"clap\",\n \"clarify\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clerk\",\n \"clever\",\n \"click\",\n \"client\",\n \"cliff\",\n \"climb\",\n \"clinic\",\n \"clip\",\n \"clock\",\n \"clog\",\n \"close\",\n \"cloth\",\n \"cloud\",\n \"clown\",\n \"club\",\n \"clump\",\n \"cluster\",\n \"clutch\",\n \"coach\",\n \"coast\",\n \"coconut\",\n \"code\",\n \"coffee\",\n \"coil\",\n \"coin\",\n \"collect\",\n \"color\",\n \"column\",\n \"combine\",\n \"come\",\n \"comfort\",\n \"comic\",\n \"common\",\n \"company\",\n \"concert\",\n \"conduct\",\n \"confirm\",\n \"congress\",\n \"connect\",\n \"consider\",\n \"control\",\n \"convince\",\n \"cook\",\n \"cool\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"core\",\n \"corn\",\n \"correct\",\n \"cost\",\n \"cotton\",\n \"couch\",\n \"country\",\n \"couple\",\n \"course\",\n \"cousin\",\n \"cover\",\n \"coyote\",\n \"crack\",\n \"cradle\",\n \"craft\",\n \"cram\",\n \"crane\",\n \"crash\",\n \"crater\",\n \"crawl\",\n \"crazy\",\n \"cream\",\n \"credit\",\n \"creek\",\n \"crew\",\n \"cricket\",\n \"crime\",\n \"crisp\",\n \"critic\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crowd\",\n \"crucial\",\n \"cruel\",\n \"cruise\",\n \"crumble\",\n \"crunch\",\n \"crush\",\n \"cry\",\n \"crystal\",\n \"cube\",\n \"culture\",\n \"cup\",\n \"cupboard\",\n \"curious\",\n \"current\",\n \"curtain\",\n \"curve\",\n \"cushion\",\n \"custom\",\n \"cute\",\n \"cycle\",\n \"dad\",\n \"damage\",\n \"damp\",\n \"dance\",\n \"danger\",\n \"daring\",\n \"dash\",\n \"daughter\",\n \"dawn\",\n \"day\",\n \"deal\",\n \"debate\",\n \"debris\",\n \"decade\",\n \"december\",\n \"decide\",\n \"decline\",\n \"decorate\",\n \"decrease\",\n \"deer\",\n \"defense\",\n \"define\",\n \"defy\",\n \"degree\",\n \"delay\",\n \"deliver\",\n \"demand\",\n \"demise\",\n \"denial\",\n \"dentist\",\n \"deny\",\n \"depart\",\n \"depend\",\n \"deposit\",\n \"depth\",\n \"deputy\",\n \"derive\",\n \"describe\",\n \"desert\",\n \"design\",\n \"desk\",\n \"despair\",\n \"destroy\",\n \"detail\",\n \"detect\",\n \"develop\",\n \"device\",\n \"devote\",\n \"diagram\",\n \"dial\",\n \"diamond\",\n \"diary\",\n \"dice\",\n \"diesel\",\n \"diet\",\n \"differ\",\n \"digital\",\n \"dignity\",\n \"dilemma\",\n \"dinner\",\n \"dinosaur\",\n \"direct\",\n \"dirt\",\n \"disagree\",\n \"discover\",\n \"disease\",\n \"dish\",\n \"dismiss\",\n \"disorder\",\n \"display\",\n \"distance\",\n \"divert\",\n \"divide\",\n \"divorce\",\n \"dizzy\",\n \"doctor\",\n \"document\",\n \"dog\",\n \"doll\",\n \"dolphin\",\n \"domain\",\n \"donate\",\n \"donkey\",\n \"donor\",\n \"door\",\n \"dose\",\n \"double\",\n \"dove\",\n \"draft\",\n \"dragon\",\n \"drama\",\n \"drastic\",\n \"draw\",\n \"dream\",\n \"dress\",\n \"drift\",\n \"drill\",\n \"drink\",\n \"drip\",\n \"drive\",\n \"drop\",\n \"drum\",\n \"dry\",\n \"duck\",\n \"dumb\",\n \"dune\",\n \"during\",\n \"dust\",\n \"dutch\",\n \"duty\",\n \"dwarf\",\n \"dynamic\",\n \"eager\",\n \"eagle\",\n \"early\",\n \"earn\",\n \"earth\",\n \"easily\",\n \"east\",\n \"easy\",\n \"echo\",\n \"ecology\",\n \"economy\",\n \"edge\",\n \"edit\",\n \"educate\",\n \"effort\",\n \"egg\",\n \"eight\",\n \"either\",\n \"elbow\",\n \"elder\",\n \"electric\",\n \"elegant\",\n \"element\",\n \"elephant\",\n \"elevator\",\n \"elite\",\n \"else\",\n \"embark\",\n \"embody\",\n \"embrace\",\n \"emerge\",\n \"emotion\",\n \"employ\",\n \"empower\",\n \"empty\",\n \"enable\",\n \"enact\",\n \"end\",\n \"endless\",\n \"endorse\",\n \"enemy\",\n \"energy\",\n \"enforce\",\n \"engage\",\n \"engine\",\n \"enhance\",\n \"enjoy\",\n \"enlist\",\n \"enough\",\n \"enrich\",\n \"enroll\",\n \"ensure\",\n \"enter\",\n \"entire\",\n \"entry\",\n \"envelope\",\n \"episode\",\n \"equal\",\n \"equip\",\n \"era\",\n \"erase\",\n \"erode\",\n \"erosion\",\n \"error\",\n \"erupt\",\n \"escape\",\n \"essay\",\n \"essence\",\n \"estate\",\n \"eternal\",\n \"ethics\",\n \"evidence\",\n \"evil\",\n \"evoke\",\n \"evolve\",\n \"exact\",\n \"example\",\n \"excess\",\n \"exchange\",\n \"excite\",\n \"exclude\",\n \"excuse\",\n \"execute\",\n \"exercise\",\n \"exhaust\",\n \"exhibit\",\n \"exile\",\n \"exist\",\n \"exit\",\n \"exotic\",\n \"expand\",\n \"expect\",\n \"expire\",\n \"explain\",\n \"expose\",\n \"express\",\n \"extend\",\n \"extra\",\n \"eye\",\n \"eyebrow\",\n \"fabric\",\n \"face\",\n \"faculty\",\n \"fade\",\n \"faint\",\n \"faith\",\n \"fall\",\n \"false\",\n \"fame\",\n \"family\",\n \"famous\",\n \"fan\",\n \"fancy\",\n \"fantasy\",\n \"farm\",\n \"fashion\",\n \"fat\",\n \"fatal\",\n \"father\",\n \"fatigue\",\n \"fault\",\n \"favorite\",\n \"feature\",\n \"february\",\n \"federal\",\n \"fee\",\n \"feed\",\n \"feel\",\n \"female\",\n \"fence\",\n \"festival\",\n \"fetch\",\n \"fever\",\n \"few\",\n \"fiber\",\n \"fiction\",\n \"field\",\n \"figure\",\n \"file\",\n \"film\",\n \"filter\",\n \"final\",\n \"find\",\n \"fine\",\n \"finger\",\n \"finish\",\n \"fire\",\n \"firm\",\n \"first\",\n \"fiscal\",\n \"fish\",\n \"fit\",\n \"fitness\",\n \"fix\",\n \"flag\",\n \"flame\",\n \"flash\",\n \"flat\",\n \"flavor\",\n \"flee\",\n \"flight\",\n \"flip\",\n \"float\",\n \"flock\",\n \"floor\",\n \"flower\",\n \"fluid\",\n \"flush\",\n \"fly\",\n \"foam\",\n \"focus\",\n \"fog\",\n \"foil\",\n \"fold\",\n \"follow\",\n \"food\",\n \"foot\",\n \"force\",\n \"forest\",\n \"forget\",\n \"fork\",\n \"fortune\",\n \"forum\",\n \"forward\",\n \"fossil\",\n \"foster\",\n \"found\",\n \"fox\",\n \"fragile\",\n \"frame\",\n \"frequent\",\n \"fresh\",\n \"friend\",\n \"fringe\",\n \"frog\",\n \"front\",\n \"frost\",\n \"frown\",\n \"frozen\",\n \"fruit\",\n \"fuel\",\n \"fun\",\n \"funny\",\n \"furnace\",\n \"fury\",\n \"future\",\n \"gadget\",\n \"gain\",\n \"galaxy\",\n \"gallery\",\n \"game\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"garlic\",\n \"garment\",\n \"gas\",\n \"gasp\",\n \"gate\",\n \"gather\",\n \"gauge\",\n \"gaze\",\n \"general\",\n \"genius\",\n \"genre\",\n \"gentle\",\n \"genuine\",\n \"gesture\",\n \"ghost\",\n \"giant\",\n \"gift\",\n \"giggle\",\n \"ginger\",\n \"giraffe\",\n \"girl\",\n \"give\",\n \"glad\",\n \"glance\",\n \"glare\",\n \"glass\",\n \"glide\",\n \"glimpse\",\n \"globe\",\n \"gloom\",\n \"glory\",\n \"glove\",\n \"glow\",\n \"glue\",\n \"goat\",\n \"goddess\",\n \"gold\",\n \"good\",\n \"goose\",\n \"gorilla\",\n \"gospel\",\n \"gossip\",\n \"govern\",\n \"gown\",\n \"grab\",\n \"grace\",\n \"grain\",\n \"grant\",\n \"grape\",\n \"grass\",\n \"gravity\",\n \"great\",\n \"green\",\n \"grid\",\n \"grief\",\n \"grit\",\n \"grocery\",\n \"group\",\n \"grow\",\n \"grunt\",\n \"guard\",\n \"guess\",\n \"guide\",\n \"guilt\",\n \"guitar\",\n \"gun\",\n \"gym\",\n \"habit\",\n \"hair\",\n \"half\",\n \"hammer\",\n \"hamster\",\n \"hand\",\n \"happy\",\n \"harbor\",\n \"hard\",\n \"harsh\",\n \"harvest\",\n \"hat\",\n \"have\",\n \"hawk\",\n \"hazard\",\n \"head\",\n \"health\",\n \"heart\",\n \"heavy\",\n \"hedgehog\",\n \"height\",\n \"hello\",\n \"helmet\",\n \"help\",\n \"hen\",\n \"hero\",\n \"hidden\",\n \"high\",\n \"hill\",\n \"hint\",\n \"hip\",\n \"hire\",\n \"history\",\n \"hobby\",\n \"hockey\",\n \"hold\",\n \"hole\",\n \"holiday\",\n \"hollow\",\n \"home\",\n \"honey\",\n \"hood\",\n \"hope\",\n \"horn\",\n \"horror\",\n \"horse\",\n \"hospital\",\n \"host\",\n \"hotel\",\n \"hour\",\n \"hover\",\n \"hub\",\n \"huge\",\n \"human\",\n \"humble\",\n \"humor\",\n \"hundred\",\n \"hungry\",\n \"hunt\",\n \"hurdle\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hybrid\",\n \"ice\",\n \"icon\",\n \"idea\",\n \"identify\",\n \"idle\",\n \"ignore\",\n \"ill\",\n \"illegal\",\n \"illness\",\n \"image\",\n \"imitate\",\n \"immense\",\n \"immune\",\n \"impact\",\n \"impose\",\n \"improve\",\n \"impulse\",\n \"inch\",\n \"include\",\n \"income\",\n \"increase\",\n \"index\",\n \"indicate\",\n \"indoor\",\n \"industry\",\n \"infant\",\n \"inflict\",\n \"inform\",\n \"inhale\",\n \"inherit\",\n \"initial\",\n \"inject\",\n \"injury\",\n \"inmate\",\n \"inner\",\n \"innocent\",\n \"input\",\n \"inquiry\",\n \"insane\",\n \"insect\",\n \"inside\",\n \"inspire\",\n \"install\",\n \"intact\",\n \"interest\",\n \"into\",\n \"invest\",\n \"invite\",\n \"involve\",\n \"iron\",\n \"island\",\n \"isolate\",\n \"issue\",\n \"item\",\n \"ivory\",\n \"jacket\",\n \"jaguar\",\n \"jar\",\n \"jazz\",\n \"jealous\",\n \"jeans\",\n \"jelly\",\n \"jewel\",\n \"job\",\n \"join\",\n \"joke\",\n \"journey\",\n \"joy\",\n \"judge\",\n \"juice\",\n \"jump\",\n \"jungle\",\n \"junior\",\n \"junk\",\n \"just\",\n \"kangaroo\",\n \"keen\",\n \"keep\",\n \"ketchup\",\n \"key\",\n \"kick\",\n \"kid\",\n \"kidney\",\n \"kind\",\n \"kingdom\",\n \"kiss\",\n \"kit\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kiwi\",\n \"knee\",\n \"knife\",\n \"knock\",\n \"know\",\n \"lab\",\n \"label\",\n \"labor\",\n \"ladder\",\n \"lady\",\n \"lake\",\n \"lamp\",\n \"language\",\n \"laptop\",\n \"large\",\n \"later\",\n \"latin\",\n \"laugh\",\n \"laundry\",\n \"lava\",\n \"law\",\n \"lawn\",\n \"lawsuit\",\n \"layer\",\n \"lazy\",\n \"leader\",\n \"leaf\",\n \"learn\",\n \"leave\",\n \"lecture\",\n \"left\",\n \"leg\",\n \"legal\",\n \"legend\",\n \"leisure\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"leopard\",\n \"lesson\",\n \"letter\",\n \"level\",\n \"liar\",\n \"liberty\",\n \"library\",\n \"license\",\n \"life\",\n \"lift\",\n \"light\",\n \"like\",\n \"limb\",\n \"limit\",\n \"link\",\n \"lion\",\n \"liquid\",\n \"list\",\n \"little\",\n \"live\",\n \"lizard\",\n \"load\",\n \"loan\",\n \"lobster\",\n \"local\",\n \"lock\",\n \"logic\",\n \"lonely\",\n \"long\",\n \"loop\",\n \"lottery\",\n \"loud\",\n \"lounge\",\n \"love\",\n \"loyal\",\n \"lucky\",\n \"luggage\",\n \"lumber\",\n \"lunar\",\n \"lunch\",\n \"luxury\",\n \"lyrics\",\n \"machine\",\n \"mad\",\n \"magic\",\n \"magnet\",\n \"maid\",\n \"mail\",\n \"main\",\n \"major\",\n \"make\",\n \"mammal\",\n \"man\",\n \"manage\",\n \"mandate\",\n \"mango\",\n \"mansion\",\n \"manual\",\n \"maple\",\n \"marble\",\n \"march\",\n \"margin\",\n \"marine\",\n \"market\",\n \"marriage\",\n \"mask\",\n \"mass\",\n \"master\",\n \"match\",\n \"material\",\n \"math\",\n \"matrix\",\n \"matter\",\n \"maximum\",\n \"maze\",\n \"meadow\",\n \"mean\",\n \"measure\",\n \"meat\",\n \"mechanic\",\n \"medal\",\n \"media\",\n \"melody\",\n \"melt\",\n \"member\",\n \"memory\",\n \"mention\",\n \"menu\",\n \"mercy\",\n \"merge\",\n \"merit\",\n \"merry\",\n \"mesh\",\n \"message\",\n \"metal\",\n \"method\",\n \"middle\",\n \"midnight\",\n \"milk\",\n \"million\",\n \"mimic\",\n \"mind\",\n \"minimum\",\n \"minor\",\n \"minute\",\n \"miracle\",\n \"mirror\",\n \"misery\",\n \"miss\",\n \"mistake\",\n \"mix\",\n \"mixed\",\n \"mixture\",\n \"mobile\",\n \"model\",\n \"modify\",\n \"mom\",\n \"moment\",\n \"monitor\",\n \"monkey\",\n \"monster\",\n \"month\",\n \"moon\",\n \"moral\",\n \"more\",\n \"morning\",\n \"mosquito\",\n \"mother\",\n \"motion\",\n \"motor\",\n \"mountain\",\n \"mouse\",\n \"move\",\n \"movie\",\n \"much\",\n \"muffin\",\n \"mule\",\n \"multiply\",\n \"muscle\",\n \"museum\",\n \"mushroom\",\n \"music\",\n \"must\",\n \"mutual\",\n \"myself\",\n \"mystery\",\n \"myth\",\n \"naive\",\n \"name\",\n \"napkin\",\n \"narrow\",\n \"nasty\",\n \"nation\",\n \"nature\",\n \"near\",\n \"neck\",\n \"need\",\n \"negative\",\n \"neglect\",\n \"neither\",\n \"nephew\",\n \"nerve\",\n \"nest\",\n \"net\",\n \"network\",\n \"neutral\",\n \"never\",\n \"news\",\n \"next\",\n \"nice\",\n \"night\",\n \"noble\",\n \"noise\",\n \"nominee\",\n \"noodle\",\n \"normal\",\n \"north\",\n \"nose\",\n \"notable\",\n \"note\",\n \"nothing\",\n \"notice\",\n \"novel\",\n \"now\",\n \"nuclear\",\n \"number\",\n \"nurse\",\n \"nut\",\n \"oak\",\n \"obey\",\n \"object\",\n \"oblige\",\n \"obscure\",\n \"observe\",\n \"obtain\",\n \"obvious\",\n \"occur\",\n \"ocean\",\n \"october\",\n \"odor\",\n \"off\",\n \"offer\",\n \"office\",\n \"often\",\n \"oil\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympic\",\n \"omit\",\n \"once\",\n \"one\",\n \"onion\",\n \"online\",\n \"only\",\n \"open\",\n \"opera\",\n \"opinion\",\n \"oppose\",\n \"option\",\n \"orange\",\n \"orbit\",\n \"orchard\",\n \"order\",\n \"ordinary\",\n \"organ\",\n \"orient\",\n \"original\",\n \"orphan\",\n \"ostrich\",\n \"other\",\n \"outdoor\",\n \"outer\",\n \"output\",\n \"outside\",\n \"oval\",\n \"oven\",\n \"over\",\n \"own\",\n \"owner\",\n \"oxygen\",\n \"oyster\",\n \"ozone\",\n \"pact\",\n \"paddle\",\n \"page\",\n \"pair\",\n \"palace\",\n \"palm\",\n \"panda\",\n \"panel\",\n \"panic\",\n \"panther\",\n \"paper\",\n \"parade\",\n \"parent\",\n \"park\",\n \"parrot\",\n \"party\",\n \"pass\",\n \"patch\",\n \"path\",\n \"patient\",\n \"patrol\",\n \"pattern\",\n \"pause\",\n \"pave\",\n \"payment\",\n \"peace\",\n \"peanut\",\n \"pear\",\n \"peasant\",\n \"pelican\",\n \"pen\",\n \"penalty\",\n \"pencil\",\n \"people\",\n \"pepper\",\n \"perfect\",\n \"permit\",\n \"person\",\n \"pet\",\n \"phone\",\n \"photo\",\n \"phrase\",\n \"physical\",\n \"piano\",\n \"picnic\",\n \"picture\",\n \"piece\",\n \"pig\",\n \"pigeon\",\n \"pill\",\n \"pilot\",\n \"pink\",\n \"pioneer\",\n \"pipe\",\n \"pistol\",\n \"pitch\",\n \"pizza\",\n \"place\",\n \"planet\",\n \"plastic\",\n \"plate\",\n \"play\",\n \"please\",\n \"pledge\",\n \"pluck\",\n \"plug\",\n \"plunge\",\n \"poem\",\n \"poet\",\n \"point\",\n \"polar\",\n \"pole\",\n \"police\",\n \"pond\",\n \"pony\",\n \"pool\",\n \"popular\",\n \"portion\",\n \"position\",\n \"possible\",\n \"post\",\n \"potato\",\n \"pottery\",\n \"poverty\",\n \"powder\",\n \"power\",\n \"practice\",\n \"praise\",\n \"predict\",\n \"prefer\",\n \"prepare\",\n \"present\",\n \"pretty\",\n \"prevent\",\n \"price\",\n \"pride\",\n \"primary\",\n \"print\",\n \"priority\",\n \"prison\",\n \"private\",\n \"prize\",\n \"problem\",\n \"process\",\n \"produce\",\n \"profit\",\n \"program\",\n \"project\",\n \"promote\",\n \"proof\",\n \"property\",\n \"prosper\",\n \"protect\",\n \"proud\",\n \"provide\",\n \"public\",\n \"pudding\",\n \"pull\",\n \"pulp\",\n \"pulse\",\n \"pumpkin\",\n \"punch\",\n \"pupil\",\n \"puppy\",\n \"purchase\",\n \"purity\",\n \"purpose\",\n \"purse\",\n \"push\",\n \"put\",\n \"puzzle\",\n \"pyramid\",\n \"quality\",\n \"quantum\",\n \"quarter\",\n \"question\",\n \"quick\",\n \"quit\",\n \"quiz\",\n \"quote\",\n \"rabbit\",\n \"raccoon\",\n \"race\",\n \"rack\",\n \"radar\",\n \"radio\",\n \"rail\",\n \"rain\",\n \"raise\",\n \"rally\",\n \"ramp\",\n \"ranch\",\n \"random\",\n \"range\",\n \"rapid\",\n \"rare\",\n \"rate\",\n \"rather\",\n \"raven\",\n \"raw\",\n \"razor\",\n \"ready\",\n \"real\",\n \"reason\",\n \"rebel\",\n \"rebuild\",\n \"recall\",\n \"receive\",\n \"recipe\",\n \"record\",\n \"recycle\",\n \"reduce\",\n \"reflect\",\n \"reform\",\n \"refuse\",\n \"region\",\n \"regret\",\n \"regular\",\n \"reject\",\n \"relax\",\n \"release\",\n \"relief\",\n \"rely\",\n \"remain\",\n \"remember\",\n \"remind\",\n \"remove\",\n \"render\",\n \"renew\",\n \"rent\",\n \"reopen\",\n \"repair\",\n \"repeat\",\n \"replace\",\n \"report\",\n \"require\",\n \"rescue\",\n \"resemble\",\n \"resist\",\n \"resource\",\n \"response\",\n \"result\",\n \"retire\",\n \"retreat\",\n \"return\",\n \"reunion\",\n \"reveal\",\n \"review\",\n \"reward\",\n \"rhythm\",\n \"rib\",\n \"ribbon\",\n \"rice\",\n \"rich\",\n \"ride\",\n \"ridge\",\n \"rifle\",\n \"right\",\n \"rigid\",\n \"ring\",\n \"riot\",\n \"ripple\",\n \"risk\",\n \"ritual\",\n \"rival\",\n \"river\",\n \"road\",\n \"roast\",\n \"robot\",\n \"robust\",\n \"rocket\",\n \"romance\",\n \"roof\",\n \"rookie\",\n \"room\",\n \"rose\",\n \"rotate\",\n \"rough\",\n \"round\",\n \"route\",\n \"royal\",\n \"rubber\",\n \"rude\",\n \"rug\",\n \"rule\",\n \"run\",\n \"runway\",\n \"rural\",\n \"sad\",\n \"saddle\",\n \"sadness\",\n \"safe\",\n \"sail\",\n \"salad\",\n \"salmon\",\n \"salon\",\n \"salt\",\n \"salute\",\n \"same\",\n \"sample\",\n \"sand\",\n \"satisfy\",\n \"satoshi\",\n \"sauce\",\n \"sausage\",\n \"save\",\n \"say\",\n \"scale\",\n \"scan\",\n \"scare\",\n \"scatter\",\n \"scene\",\n \"scheme\",\n \"school\",\n \"science\",\n \"scissors\",\n \"scorpion\",\n \"scout\",\n \"scrap\",\n \"screen\",\n \"script\",\n \"scrub\",\n \"sea\",\n \"search\",\n \"season\",\n \"seat\",\n \"second\",\n \"secret\",\n \"section\",\n \"security\",\n \"seed\",\n \"seek\",\n \"segment\",\n \"select\",\n \"sell\",\n \"seminar\",\n \"senior\",\n \"sense\",\n \"sentence\",\n \"series\",\n \"service\",\n \"session\",\n \"settle\",\n \"setup\",\n \"seven\",\n \"shadow\",\n \"shaft\",\n \"shallow\",\n \"share\",\n \"shed\",\n \"shell\",\n \"sheriff\",\n \"shield\",\n \"shift\",\n \"shine\",\n \"ship\",\n \"shiver\",\n \"shock\",\n \"shoe\",\n \"shoot\",\n \"shop\",\n \"short\",\n \"shoulder\",\n \"shove\",\n \"shrimp\",\n \"shrug\",\n \"shuffle\",\n \"shy\",\n \"sibling\",\n \"sick\",\n \"side\",\n \"siege\",\n \"sight\",\n \"sign\",\n \"silent\",\n \"silk\",\n \"silly\",\n \"silver\",\n \"similar\",\n \"simple\",\n \"since\",\n \"sing\",\n \"siren\",\n \"sister\",\n \"situate\",\n \"six\",\n \"size\",\n \"skate\",\n \"sketch\",\n \"ski\",\n \"skill\",\n \"skin\",\n \"skirt\",\n \"skull\",\n \"slab\",\n \"slam\",\n \"sleep\",\n \"slender\",\n \"slice\",\n \"slide\",\n \"slight\",\n \"slim\",\n \"slogan\",\n \"slot\",\n \"slow\",\n \"slush\",\n \"small\",\n \"smart\",\n \"smile\",\n \"smoke\",\n \"smooth\",\n \"snack\",\n \"snake\",\n \"snap\",\n \"sniff\",\n \"snow\",\n \"soap\",\n \"soccer\",\n \"social\",\n \"sock\",\n \"soda\",\n \"soft\",\n \"solar\",\n \"soldier\",\n \"solid\",\n \"solution\",\n \"solve\",\n \"someone\",\n \"song\",\n \"soon\",\n \"sorry\",\n \"sort\",\n \"soul\",\n \"sound\",\n \"soup\",\n \"source\",\n \"south\",\n \"space\",\n \"spare\",\n \"spatial\",\n \"spawn\",\n \"speak\",\n \"special\",\n \"speed\",\n \"spell\",\n \"spend\",\n \"sphere\",\n \"spice\",\n \"spider\",\n \"spike\",\n \"spin\",\n \"spirit\",\n \"split\",\n \"spoil\",\n \"sponsor\",\n \"spoon\",\n \"sport\",\n \"spot\",\n \"spray\",\n \"spread\",\n \"spring\",\n \"spy\",\n \"square\",\n \"squeeze\",\n \"squirrel\",\n \"stable\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"stairs\",\n \"stamp\",\n \"stand\",\n \"start\",\n \"state\",\n \"stay\",\n \"steak\",\n \"steel\",\n \"stem\",\n \"step\",\n \"stereo\",\n \"stick\",\n \"still\",\n \"sting\",\n \"stock\",\n \"stomach\",\n \"stone\",\n \"stool\",\n \"story\",\n \"stove\",\n \"strategy\",\n \"street\",\n \"strike\",\n \"strong\",\n \"struggle\",\n \"student\",\n \"stuff\",\n \"stumble\",\n \"style\",\n \"subject\",\n \"submit\",\n \"subway\",\n \"success\",\n \"such\",\n \"sudden\",\n \"suffer\",\n \"sugar\",\n \"suggest\",\n \"suit\",\n \"summer\",\n \"sun\",\n \"sunny\",\n \"sunset\",\n \"super\",\n \"supply\",\n \"supreme\",\n \"sure\",\n \"surface\",\n \"surge\",\n \"surprise\",\n \"surround\",\n \"survey\",\n \"suspect\",\n \"sustain\",\n \"swallow\",\n \"swamp\",\n \"swap\",\n \"swarm\",\n \"swear\",\n \"sweet\",\n \"swift\",\n \"swim\",\n \"swing\",\n \"switch\",\n \"sword\",\n \"symbol\",\n \"symptom\",\n \"syrup\",\n \"system\",\n \"table\",\n \"tackle\",\n \"tag\",\n \"tail\",\n \"talent\",\n \"talk\",\n \"tank\",\n \"tape\",\n \"target\",\n \"task\",\n \"taste\",\n \"tattoo\",\n \"taxi\",\n \"teach\",\n \"team\",\n \"tell\",\n \"ten\",\n \"tenant\",\n \"tennis\",\n \"tent\",\n \"term\",\n \"test\",\n \"text\",\n \"thank\",\n \"that\",\n \"theme\",\n \"then\",\n \"theory\",\n \"there\",\n \"they\",\n \"thing\",\n \"this\",\n \"thought\",\n \"three\",\n \"thrive\",\n \"throw\",\n \"thumb\",\n \"thunder\",\n \"ticket\",\n \"tide\",\n \"tiger\",\n \"tilt\",\n \"timber\",\n \"time\",\n \"tiny\",\n \"tip\",\n \"tired\",\n \"tissue\",\n \"title\",\n \"toast\",\n \"tobacco\",\n \"today\",\n \"toddler\",\n \"toe\",\n \"together\",\n \"toilet\",\n \"token\",\n \"tomato\",\n \"tomorrow\",\n \"tone\",\n \"tongue\",\n \"tonight\",\n \"tool\",\n \"tooth\",\n \"top\",\n \"topic\",\n \"topple\",\n \"torch\",\n \"tornado\",\n \"tortoise\",\n \"toss\",\n \"total\",\n \"tourist\",\n \"toward\",\n \"tower\",\n \"town\",\n \"toy\",\n \"track\",\n \"trade\",\n \"traffic\",\n \"tragic\",\n \"train\",\n \"transfer\",\n \"trap\",\n \"trash\",\n \"travel\",\n \"tray\",\n \"treat\",\n \"tree\",\n \"trend\",\n \"trial\",\n \"tribe\",\n \"trick\",\n \"trigger\",\n \"trim\",\n \"trip\",\n \"trophy\",\n \"trouble\",\n \"truck\",\n \"true\",\n \"truly\",\n \"trumpet\",\n \"trust\",\n \"truth\",\n \"try\",\n \"tube\",\n \"tuition\",\n \"tumble\",\n \"tuna\",\n \"tunnel\",\n \"turkey\",\n \"turn\",\n \"turtle\",\n \"twelve\",\n \"twenty\",\n \"twice\",\n \"twin\",\n \"twist\",\n \"two\",\n \"type\",\n \"typical\",\n \"ugly\",\n \"umbrella\",\n \"unable\",\n \"unaware\",\n \"uncle\",\n \"uncover\",\n \"under\",\n \"undo\",\n \"unfair\",\n \"unfold\",\n \"unhappy\",\n \"uniform\",\n \"unique\",\n \"unit\",\n \"universe\",\n \"unknown\",\n \"unlock\",\n \"until\",\n \"unusual\",\n \"unveil\",\n \"update\",\n \"upgrade\",\n \"uphold\",\n \"upon\",\n \"upper\",\n \"upset\",\n \"urban\",\n \"urge\",\n \"usage\",\n \"use\",\n \"used\",\n \"useful\",\n \"useless\",\n \"usual\",\n \"utility\",\n \"vacant\",\n \"vacuum\",\n \"vague\",\n \"valid\",\n \"valley\",\n \"valve\",\n \"van\",\n \"vanish\",\n \"vapor\",\n \"various\",\n \"vast\",\n \"vault\",\n \"vehicle\",\n \"velvet\",\n \"vendor\",\n \"venture\",\n \"venue\",\n \"verb\",\n \"verify\",\n \"version\",\n \"very\",\n \"vessel\",\n \"veteran\",\n \"viable\",\n \"vibrant\",\n \"vicious\",\n \"victory\",\n \"video\",\n \"view\",\n \"village\",\n \"vintage\",\n \"violin\",\n \"virtual\",\n \"virus\",\n \"visa\",\n \"visit\",\n \"visual\",\n \"vital\",\n \"vivid\",\n \"vocal\",\n \"voice\",\n \"void\",\n \"volcano\",\n \"volume\",\n \"vote\",\n \"voyage\",\n \"wage\",\n \"wagon\",\n \"wait\",\n \"walk\",\n \"wall\",\n \"walnut\",\n \"want\",\n \"warfare\",\n \"warm\",\n \"warrior\",\n \"wash\",\n \"wasp\",\n \"waste\",\n \"water\",\n \"wave\",\n \"way\",\n \"wealth\",\n \"weapon\",\n \"wear\",\n \"weasel\",\n \"weather\",\n \"web\",\n \"wedding\",\n \"weekend\",\n \"weird\",\n \"welcome\",\n \"west\",\n \"wet\",\n \"whale\",\n \"what\",\n \"wheat\",\n \"wheel\",\n \"when\",\n \"where\",\n \"whip\",\n \"whisper\",\n \"wide\",\n \"width\",\n \"wife\",\n \"wild\",\n \"will\",\n \"win\",\n \"window\",\n \"wine\",\n \"wing\",\n \"wink\",\n \"winner\",\n \"winter\",\n \"wire\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"witness\",\n \"wolf\",\n \"woman\",\n \"wonder\",\n \"wood\",\n \"wool\",\n \"word\",\n \"work\",\n \"world\",\n \"worry\",\n \"worth\",\n \"wrap\",\n \"wreck\",\n \"wrestle\",\n \"wrist\",\n \"write\",\n \"wrong\",\n \"yard\",\n \"year\",\n \"yellow\",\n \"you\",\n \"young\",\n \"youth\",\n \"zebra\",\n \"zero\",\n \"zone\",\n \"zoo\"\n]\n\n},{}],53:[function(require,module,exports){\nmodule.exports=[\n \"あいこくしん\",\n \"あいさつ\",\n \"あいだ\",\n \"あおぞら\",\n \"あかちゃん\",\n \"あきる\",\n \"あけがた\",\n \"あける\",\n \"あこがれる\",\n \"あさい\",\n \"あさひ\",\n \"あしあと\",\n \"あじわう\",\n \"あずかる\",\n \"あずき\",\n \"あそぶ\",\n \"あたえる\",\n \"あたためる\",\n \"あたりまえ\",\n \"あたる\",\n \"あつい\",\n \"あつかう\",\n \"あっしゅく\",\n \"あつまり\",\n \"あつめる\",\n \"あてな\",\n \"あてはまる\",\n \"あひる\",\n \"あぶら\",\n \"あぶる\",\n \"あふれる\",\n \"あまい\",\n \"あまど\",\n \"あまやかす\",\n \"あまり\",\n \"あみもの\",\n \"あめりか\",\n \"あやまる\",\n \"あゆむ\",\n \"あらいぐま\",\n \"あらし\",\n \"あらすじ\",\n \"あらためる\",\n \"あらゆる\",\n \"あらわす\",\n \"ありがとう\",\n \"あわせる\",\n \"あわてる\",\n \"あんい\",\n \"あんがい\",\n \"あんこ\",\n \"あんぜん\",\n \"あんてい\",\n \"あんない\",\n \"あんまり\",\n \"いいだす\",\n \"いおん\",\n \"いがい\",\n \"いがく\",\n \"いきおい\",\n \"いきなり\",\n \"いきもの\",\n \"いきる\",\n \"いくじ\",\n \"いくぶん\",\n \"いけばな\",\n \"いけん\",\n \"いこう\",\n \"いこく\",\n \"いこつ\",\n \"いさましい\",\n \"いさん\",\n \"いしき\",\n \"いじゅう\",\n \"いじょう\",\n \"いじわる\",\n \"いずみ\",\n \"いずれ\",\n \"いせい\",\n \"いせえび\",\n \"いせかい\",\n \"いせき\",\n \"いぜん\",\n \"いそうろう\",\n \"いそがしい\",\n \"いだい\",\n \"いだく\",\n \"いたずら\",\n \"いたみ\",\n \"いたりあ\",\n \"いちおう\",\n \"いちじ\",\n \"いちど\",\n \"いちば\",\n \"いちぶ\",\n \"いちりゅう\",\n \"いつか\",\n \"いっしゅん\",\n \"いっせい\",\n \"いっそう\",\n \"いったん\",\n \"いっち\",\n \"いってい\",\n \"いっぽう\",\n \"いてざ\",\n \"いてん\",\n \"いどう\",\n \"いとこ\",\n \"いない\",\n \"いなか\",\n \"いねむり\",\n \"いのち\",\n \"いのる\",\n \"いはつ\",\n \"いばる\",\n \"いはん\",\n \"いびき\",\n \"いひん\",\n \"いふく\",\n \"いへん\",\n \"いほう\",\n \"いみん\",\n \"いもうと\",\n \"いもたれ\",\n \"いもり\",\n \"いやがる\",\n \"いやす\",\n \"いよかん\",\n \"いよく\",\n \"いらい\",\n \"いらすと\",\n \"いりぐち\",\n \"いりょう\",\n \"いれい\",\n \"いれもの\",\n \"いれる\",\n \"いろえんぴつ\",\n \"いわい\",\n \"いわう\",\n \"いわかん\",\n \"いわば\",\n \"いわゆる\",\n \"いんげんまめ\",\n \"いんさつ\",\n \"いんしょう\",\n \"いんよう\",\n \"うえき\",\n \"うえる\",\n \"うおざ\",\n \"うがい\",\n \"うかぶ\",\n \"うかべる\",\n \"うきわ\",\n \"うくらいな\",\n \"うくれれ\",\n \"うけたまわる\",\n \"うけつけ\",\n \"うけとる\",\n \"うけもつ\",\n \"うける\",\n \"うごかす\",\n \"うごく\",\n \"うこん\",\n \"うさぎ\",\n \"うしなう\",\n \"うしろがみ\",\n \"うすい\",\n \"うすぎ\",\n \"うすぐらい\",\n \"うすめる\",\n \"うせつ\",\n \"うちあわせ\",\n \"うちがわ\",\n \"うちき\",\n \"うちゅう\",\n \"うっかり\",\n \"うつくしい\",\n \"うったえる\",\n \"うつる\",\n \"うどん\",\n \"うなぎ\",\n \"うなじ\",\n \"うなずく\",\n \"うなる\",\n \"うねる\",\n \"うのう\",\n \"うぶげ\",\n \"うぶごえ\",\n \"うまれる\",\n \"うめる\",\n \"うもう\",\n \"うやまう\",\n \"うよく\",\n \"うらがえす\",\n \"うらぐち\",\n \"うらない\",\n \"うりあげ\",\n \"うりきれ\",\n \"うるさい\",\n \"うれしい\",\n \"うれゆき\",\n \"うれる\",\n \"うろこ\",\n \"うわき\",\n \"うわさ\",\n \"うんこう\",\n \"うんちん\",\n \"うんてん\",\n \"うんどう\",\n \"えいえん\",\n \"えいが\",\n \"えいきょう\",\n \"えいご\",\n \"えいせい\",\n \"えいぶん\",\n \"えいよう\",\n \"えいわ\",\n \"えおり\",\n \"えがお\",\n \"えがく\",\n \"えきたい\",\n \"えくせる\",\n \"えしゃく\",\n \"えすて\",\n \"えつらん\",\n \"えのぐ\",\n \"えほうまき\",\n \"えほん\",\n \"えまき\",\n \"えもじ\",\n \"えもの\",\n \"えらい\",\n \"えらぶ\",\n \"えりあ\",\n \"えんえん\",\n \"えんかい\",\n \"えんぎ\",\n \"えんげき\",\n \"えんしゅう\",\n \"えんぜつ\",\n \"えんそく\",\n \"えんちょう\",\n \"えんとつ\",\n \"おいかける\",\n \"おいこす\",\n \"おいしい\",\n \"おいつく\",\n \"おうえん\",\n \"おうさま\",\n \"おうじ\",\n \"おうせつ\",\n \"おうたい\",\n \"おうふく\",\n \"おうべい\",\n \"おうよう\",\n \"おえる\",\n \"おおい\",\n \"おおう\",\n \"おおどおり\",\n \"おおや\",\n \"おおよそ\",\n \"おかえり\",\n \"おかず\",\n \"おがむ\",\n \"おかわり\",\n \"おぎなう\",\n \"おきる\",\n \"おくさま\",\n \"おくじょう\",\n \"おくりがな\",\n \"おくる\",\n \"おくれる\",\n \"おこす\",\n \"おこなう\",\n \"おこる\",\n \"おさえる\",\n \"おさない\",\n \"おさめる\",\n \"おしいれ\",\n \"おしえる\",\n \"おじぎ\",\n \"おじさん\",\n \"おしゃれ\",\n \"おそらく\",\n \"おそわる\",\n \"おたがい\",\n \"おたく\",\n \"おだやか\",\n \"おちつく\",\n \"おっと\",\n \"おつり\",\n \"おでかけ\",\n \"おとしもの\",\n \"おとなしい\",\n \"おどり\",\n \"おどろかす\",\n \"おばさん\",\n \"おまいり\",\n \"おめでとう\",\n \"おもいで\",\n \"おもう\",\n \"おもたい\",\n \"おもちゃ\",\n \"おやつ\",\n \"おやゆび\",\n \"およぼす\",\n \"おらんだ\",\n \"おろす\",\n \"おんがく\",\n \"おんけい\",\n \"おんしゃ\",\n \"おんせん\",\n \"おんだん\",\n \"おんちゅう\",\n \"おんどけい\",\n \"かあつ\",\n \"かいが\",\n \"がいき\",\n \"がいけん\",\n \"がいこう\",\n \"かいさつ\",\n \"かいしゃ\",\n \"かいすいよく\",\n \"かいぜん\",\n \"かいぞうど\",\n \"かいつう\",\n \"かいてん\",\n \"かいとう\",\n \"かいふく\",\n \"がいへき\",\n \"かいほう\",\n \"かいよう\",\n \"がいらい\",\n \"かいわ\",\n \"かえる\",\n \"かおり\",\n \"かかえる\",\n \"かがく\",\n \"かがし\",\n \"かがみ\",\n \"かくご\",\n \"かくとく\",\n \"かざる\",\n \"がぞう\",\n \"かたい\",\n \"かたち\",\n \"がちょう\",\n \"がっきゅう\",\n \"がっこう\",\n \"がっさん\",\n \"がっしょう\",\n \"かなざわし\",\n \"かのう\",\n \"がはく\",\n \"かぶか\",\n \"かほう\",\n \"かほご\",\n \"かまう\",\n \"かまぼこ\",\n \"かめれおん\",\n \"かゆい\",\n \"かようび\",\n \"からい\",\n \"かるい\",\n \"かろう\",\n \"かわく\",\n \"かわら\",\n \"がんか\",\n \"かんけい\",\n \"かんこう\",\n \"かんしゃ\",\n \"かんそう\",\n \"かんたん\",\n \"かんち\",\n \"がんばる\",\n \"きあい\",\n \"きあつ\",\n \"きいろ\",\n \"ぎいん\",\n \"きうい\",\n \"きうん\",\n \"きえる\",\n \"きおう\",\n \"きおく\",\n \"きおち\",\n \"きおん\",\n \"きかい\",\n \"きかく\",\n \"きかんしゃ\",\n \"ききて\",\n \"きくばり\",\n \"きくらげ\",\n \"きけんせい\",\n \"きこう\",\n \"きこえる\",\n \"きこく\",\n \"きさい\",\n \"きさく\",\n \"きさま\",\n \"きさらぎ\",\n \"ぎじかがく\",\n \"ぎしき\",\n \"ぎじたいけん\",\n \"ぎじにってい\",\n \"ぎじゅつしゃ\",\n \"きすう\",\n \"きせい\",\n \"きせき\",\n \"きせつ\",\n \"きそう\",\n \"きぞく\",\n \"きぞん\",\n \"きたえる\",\n \"きちょう\",\n \"きつえん\",\n \"ぎっちり\",\n \"きつつき\",\n \"きつね\",\n \"きてい\",\n \"きどう\",\n \"きどく\",\n \"きない\",\n \"きなが\",\n \"きなこ\",\n \"きぬごし\",\n \"きねん\",\n \"きのう\",\n \"きのした\",\n \"きはく\",\n \"きびしい\",\n \"きひん\",\n \"きふく\",\n \"きぶん\",\n \"きぼう\",\n \"きほん\",\n \"きまる\",\n \"きみつ\",\n \"きむずかしい\",\n \"きめる\",\n \"きもだめし\",\n \"きもち\",\n \"きもの\",\n \"きゃく\",\n \"きやく\",\n \"ぎゅうにく\",\n \"きよう\",\n \"きょうりゅう\",\n \"きらい\",\n \"きらく\",\n \"きりん\",\n \"きれい\",\n \"きれつ\",\n \"きろく\",\n \"ぎろん\",\n \"きわめる\",\n \"ぎんいろ\",\n \"きんかくじ\",\n \"きんじょ\",\n \"きんようび\",\n \"ぐあい\",\n \"くいず\",\n \"くうかん\",\n \"くうき\",\n \"くうぐん\",\n \"くうこう\",\n \"ぐうせい\",\n \"くうそう\",\n \"ぐうたら\",\n \"くうふく\",\n \"くうぼ\",\n \"くかん\",\n \"くきょう\",\n \"くげん\",\n \"ぐこう\",\n \"くさい\",\n \"くさき\",\n \"くさばな\",\n \"くさる\",\n \"くしゃみ\",\n \"くしょう\",\n \"くすのき\",\n \"くすりゆび\",\n \"くせげ\",\n \"くせん\",\n \"ぐたいてき\",\n \"くださる\",\n \"くたびれる\",\n \"くちこみ\",\n \"くちさき\",\n \"くつした\",\n \"ぐっすり\",\n \"くつろぐ\",\n \"くとうてん\",\n \"くどく\",\n \"くなん\",\n \"くねくね\",\n \"くのう\",\n \"くふう\",\n \"くみあわせ\",\n \"くみたてる\",\n \"くめる\",\n \"くやくしょ\",\n \"くらす\",\n \"くらべる\",\n \"くるま\",\n \"くれる\",\n \"くろう\",\n \"くわしい\",\n \"ぐんかん\",\n \"ぐんしょく\",\n \"ぐんたい\",\n \"ぐんて\",\n \"けあな\",\n \"けいかく\",\n \"けいけん\",\n \"けいこ\",\n \"けいさつ\",\n \"げいじゅつ\",\n \"けいたい\",\n \"げいのうじん\",\n \"けいれき\",\n \"けいろ\",\n \"けおとす\",\n \"けおりもの\",\n \"げきか\",\n \"げきげん\",\n \"げきだん\",\n \"げきちん\",\n \"げきとつ\",\n \"げきは\",\n \"げきやく\",\n \"げこう\",\n \"げこくじょう\",\n \"げざい\",\n \"けさき\",\n \"げざん\",\n \"けしき\",\n \"けしごむ\",\n \"けしょう\",\n \"げすと\",\n \"けたば\",\n \"けちゃっぷ\",\n \"けちらす\",\n \"けつあつ\",\n \"けつい\",\n \"けつえき\",\n \"けっこん\",\n \"けつじょ\",\n \"けっせき\",\n \"けってい\",\n \"けつまつ\",\n \"げつようび\",\n \"げつれい\",\n \"けつろん\",\n \"げどく\",\n \"けとばす\",\n \"けとる\",\n \"けなげ\",\n \"けなす\",\n \"けなみ\",\n \"けぬき\",\n \"げねつ\",\n \"けねん\",\n \"けはい\",\n \"げひん\",\n \"けぶかい\",\n \"げぼく\",\n \"けまり\",\n \"けみかる\",\n \"けむし\",\n \"けむり\",\n \"けもの\",\n \"けらい\",\n \"けろけろ\",\n \"けわしい\",\n \"けんい\",\n \"けんえつ\",\n \"けんお\",\n \"けんか\",\n \"げんき\",\n \"けんげん\",\n \"けんこう\",\n \"けんさく\",\n \"けんしゅう\",\n \"けんすう\",\n \"げんそう\",\n \"けんちく\",\n \"けんてい\",\n \"けんとう\",\n \"けんない\",\n \"けんにん\",\n \"げんぶつ\",\n \"けんま\",\n \"けんみん\",\n \"けんめい\",\n \"けんらん\",\n \"けんり\",\n \"こあくま\",\n \"こいぬ\",\n \"こいびと\",\n \"ごうい\",\n \"こうえん\",\n \"こうおん\",\n \"こうかん\",\n \"ごうきゅう\",\n \"ごうけい\",\n \"こうこう\",\n \"こうさい\",\n \"こうじ\",\n \"こうすい\",\n \"ごうせい\",\n \"こうそく\",\n \"こうたい\",\n \"こうちゃ\",\n \"こうつう\",\n \"こうてい\",\n \"こうどう\",\n \"こうない\",\n \"こうはい\",\n \"ごうほう\",\n \"ごうまん\",\n \"こうもく\",\n \"こうりつ\",\n \"こえる\",\n \"こおり\",\n \"ごかい\",\n \"ごがつ\",\n \"ごかん\",\n \"こくご\",\n \"こくさい\",\n \"こくとう\",\n \"こくない\",\n \"こくはく\",\n \"こぐま\",\n \"こけい\",\n \"こける\",\n \"ここのか\",\n \"こころ\",\n \"こさめ\",\n \"こしつ\",\n \"こすう\",\n \"こせい\",\n \"こせき\",\n \"こぜん\",\n \"こそだて\",\n \"こたい\",\n \"こたえる\",\n \"こたつ\",\n \"こちょう\",\n \"こっか\",\n \"こつこつ\",\n \"こつばん\",\n \"こつぶ\",\n \"こてい\",\n \"こてん\",\n \"ことがら\",\n \"ことし\",\n \"ことば\",\n \"ことり\",\n \"こなごな\",\n \"こねこね\",\n \"このまま\",\n \"このみ\",\n \"このよ\",\n \"ごはん\",\n \"こひつじ\",\n \"こふう\",\n \"こふん\",\n \"こぼれる\",\n \"ごまあぶら\",\n \"こまかい\",\n \"ごますり\",\n \"こまつな\",\n \"こまる\",\n \"こむぎこ\",\n \"こもじ\",\n \"こもち\",\n \"こもの\",\n \"こもん\",\n \"こやく\",\n \"こやま\",\n \"こゆう\",\n \"こゆび\",\n \"こよい\",\n \"こよう\",\n \"こりる\",\n \"これくしょん\",\n \"ころっけ\",\n \"こわもて\",\n \"こわれる\",\n \"こんいん\",\n \"こんかい\",\n \"こんき\",\n \"こんしゅう\",\n \"こんすい\",\n \"こんだて\",\n \"こんとん\",\n \"こんなん\",\n \"こんびに\",\n \"こんぽん\",\n \"こんまけ\",\n \"こんや\",\n \"こんれい\",\n \"こんわく\",\n \"ざいえき\",\n \"さいかい\",\n \"さいきん\",\n \"ざいげん\",\n \"ざいこ\",\n \"さいしょ\",\n \"さいせい\",\n \"ざいたく\",\n \"ざいちゅう\",\n \"さいてき\",\n \"ざいりょう\",\n \"さうな\",\n \"さかいし\",\n \"さがす\",\n \"さかな\",\n \"さかみち\",\n \"さがる\",\n \"さぎょう\",\n \"さくし\",\n \"さくひん\",\n \"さくら\",\n \"さこく\",\n \"さこつ\",\n \"さずかる\",\n \"ざせき\",\n \"さたん\",\n \"さつえい\",\n \"ざつおん\",\n \"ざっか\",\n \"ざつがく\",\n \"さっきょく\",\n \"ざっし\",\n \"さつじん\",\n \"ざっそう\",\n \"さつたば\",\n \"さつまいも\",\n \"さてい\",\n \"さといも\",\n \"さとう\",\n \"さとおや\",\n \"さとし\",\n \"さとる\",\n \"さのう\",\n \"さばく\",\n \"さびしい\",\n \"さべつ\",\n \"さほう\",\n \"さほど\",\n \"さます\",\n \"さみしい\",\n \"さみだれ\",\n \"さむけ\",\n \"さめる\",\n \"さやえんどう\",\n \"さゆう\",\n \"さよう\",\n \"さよく\",\n \"さらだ\",\n \"ざるそば\",\n \"さわやか\",\n \"さわる\",\n \"さんいん\",\n \"さんか\",\n \"さんきゃく\",\n \"さんこう\",\n \"さんさい\",\n \"ざんしょ\",\n \"さんすう\",\n \"さんせい\",\n \"さんそ\",\n \"さんち\",\n \"さんま\",\n \"さんみ\",\n \"さんらん\",\n \"しあい\",\n \"しあげ\",\n \"しあさって\",\n \"しあわせ\",\n \"しいく\",\n \"しいん\",\n \"しうち\",\n \"しえい\",\n \"しおけ\",\n \"しかい\",\n \"しかく\",\n \"じかん\",\n \"しごと\",\n \"しすう\",\n \"じだい\",\n \"したうけ\",\n \"したぎ\",\n \"したて\",\n \"したみ\",\n \"しちょう\",\n \"しちりん\",\n \"しっかり\",\n \"しつじ\",\n \"しつもん\",\n \"してい\",\n \"してき\",\n \"してつ\",\n \"じてん\",\n \"じどう\",\n \"しなぎれ\",\n \"しなもの\",\n \"しなん\",\n \"しねま\",\n \"しねん\",\n \"しのぐ\",\n \"しのぶ\",\n \"しはい\",\n \"しばかり\",\n \"しはつ\",\n \"しはらい\",\n \"しはん\",\n \"しひょう\",\n \"しふく\",\n \"じぶん\",\n \"しへい\",\n \"しほう\",\n \"しほん\",\n \"しまう\",\n \"しまる\",\n \"しみん\",\n \"しむける\",\n \"じむしょ\",\n \"しめい\",\n \"しめる\",\n \"しもん\",\n \"しゃいん\",\n \"しゃうん\",\n \"しゃおん\",\n \"じゃがいも\",\n \"しやくしょ\",\n \"しゃくほう\",\n \"しゃけん\",\n \"しゃこ\",\n \"しゃざい\",\n \"しゃしん\",\n \"しゃせん\",\n \"しゃそう\",\n \"しゃたい\",\n \"しゃちょう\",\n \"しゃっきん\",\n \"じゃま\",\n \"しゃりん\",\n \"しゃれい\",\n \"じゆう\",\n \"じゅうしょ\",\n \"しゅくはく\",\n \"じゅしん\",\n \"しゅっせき\",\n \"しゅみ\",\n \"しゅらば\",\n \"じゅんばん\",\n \"しょうかい\",\n \"しょくたく\",\n \"しょっけん\",\n \"しょどう\",\n \"しょもつ\",\n \"しらせる\",\n \"しらべる\",\n \"しんか\",\n \"しんこう\",\n \"じんじゃ\",\n \"しんせいじ\",\n \"しんちく\",\n \"しんりん\",\n \"すあげ\",\n \"すあし\",\n \"すあな\",\n \"ずあん\",\n \"すいえい\",\n \"すいか\",\n \"すいとう\",\n \"ずいぶん\",\n \"すいようび\",\n \"すうがく\",\n \"すうじつ\",\n \"すうせん\",\n \"すおどり\",\n \"すきま\",\n \"すくう\",\n \"すくない\",\n \"すける\",\n \"すごい\",\n \"すこし\",\n \"ずさん\",\n \"すずしい\",\n \"すすむ\",\n \"すすめる\",\n \"すっかり\",\n \"ずっしり\",\n \"ずっと\",\n \"すてき\",\n \"すてる\",\n \"すねる\",\n \"すのこ\",\n \"すはだ\",\n \"すばらしい\",\n \"ずひょう\",\n \"ずぶぬれ\",\n \"すぶり\",\n \"すふれ\",\n \"すべて\",\n \"すべる\",\n \"ずほう\",\n \"すぼん\",\n \"すまい\",\n \"すめし\",\n \"すもう\",\n \"すやき\",\n \"すらすら\",\n \"するめ\",\n \"すれちがう\",\n \"すろっと\",\n \"すわる\",\n \"すんぜん\",\n \"すんぽう\",\n \"せあぶら\",\n \"せいかつ\",\n \"せいげん\",\n \"せいじ\",\n \"せいよう\",\n \"せおう\",\n \"せかいかん\",\n \"せきにん\",\n \"せきむ\",\n \"せきゆ\",\n \"せきらんうん\",\n \"せけん\",\n \"せこう\",\n \"せすじ\",\n \"せたい\",\n \"せたけ\",\n \"せっかく\",\n \"せっきゃく\",\n \"ぜっく\",\n \"せっけん\",\n \"せっこつ\",\n \"せっさたくま\",\n \"せつぞく\",\n \"せつだん\",\n \"せつでん\",\n \"せっぱん\",\n \"せつび\",\n \"せつぶん\",\n \"せつめい\",\n \"せつりつ\",\n \"せなか\",\n \"せのび\",\n \"せはば\",\n \"せびろ\",\n \"せぼね\",\n \"せまい\",\n \"せまる\",\n \"せめる\",\n \"せもたれ\",\n \"せりふ\",\n \"ぜんあく\",\n \"せんい\",\n \"せんえい\",\n \"せんか\",\n \"せんきょ\",\n \"せんく\",\n \"せんげん\",\n \"ぜんご\",\n \"せんさい\",\n \"せんしゅ\",\n \"せんすい\",\n \"せんせい\",\n \"せんぞ\",\n \"せんたく\",\n \"せんちょう\",\n \"せんてい\",\n \"せんとう\",\n \"せんぬき\",\n \"せんねん\",\n \"せんぱい\",\n \"ぜんぶ\",\n \"ぜんぽう\",\n \"せんむ\",\n \"せんめんじょ\",\n \"せんもん\",\n \"せんやく\",\n \"せんゆう\",\n \"せんよう\",\n \"ぜんら\",\n \"ぜんりゃく\",\n \"せんれい\",\n \"せんろ\",\n \"そあく\",\n \"そいとげる\",\n \"そいね\",\n \"そうがんきょう\",\n \"そうき\",\n \"そうご\",\n \"そうしん\",\n \"そうだん\",\n \"そうなん\",\n \"そうび\",\n \"そうめん\",\n \"そうり\",\n \"そえもの\",\n \"そえん\",\n \"そがい\",\n \"そげき\",\n \"そこう\",\n \"そこそこ\",\n \"そざい\",\n \"そしな\",\n \"そせい\",\n \"そせん\",\n \"そそぐ\",\n \"そだてる\",\n \"そつう\",\n \"そつえん\",\n \"そっかん\",\n \"そつぎょう\",\n \"そっけつ\",\n \"そっこう\",\n \"そっせん\",\n \"そっと\",\n \"そとがわ\",\n \"そとづら\",\n \"そなえる\",\n \"そなた\",\n \"そふぼ\",\n \"そぼく\",\n \"そぼろ\",\n \"そまつ\",\n \"そまる\",\n \"そむく\",\n \"そむりえ\",\n \"そめる\",\n \"そもそも\",\n \"そよかぜ\",\n \"そらまめ\",\n \"そろう\",\n \"そんかい\",\n \"そんけい\",\n \"そんざい\",\n \"そんしつ\",\n \"そんぞく\",\n \"そんちょう\",\n \"ぞんび\",\n \"ぞんぶん\",\n \"そんみん\",\n \"たあい\",\n \"たいいん\",\n \"たいうん\",\n \"たいえき\",\n \"たいおう\",\n \"だいがく\",\n \"たいき\",\n \"たいぐう\",\n \"たいけん\",\n \"たいこ\",\n \"たいざい\",\n \"だいじょうぶ\",\n \"だいすき\",\n \"たいせつ\",\n \"たいそう\",\n \"だいたい\",\n \"たいちょう\",\n \"たいてい\",\n \"だいどころ\",\n \"たいない\",\n \"たいねつ\",\n \"たいのう\",\n \"たいはん\",\n \"だいひょう\",\n \"たいふう\",\n \"たいへん\",\n \"たいほ\",\n \"たいまつばな\",\n \"たいみんぐ\",\n \"たいむ\",\n \"たいめん\",\n \"たいやき\",\n \"たいよう\",\n \"たいら\",\n \"たいりょく\",\n \"たいる\",\n \"たいわん\",\n \"たうえ\",\n \"たえる\",\n \"たおす\",\n \"たおる\",\n \"たおれる\",\n \"たかい\",\n \"たかね\",\n \"たきび\",\n \"たくさん\",\n \"たこく\",\n \"たこやき\",\n \"たさい\",\n \"たしざん\",\n \"だじゃれ\",\n \"たすける\",\n \"たずさわる\",\n \"たそがれ\",\n \"たたかう\",\n \"たたく\",\n \"ただしい\",\n \"たたみ\",\n \"たちばな\",\n \"だっかい\",\n \"だっきゃく\",\n \"だっこ\",\n \"だっしゅつ\",\n \"だったい\",\n \"たてる\",\n \"たとえる\",\n \"たなばた\",\n \"たにん\",\n \"たぬき\",\n \"たのしみ\",\n \"たはつ\",\n \"たぶん\",\n \"たべる\",\n \"たぼう\",\n \"たまご\",\n \"たまる\",\n \"だむる\",\n \"ためいき\",\n \"ためす\",\n \"ためる\",\n \"たもつ\",\n \"たやすい\",\n \"たよる\",\n \"たらす\",\n \"たりきほんがん\",\n \"たりょう\",\n \"たりる\",\n \"たると\",\n \"たれる\",\n \"たれんと\",\n \"たろっと\",\n \"たわむれる\",\n \"だんあつ\",\n \"たんい\",\n \"たんおん\",\n \"たんか\",\n \"たんき\",\n \"たんけん\",\n \"たんご\",\n \"たんさん\",\n \"たんじょうび\",\n \"だんせい\",\n \"たんそく\",\n \"たんたい\",\n \"だんち\",\n \"たんてい\",\n \"たんとう\",\n \"だんな\",\n \"たんにん\",\n \"だんねつ\",\n \"たんのう\",\n \"たんぴん\",\n \"だんぼう\",\n \"たんまつ\",\n \"たんめい\",\n \"だんれつ\",\n \"だんろ\",\n \"だんわ\",\n \"ちあい\",\n \"ちあん\",\n \"ちいき\",\n \"ちいさい\",\n \"ちえん\",\n \"ちかい\",\n \"ちから\",\n \"ちきゅう\",\n \"ちきん\",\n \"ちけいず\",\n \"ちけん\",\n \"ちこく\",\n \"ちさい\",\n \"ちしき\",\n \"ちしりょう\",\n \"ちせい\",\n \"ちそう\",\n \"ちたい\",\n \"ちたん\",\n \"ちちおや\",\n \"ちつじょ\",\n \"ちてき\",\n \"ちてん\",\n \"ちぬき\",\n \"ちぬり\",\n \"ちのう\",\n \"ちひょう\",\n \"ちへいせん\",\n \"ちほう\",\n \"ちまた\",\n \"ちみつ\",\n \"ちみどろ\",\n \"ちめいど\",\n \"ちゃんこなべ\",\n \"ちゅうい\",\n \"ちゆりょく\",\n \"ちょうし\",\n \"ちょさくけん\",\n \"ちらし\",\n \"ちらみ\",\n \"ちりがみ\",\n \"ちりょう\",\n \"ちるど\",\n \"ちわわ\",\n \"ちんたい\",\n \"ちんもく\",\n \"ついか\",\n \"ついたち\",\n \"つうか\",\n \"つうじょう\",\n \"つうはん\",\n \"つうわ\",\n \"つかう\",\n \"つかれる\",\n \"つくね\",\n \"つくる\",\n \"つけね\",\n \"つける\",\n \"つごう\",\n \"つたえる\",\n \"つづく\",\n \"つつじ\",\n \"つつむ\",\n \"つとめる\",\n \"つながる\",\n \"つなみ\",\n \"つねづね\",\n \"つのる\",\n \"つぶす\",\n \"つまらない\",\n \"つまる\",\n \"つみき\",\n \"つめたい\",\n \"つもり\",\n \"つもる\",\n \"つよい\",\n \"つるぼ\",\n \"つるみく\",\n \"つわもの\",\n \"つわり\",\n \"てあし\",\n \"てあて\",\n \"てあみ\",\n \"ていおん\",\n \"ていか\",\n \"ていき\",\n \"ていけい\",\n \"ていこく\",\n \"ていさつ\",\n \"ていし\",\n \"ていせい\",\n \"ていたい\",\n \"ていど\",\n \"ていねい\",\n \"ていひょう\",\n \"ていへん\",\n \"ていぼう\",\n \"てうち\",\n \"ておくれ\",\n \"てきとう\",\n \"てくび\",\n \"でこぼこ\",\n \"てさぎょう\",\n \"てさげ\",\n \"てすり\",\n \"てそう\",\n \"てちがい\",\n \"てちょう\",\n \"てつがく\",\n \"てつづき\",\n \"でっぱ\",\n \"てつぼう\",\n \"てつや\",\n \"でぬかえ\",\n \"てぬき\",\n \"てぬぐい\",\n \"てのひら\",\n \"てはい\",\n \"てぶくろ\",\n \"てふだ\",\n \"てほどき\",\n \"てほん\",\n \"てまえ\",\n \"てまきずし\",\n \"てみじか\",\n \"てみやげ\",\n \"てらす\",\n \"てれび\",\n \"てわけ\",\n \"てわたし\",\n \"でんあつ\",\n \"てんいん\",\n \"てんかい\",\n \"てんき\",\n \"てんぐ\",\n \"てんけん\",\n \"てんごく\",\n \"てんさい\",\n \"てんし\",\n \"てんすう\",\n \"でんち\",\n \"てんてき\",\n \"てんとう\",\n \"てんない\",\n \"てんぷら\",\n \"てんぼうだい\",\n \"てんめつ\",\n \"てんらんかい\",\n \"でんりょく\",\n \"でんわ\",\n \"どあい\",\n \"といれ\",\n \"どうかん\",\n \"とうきゅう\",\n \"どうぐ\",\n \"とうし\",\n \"とうむぎ\",\n \"とおい\",\n \"とおか\",\n \"とおく\",\n \"とおす\",\n \"とおる\",\n \"とかい\",\n \"とかす\",\n \"ときおり\",\n \"ときどき\",\n \"とくい\",\n \"とくしゅう\",\n \"とくてん\",\n \"とくに\",\n \"とくべつ\",\n \"とけい\",\n \"とける\",\n \"とこや\",\n \"とさか\",\n \"としょかん\",\n \"とそう\",\n \"とたん\",\n \"とちゅう\",\n \"とっきゅう\",\n \"とっくん\",\n \"とつぜん\",\n \"とつにゅう\",\n \"とどける\",\n \"ととのえる\",\n \"とない\",\n \"となえる\",\n \"となり\",\n \"とのさま\",\n \"とばす\",\n \"どぶがわ\",\n \"とほう\",\n \"とまる\",\n \"とめる\",\n \"ともだち\",\n \"ともる\",\n \"どようび\",\n \"とらえる\",\n \"とんかつ\",\n \"どんぶり\",\n \"ないかく\",\n \"ないこう\",\n \"ないしょ\",\n \"ないす\",\n \"ないせん\",\n \"ないそう\",\n \"なおす\",\n \"ながい\",\n \"なくす\",\n \"なげる\",\n \"なこうど\",\n \"なさけ\",\n \"なたでここ\",\n \"なっとう\",\n \"なつやすみ\",\n \"ななおし\",\n \"なにごと\",\n \"なにもの\",\n \"なにわ\",\n \"なのか\",\n \"なふだ\",\n \"なまいき\",\n \"なまえ\",\n \"なまみ\",\n \"なみだ\",\n \"なめらか\",\n \"なめる\",\n \"なやむ\",\n \"ならう\",\n \"ならび\",\n \"ならぶ\",\n \"なれる\",\n \"なわとび\",\n \"なわばり\",\n \"にあう\",\n \"にいがた\",\n \"にうけ\",\n \"におい\",\n \"にかい\",\n \"にがて\",\n \"にきび\",\n \"にくしみ\",\n \"にくまん\",\n \"にげる\",\n \"にさんかたんそ\",\n \"にしき\",\n \"にせもの\",\n \"にちじょう\",\n \"にちようび\",\n \"にっか\",\n \"にっき\",\n \"にっけい\",\n \"にっこう\",\n \"にっさん\",\n \"にっしょく\",\n \"にっすう\",\n \"にっせき\",\n \"にってい\",\n \"になう\",\n \"にほん\",\n \"にまめ\",\n \"にもつ\",\n \"にやり\",\n \"にゅういん\",\n \"にりんしゃ\",\n \"にわとり\",\n \"にんい\",\n \"にんか\",\n \"にんき\",\n \"にんげん\",\n \"にんしき\",\n \"にんずう\",\n \"にんそう\",\n \"にんたい\",\n \"にんち\",\n \"にんてい\",\n \"にんにく\",\n \"にんぷ\",\n \"にんまり\",\n \"にんむ\",\n \"にんめい\",\n \"にんよう\",\n \"ぬいくぎ\",\n \"ぬかす\",\n \"ぬぐいとる\",\n \"ぬぐう\",\n \"ぬくもり\",\n \"ぬすむ\",\n \"ぬまえび\",\n \"ぬめり\",\n \"ぬらす\",\n \"ぬんちゃく\",\n \"ねあげ\",\n \"ねいき\",\n \"ねいる\",\n \"ねいろ\",\n \"ねぐせ\",\n \"ねくたい\",\n \"ねくら\",\n \"ねこぜ\",\n \"ねこむ\",\n \"ねさげ\",\n \"ねすごす\",\n \"ねそべる\",\n \"ねだん\",\n \"ねつい\",\n \"ねっしん\",\n \"ねつぞう\",\n \"ねったいぎょ\",\n \"ねぶそく\",\n \"ねふだ\",\n \"ねぼう\",\n \"ねほりはほり\",\n \"ねまき\",\n \"ねまわし\",\n \"ねみみ\",\n \"ねむい\",\n \"ねむたい\",\n \"ねもと\",\n \"ねらう\",\n \"ねわざ\",\n \"ねんいり\",\n \"ねんおし\",\n \"ねんかん\",\n \"ねんきん\",\n \"ねんぐ\",\n \"ねんざ\",\n \"ねんし\",\n \"ねんちゃく\",\n \"ねんど\",\n \"ねんぴ\",\n \"ねんぶつ\",\n \"ねんまつ\",\n \"ねんりょう\",\n \"ねんれい\",\n \"のいず\",\n \"のおづま\",\n \"のがす\",\n \"のきなみ\",\n \"のこぎり\",\n \"のこす\",\n \"のこる\",\n \"のせる\",\n \"のぞく\",\n \"のぞむ\",\n \"のたまう\",\n \"のちほど\",\n \"のっく\",\n \"のばす\",\n \"のはら\",\n \"のべる\",\n \"のぼる\",\n \"のみもの\",\n \"のやま\",\n \"のらいぬ\",\n \"のらねこ\",\n \"のりもの\",\n \"のりゆき\",\n \"のれん\",\n \"のんき\",\n \"ばあい\",\n \"はあく\",\n \"ばあさん\",\n \"ばいか\",\n \"ばいく\",\n \"はいけん\",\n \"はいご\",\n \"はいしん\",\n \"はいすい\",\n \"はいせん\",\n \"はいそう\",\n \"はいち\",\n \"ばいばい\",\n \"はいれつ\",\n \"はえる\",\n \"はおる\",\n \"はかい\",\n \"ばかり\",\n \"はかる\",\n \"はくしゅ\",\n \"はけん\",\n \"はこぶ\",\n \"はさみ\",\n \"はさん\",\n \"はしご\",\n \"ばしょ\",\n \"はしる\",\n \"はせる\",\n \"ぱそこん\",\n \"はそん\",\n \"はたん\",\n \"はちみつ\",\n \"はつおん\",\n \"はっかく\",\n \"はづき\",\n \"はっきり\",\n \"はっくつ\",\n \"はっけん\",\n \"はっこう\",\n \"はっさん\",\n \"はっしん\",\n \"はったつ\",\n \"はっちゅう\",\n \"はってん\",\n \"はっぴょう\",\n \"はっぽう\",\n \"はなす\",\n \"はなび\",\n \"はにかむ\",\n \"はぶらし\",\n \"はみがき\",\n \"はむかう\",\n \"はめつ\",\n \"はやい\",\n \"はやし\",\n \"はらう\",\n \"はろうぃん\",\n \"はわい\",\n \"はんい\",\n \"はんえい\",\n \"はんおん\",\n \"はんかく\",\n \"はんきょう\",\n \"ばんぐみ\",\n \"はんこ\",\n \"はんしゃ\",\n \"はんすう\",\n \"はんだん\",\n \"ぱんち\",\n \"ぱんつ\",\n \"はんてい\",\n \"はんとし\",\n \"はんのう\",\n \"はんぱ\",\n \"はんぶん\",\n \"はんぺん\",\n \"はんぼうき\",\n \"はんめい\",\n \"はんらん\",\n \"はんろん\",\n \"ひいき\",\n \"ひうん\",\n \"ひえる\",\n \"ひかく\",\n \"ひかり\",\n \"ひかる\",\n \"ひかん\",\n \"ひくい\",\n \"ひけつ\",\n \"ひこうき\",\n \"ひこく\",\n \"ひさい\",\n \"ひさしぶり\",\n \"ひさん\",\n \"びじゅつかん\",\n \"ひしょ\",\n \"ひそか\",\n \"ひそむ\",\n \"ひたむき\",\n \"ひだり\",\n \"ひたる\",\n \"ひつぎ\",\n \"ひっこし\",\n \"ひっし\",\n \"ひつじゅひん\",\n \"ひっす\",\n \"ひつぜん\",\n \"ぴったり\",\n \"ぴっちり\",\n \"ひつよう\",\n \"ひてい\",\n \"ひとごみ\",\n \"ひなまつり\",\n \"ひなん\",\n \"ひねる\",\n \"ひはん\",\n \"ひびく\",\n \"ひひょう\",\n \"ひほう\",\n \"ひまわり\",\n \"ひまん\",\n \"ひみつ\",\n \"ひめい\",\n \"ひめじし\",\n \"ひやけ\",\n \"ひやす\",\n \"ひよう\",\n \"びょうき\",\n \"ひらがな\",\n \"ひらく\",\n \"ひりつ\",\n \"ひりょう\",\n \"ひるま\",\n \"ひるやすみ\",\n \"ひれい\",\n \"ひろい\",\n \"ひろう\",\n \"ひろき\",\n \"ひろゆき\",\n \"ひんかく\",\n \"ひんけつ\",\n \"ひんこん\",\n \"ひんしゅ\",\n \"ひんそう\",\n \"ぴんち\",\n \"ひんぱん\",\n \"びんぼう\",\n \"ふあん\",\n \"ふいうち\",\n \"ふうけい\",\n \"ふうせん\",\n \"ぷうたろう\",\n \"ふうとう\",\n \"ふうふ\",\n \"ふえる\",\n \"ふおん\",\n \"ふかい\",\n \"ふきん\",\n \"ふくざつ\",\n \"ふくぶくろ\",\n \"ふこう\",\n \"ふさい\",\n \"ふしぎ\",\n \"ふじみ\",\n \"ふすま\",\n \"ふせい\",\n \"ふせぐ\",\n \"ふそく\",\n \"ぶたにく\",\n \"ふたん\",\n \"ふちょう\",\n \"ふつう\",\n \"ふつか\",\n \"ふっかつ\",\n \"ふっき\",\n \"ふっこく\",\n \"ぶどう\",\n \"ふとる\",\n \"ふとん\",\n \"ふのう\",\n \"ふはい\",\n \"ふひょう\",\n \"ふへん\",\n \"ふまん\",\n \"ふみん\",\n \"ふめつ\",\n \"ふめん\",\n \"ふよう\",\n \"ふりこ\",\n \"ふりる\",\n \"ふるい\",\n \"ふんいき\",\n \"ぶんがく\",\n \"ぶんぐ\",\n \"ふんしつ\",\n \"ぶんせき\",\n \"ふんそう\",\n \"ぶんぽう\",\n \"へいあん\",\n \"へいおん\",\n \"へいがい\",\n \"へいき\",\n \"へいげん\",\n \"へいこう\",\n \"へいさ\",\n \"へいしゃ\",\n \"へいせつ\",\n \"へいそ\",\n \"へいたく\",\n \"へいてん\",\n \"へいねつ\",\n \"へいわ\",\n \"へきが\",\n \"へこむ\",\n \"べにいろ\",\n \"べにしょうが\",\n \"へらす\",\n \"へんかん\",\n \"べんきょう\",\n \"べんごし\",\n \"へんさい\",\n \"へんたい\",\n \"べんり\",\n \"ほあん\",\n \"ほいく\",\n \"ぼうぎょ\",\n \"ほうこく\",\n \"ほうそう\",\n \"ほうほう\",\n \"ほうもん\",\n \"ほうりつ\",\n \"ほえる\",\n \"ほおん\",\n \"ほかん\",\n \"ほきょう\",\n \"ぼきん\",\n \"ほくろ\",\n \"ほけつ\",\n \"ほけん\",\n \"ほこう\",\n \"ほこる\",\n \"ほしい\",\n \"ほしつ\",\n \"ほしゅ\",\n \"ほしょう\",\n \"ほせい\",\n \"ほそい\",\n \"ほそく\",\n \"ほたて\",\n \"ほたる\",\n \"ぽちぶくろ\",\n \"ほっきょく\",\n \"ほっさ\",\n \"ほったん\",\n \"ほとんど\",\n \"ほめる\",\n \"ほんい\",\n \"ほんき\",\n \"ほんけ\",\n \"ほんしつ\",\n \"ほんやく\",\n \"まいにち\",\n \"まかい\",\n \"まかせる\",\n \"まがる\",\n \"まける\",\n \"まこと\",\n \"まさつ\",\n \"まじめ\",\n \"ますく\",\n \"まぜる\",\n \"まつり\",\n \"まとめ\",\n \"まなぶ\",\n \"まぬけ\",\n \"まねく\",\n \"まほう\",\n \"まもる\",\n \"まゆげ\",\n \"まよう\",\n \"まろやか\",\n \"まわす\",\n \"まわり\",\n \"まわる\",\n \"まんが\",\n \"まんきつ\",\n \"まんぞく\",\n \"まんなか\",\n \"みいら\",\n \"みうち\",\n \"みえる\",\n \"みがく\",\n \"みかた\",\n \"みかん\",\n \"みけん\",\n \"みこん\",\n \"みじかい\",\n \"みすい\",\n \"みすえる\",\n \"みせる\",\n \"みっか\",\n \"みつかる\",\n \"みつける\",\n \"みてい\",\n \"みとめる\",\n \"みなと\",\n \"みなみかさい\",\n \"みねらる\",\n \"みのう\",\n \"みのがす\",\n \"みほん\",\n \"みもと\",\n \"みやげ\",\n \"みらい\",\n \"みりょく\",\n \"みわく\",\n \"みんか\",\n \"みんぞく\",\n \"むいか\",\n \"むえき\",\n \"むえん\",\n \"むかい\",\n \"むかう\",\n \"むかえ\",\n \"むかし\",\n \"むぎちゃ\",\n \"むける\",\n \"むげん\",\n \"むさぼる\",\n \"むしあつい\",\n \"むしば\",\n \"むじゅん\",\n \"むしろ\",\n \"むすう\",\n \"むすこ\",\n \"むすぶ\",\n \"むすめ\",\n \"むせる\",\n \"むせん\",\n \"むちゅう\",\n \"むなしい\",\n \"むのう\",\n \"むやみ\",\n \"むよう\",\n \"むらさき\",\n \"むりょう\",\n \"むろん\",\n \"めいあん\",\n \"めいうん\",\n \"めいえん\",\n \"めいかく\",\n \"めいきょく\",\n \"めいさい\",\n \"めいし\",\n \"めいそう\",\n \"めいぶつ\",\n \"めいれい\",\n \"めいわく\",\n \"めぐまれる\",\n \"めざす\",\n \"めした\",\n \"めずらしい\",\n \"めだつ\",\n \"めまい\",\n \"めやす\",\n \"めんきょ\",\n \"めんせき\",\n \"めんどう\",\n \"もうしあげる\",\n \"もうどうけん\",\n \"もえる\",\n \"もくし\",\n \"もくてき\",\n \"もくようび\",\n \"もちろん\",\n \"もどる\",\n \"もらう\",\n \"もんく\",\n \"もんだい\",\n \"やおや\",\n \"やける\",\n \"やさい\",\n \"やさしい\",\n \"やすい\",\n \"やすたろう\",\n \"やすみ\",\n \"やせる\",\n \"やそう\",\n \"やたい\",\n \"やちん\",\n \"やっと\",\n \"やっぱり\",\n \"やぶる\",\n \"やめる\",\n \"ややこしい\",\n \"やよい\",\n \"やわらかい\",\n \"ゆうき\",\n \"ゆうびんきょく\",\n \"ゆうべ\",\n \"ゆうめい\",\n \"ゆけつ\",\n \"ゆしゅつ\",\n \"ゆせん\",\n \"ゆそう\",\n \"ゆたか\",\n \"ゆちゃく\",\n \"ゆでる\",\n \"ゆにゅう\",\n \"ゆびわ\",\n \"ゆらい\",\n \"ゆれる\",\n \"ようい\",\n \"ようか\",\n \"ようきゅう\",\n \"ようじ\",\n \"ようす\",\n \"ようちえん\",\n \"よかぜ\",\n \"よかん\",\n \"よきん\",\n \"よくせい\",\n \"よくぼう\",\n \"よけい\",\n \"よごれる\",\n \"よさん\",\n \"よしゅう\",\n \"よそう\",\n \"よそく\",\n \"よっか\",\n \"よてい\",\n \"よどがわく\",\n \"よねつ\",\n \"よやく\",\n \"よゆう\",\n \"よろこぶ\",\n \"よろしい\",\n \"らいう\",\n \"らくがき\",\n \"らくご\",\n \"らくさつ\",\n \"らくだ\",\n \"らしんばん\",\n \"らせん\",\n \"らぞく\",\n \"らたい\",\n \"らっか\",\n \"られつ\",\n \"りえき\",\n \"りかい\",\n \"りきさく\",\n \"りきせつ\",\n \"りくぐん\",\n \"りくつ\",\n \"りけん\",\n \"りこう\",\n \"りせい\",\n \"りそう\",\n \"りそく\",\n \"りてん\",\n \"りねん\",\n \"りゆう\",\n \"りゅうがく\",\n \"りよう\",\n \"りょうり\",\n \"りょかん\",\n \"りょくちゃ\",\n \"りょこう\",\n \"りりく\",\n \"りれき\",\n \"りろん\",\n \"りんご\",\n \"るいけい\",\n \"るいさい\",\n \"るいじ\",\n \"るいせき\",\n \"るすばん\",\n \"るりがわら\",\n \"れいかん\",\n \"れいぎ\",\n \"れいせい\",\n \"れいぞうこ\",\n \"れいとう\",\n \"れいぼう\",\n \"れきし\",\n \"れきだい\",\n \"れんあい\",\n \"れんけい\",\n \"れんこん\",\n \"れんさい\",\n \"れんしゅう\",\n \"れんぞく\",\n \"れんらく\",\n \"ろうか\",\n \"ろうご\",\n \"ろうじん\",\n \"ろうそく\",\n \"ろくが\",\n \"ろこつ\",\n \"ろじうら\",\n \"ろしゅつ\",\n \"ろせん\",\n \"ろてん\",\n \"ろめん\",\n \"ろれつ\",\n \"ろんぎ\",\n \"ろんぱ\",\n \"ろんぶん\",\n \"ろんり\",\n \"わかす\",\n \"わかめ\",\n \"わかやま\",\n \"わかれる\",\n \"わしつ\",\n \"わじまし\",\n \"わすれもの\",\n \"わらう\",\n \"われる\"\n]\n\n},{}],54:[function(require,module,exports){\nmodule.exports=[\n \"abacate\",\n \"abaixo\",\n \"abalar\",\n \"abater\",\n \"abduzir\",\n \"abelha\",\n \"aberto\",\n \"abismo\",\n \"abotoar\",\n \"abranger\",\n \"abreviar\",\n \"abrigar\",\n \"abrupto\",\n \"absinto\",\n \"absoluto\",\n \"absurdo\",\n \"abutre\",\n \"acabado\",\n \"acalmar\",\n \"acampar\",\n \"acanhar\",\n \"acaso\",\n \"aceitar\",\n \"acelerar\",\n \"acenar\",\n \"acervo\",\n \"acessar\",\n \"acetona\",\n \"achatar\",\n \"acidez\",\n \"acima\",\n \"acionado\",\n \"acirrar\",\n \"aclamar\",\n \"aclive\",\n \"acolhida\",\n \"acomodar\",\n \"acoplar\",\n \"acordar\",\n \"acumular\",\n \"acusador\",\n \"adaptar\",\n \"adega\",\n \"adentro\",\n \"adepto\",\n \"adequar\",\n \"aderente\",\n \"adesivo\",\n \"adeus\",\n \"adiante\",\n \"aditivo\",\n \"adjetivo\",\n \"adjunto\",\n \"admirar\",\n \"adorar\",\n \"adquirir\",\n \"adubo\",\n \"adverso\",\n \"advogado\",\n \"aeronave\",\n \"afastar\",\n \"aferir\",\n \"afetivo\",\n \"afinador\",\n \"afivelar\",\n \"aflito\",\n \"afluente\",\n \"afrontar\",\n \"agachar\",\n \"agarrar\",\n \"agasalho\",\n \"agenciar\",\n \"agilizar\",\n \"agiota\",\n \"agitado\",\n \"agora\",\n \"agradar\",\n \"agreste\",\n \"agrupar\",\n \"aguardar\",\n \"agulha\",\n \"ajoelhar\",\n \"ajudar\",\n \"ajustar\",\n \"alameda\",\n \"alarme\",\n \"alastrar\",\n \"alavanca\",\n \"albergue\",\n \"albino\",\n \"alcatra\",\n \"aldeia\",\n \"alecrim\",\n \"alegria\",\n \"alertar\",\n \"alface\",\n \"alfinete\",\n \"algum\",\n \"alheio\",\n \"aliar\",\n \"alicate\",\n \"alienar\",\n \"alinhar\",\n \"aliviar\",\n \"almofada\",\n \"alocar\",\n \"alpiste\",\n \"alterar\",\n \"altitude\",\n \"alucinar\",\n \"alugar\",\n \"aluno\",\n \"alusivo\",\n \"alvo\",\n \"amaciar\",\n \"amador\",\n \"amarelo\",\n \"amassar\",\n \"ambas\",\n \"ambiente\",\n \"ameixa\",\n \"amenizar\",\n \"amido\",\n \"amistoso\",\n \"amizade\",\n \"amolador\",\n \"amontoar\",\n \"amoroso\",\n \"amostra\",\n \"amparar\",\n \"ampliar\",\n \"ampola\",\n \"anagrama\",\n \"analisar\",\n \"anarquia\",\n \"anatomia\",\n \"andaime\",\n \"anel\",\n \"anexo\",\n \"angular\",\n \"animar\",\n \"anjo\",\n \"anomalia\",\n \"anotado\",\n \"ansioso\",\n \"anterior\",\n \"anuidade\",\n \"anunciar\",\n \"anzol\",\n \"apagador\",\n \"apalpar\",\n \"apanhado\",\n \"apego\",\n \"apelido\",\n \"apertada\",\n \"apesar\",\n \"apetite\",\n \"apito\",\n \"aplauso\",\n \"aplicada\",\n \"apoio\",\n \"apontar\",\n \"aposta\",\n \"aprendiz\",\n \"aprovar\",\n \"aquecer\",\n \"arame\",\n \"aranha\",\n \"arara\",\n \"arcada\",\n \"ardente\",\n \"areia\",\n \"arejar\",\n \"arenito\",\n \"aresta\",\n \"argiloso\",\n \"argola\",\n \"arma\",\n \"arquivo\",\n \"arraial\",\n \"arrebate\",\n \"arriscar\",\n \"arroba\",\n \"arrumar\",\n \"arsenal\",\n \"arterial\",\n \"artigo\",\n \"arvoredo\",\n \"asfaltar\",\n \"asilado\",\n \"aspirar\",\n \"assador\",\n \"assinar\",\n \"assoalho\",\n \"assunto\",\n \"astral\",\n \"atacado\",\n \"atadura\",\n \"atalho\",\n \"atarefar\",\n \"atear\",\n \"atender\",\n \"aterro\",\n \"ateu\",\n \"atingir\",\n \"atirador\",\n \"ativo\",\n \"atoleiro\",\n \"atracar\",\n \"atrevido\",\n \"atriz\",\n \"atual\",\n \"atum\",\n \"auditor\",\n \"aumentar\",\n \"aura\",\n \"aurora\",\n \"autismo\",\n \"autoria\",\n \"autuar\",\n \"avaliar\",\n \"avante\",\n \"avaria\",\n \"avental\",\n \"avesso\",\n \"aviador\",\n \"avisar\",\n \"avulso\",\n \"axila\",\n \"azarar\",\n \"azedo\",\n \"azeite\",\n \"azulejo\",\n \"babar\",\n \"babosa\",\n \"bacalhau\",\n \"bacharel\",\n \"bacia\",\n \"bagagem\",\n \"baiano\",\n \"bailar\",\n \"baioneta\",\n \"bairro\",\n \"baixista\",\n \"bajular\",\n \"baleia\",\n \"baliza\",\n \"balsa\",\n \"banal\",\n \"bandeira\",\n \"banho\",\n \"banir\",\n \"banquete\",\n \"barato\",\n \"barbado\",\n \"baronesa\",\n \"barraca\",\n \"barulho\",\n \"baseado\",\n \"bastante\",\n \"batata\",\n \"batedor\",\n \"batida\",\n \"batom\",\n \"batucar\",\n \"baunilha\",\n \"beber\",\n \"beijo\",\n \"beirada\",\n \"beisebol\",\n \"beldade\",\n \"beleza\",\n \"belga\",\n \"beliscar\",\n \"bendito\",\n \"bengala\",\n \"benzer\",\n \"berimbau\",\n \"berlinda\",\n \"berro\",\n \"besouro\",\n \"bexiga\",\n \"bezerro\",\n \"bico\",\n \"bicudo\",\n \"bienal\",\n \"bifocal\",\n \"bifurcar\",\n \"bigorna\",\n \"bilhete\",\n \"bimestre\",\n \"bimotor\",\n \"biologia\",\n \"biombo\",\n \"biosfera\",\n \"bipolar\",\n \"birrento\",\n \"biscoito\",\n \"bisneto\",\n \"bispo\",\n \"bissexto\",\n \"bitola\",\n \"bizarro\",\n \"blindado\",\n \"bloco\",\n \"bloquear\",\n \"boato\",\n \"bobagem\",\n \"bocado\",\n \"bocejo\",\n \"bochecha\",\n \"boicotar\",\n \"bolada\",\n \"boletim\",\n \"bolha\",\n \"bolo\",\n \"bombeiro\",\n \"bonde\",\n \"boneco\",\n \"bonita\",\n \"borbulha\",\n \"borda\",\n \"boreal\",\n \"borracha\",\n \"bovino\",\n \"boxeador\",\n \"branco\",\n \"brasa\",\n \"braveza\",\n \"breu\",\n \"briga\",\n \"brilho\",\n \"brincar\",\n \"broa\",\n \"brochura\",\n \"bronzear\",\n \"broto\",\n \"bruxo\",\n \"bucha\",\n \"budismo\",\n \"bufar\",\n \"bule\",\n \"buraco\",\n \"busca\",\n \"busto\",\n \"buzina\",\n \"cabana\",\n \"cabelo\",\n \"cabide\",\n \"cabo\",\n \"cabrito\",\n \"cacau\",\n \"cacetada\",\n \"cachorro\",\n \"cacique\",\n \"cadastro\",\n \"cadeado\",\n \"cafezal\",\n \"caiaque\",\n \"caipira\",\n \"caixote\",\n \"cajado\",\n \"caju\",\n \"calafrio\",\n \"calcular\",\n \"caldeira\",\n \"calibrar\",\n \"calmante\",\n \"calota\",\n \"camada\",\n \"cambista\",\n \"camisa\",\n \"camomila\",\n \"campanha\",\n \"camuflar\",\n \"canavial\",\n \"cancelar\",\n \"caneta\",\n \"canguru\",\n \"canhoto\",\n \"canivete\",\n \"canoa\",\n \"cansado\",\n \"cantar\",\n \"canudo\",\n \"capacho\",\n \"capela\",\n \"capinar\",\n \"capotar\",\n \"capricho\",\n \"captador\",\n \"capuz\",\n \"caracol\",\n \"carbono\",\n \"cardeal\",\n \"careca\",\n \"carimbar\",\n \"carneiro\",\n \"carpete\",\n \"carreira\",\n \"cartaz\",\n \"carvalho\",\n \"casaco\",\n \"casca\",\n \"casebre\",\n \"castelo\",\n \"casulo\",\n \"catarata\",\n \"cativar\",\n \"caule\",\n \"causador\",\n \"cautelar\",\n \"cavalo\",\n \"caverna\",\n \"cebola\",\n \"cedilha\",\n \"cegonha\",\n \"celebrar\",\n \"celular\",\n \"cenoura\",\n \"censo\",\n \"centeio\",\n \"cercar\",\n \"cerrado\",\n \"certeiro\",\n \"cerveja\",\n \"cetim\",\n \"cevada\",\n \"chacota\",\n \"chaleira\",\n \"chamado\",\n \"chapada\",\n \"charme\",\n \"chatice\",\n \"chave\",\n \"chefe\",\n \"chegada\",\n \"cheiro\",\n \"cheque\",\n \"chicote\",\n \"chifre\",\n \"chinelo\",\n \"chocalho\",\n \"chover\",\n \"chumbo\",\n \"chutar\",\n \"chuva\",\n \"cicatriz\",\n \"ciclone\",\n \"cidade\",\n \"cidreira\",\n \"ciente\",\n \"cigana\",\n \"cimento\",\n \"cinto\",\n \"cinza\",\n \"ciranda\",\n \"circuito\",\n \"cirurgia\",\n \"citar\",\n \"clareza\",\n \"clero\",\n \"clicar\",\n \"clone\",\n \"clube\",\n \"coado\",\n \"coagir\",\n \"cobaia\",\n \"cobertor\",\n \"cobrar\",\n \"cocada\",\n \"coelho\",\n \"coentro\",\n \"coeso\",\n \"cogumelo\",\n \"coibir\",\n \"coifa\",\n \"coiote\",\n \"colar\",\n \"coleira\",\n \"colher\",\n \"colidir\",\n \"colmeia\",\n \"colono\",\n \"coluna\",\n \"comando\",\n \"combinar\",\n \"comentar\",\n \"comitiva\",\n \"comover\",\n \"complexo\",\n \"comum\",\n \"concha\",\n \"condor\",\n \"conectar\",\n \"confuso\",\n \"congelar\",\n \"conhecer\",\n \"conjugar\",\n \"consumir\",\n \"contrato\",\n \"convite\",\n \"cooperar\",\n \"copeiro\",\n \"copiador\",\n \"copo\",\n \"coquetel\",\n \"coragem\",\n \"cordial\",\n \"corneta\",\n \"coronha\",\n \"corporal\",\n \"correio\",\n \"cortejo\",\n \"coruja\",\n \"corvo\",\n \"cosseno\",\n \"costela\",\n \"cotonete\",\n \"couro\",\n \"couve\",\n \"covil\",\n \"cozinha\",\n \"cratera\",\n \"cravo\",\n \"creche\",\n \"credor\",\n \"creme\",\n \"crer\",\n \"crespo\",\n \"criada\",\n \"criminal\",\n \"crioulo\",\n \"crise\",\n \"criticar\",\n \"crosta\",\n \"crua\",\n \"cruzeiro\",\n \"cubano\",\n \"cueca\",\n \"cuidado\",\n \"cujo\",\n \"culatra\",\n \"culminar\",\n \"culpar\",\n \"cultura\",\n \"cumprir\",\n \"cunhado\",\n \"cupido\",\n \"curativo\",\n \"curral\",\n \"cursar\",\n \"curto\",\n \"cuspir\",\n \"custear\",\n \"cutelo\",\n \"damasco\",\n \"datar\",\n \"debater\",\n \"debitar\",\n \"deboche\",\n \"debulhar\",\n \"decalque\",\n \"decimal\",\n \"declive\",\n \"decote\",\n \"decretar\",\n \"dedal\",\n \"dedicado\",\n \"deduzir\",\n \"defesa\",\n \"defumar\",\n \"degelo\",\n \"degrau\",\n \"degustar\",\n \"deitado\",\n \"deixar\",\n \"delator\",\n \"delegado\",\n \"delinear\",\n \"delonga\",\n \"demanda\",\n \"demitir\",\n \"demolido\",\n \"dentista\",\n \"depenado\",\n \"depilar\",\n \"depois\",\n \"depressa\",\n \"depurar\",\n \"deriva\",\n \"derramar\",\n \"desafio\",\n \"desbotar\",\n \"descanso\",\n \"desenho\",\n \"desfiado\",\n \"desgaste\",\n \"desigual\",\n \"deslize\",\n \"desmamar\",\n \"desova\",\n \"despesa\",\n \"destaque\",\n \"desviar\",\n \"detalhar\",\n \"detentor\",\n \"detonar\",\n \"detrito\",\n \"deusa\",\n \"dever\",\n \"devido\",\n \"devotado\",\n \"dezena\",\n \"diagrama\",\n \"dialeto\",\n \"didata\",\n \"difuso\",\n \"digitar\",\n \"dilatado\",\n \"diluente\",\n \"diminuir\",\n \"dinastia\",\n \"dinheiro\",\n \"diocese\",\n \"direto\",\n \"discreta\",\n \"disfarce\",\n \"disparo\",\n \"disquete\",\n \"dissipar\",\n \"distante\",\n \"ditador\",\n \"diurno\",\n \"diverso\",\n \"divisor\",\n \"divulgar\",\n \"dizer\",\n \"dobrador\",\n \"dolorido\",\n \"domador\",\n \"dominado\",\n \"donativo\",\n \"donzela\",\n \"dormente\",\n \"dorsal\",\n \"dosagem\",\n \"dourado\",\n \"doutor\",\n \"drenagem\",\n \"drible\",\n \"drogaria\",\n \"duelar\",\n \"duende\",\n \"dueto\",\n \"duplo\",\n \"duquesa\",\n \"durante\",\n \"duvidoso\",\n \"eclodir\",\n \"ecoar\",\n \"ecologia\",\n \"edificar\",\n \"edital\",\n \"educado\",\n \"efeito\",\n \"efetivar\",\n \"ejetar\",\n \"elaborar\",\n \"eleger\",\n \"eleitor\",\n \"elenco\",\n \"elevador\",\n \"eliminar\",\n \"elogiar\",\n \"embargo\",\n \"embolado\",\n \"embrulho\",\n \"embutido\",\n \"emenda\",\n \"emergir\",\n \"emissor\",\n \"empatia\",\n \"empenho\",\n \"empinado\",\n \"empolgar\",\n \"emprego\",\n \"empurrar\",\n \"emulador\",\n \"encaixe\",\n \"encenado\",\n \"enchente\",\n \"encontro\",\n \"endeusar\",\n \"endossar\",\n \"enfaixar\",\n \"enfeite\",\n \"enfim\",\n \"engajado\",\n \"engenho\",\n \"englobar\",\n \"engomado\",\n \"engraxar\",\n \"enguia\",\n \"enjoar\",\n \"enlatar\",\n \"enquanto\",\n \"enraizar\",\n \"enrolado\",\n \"enrugar\",\n \"ensaio\",\n \"enseada\",\n \"ensino\",\n \"ensopado\",\n \"entanto\",\n \"enteado\",\n \"entidade\",\n \"entortar\",\n \"entrada\",\n \"entulho\",\n \"envergar\",\n \"enviado\",\n \"envolver\",\n \"enxame\",\n \"enxerto\",\n \"enxofre\",\n \"enxuto\",\n \"epiderme\",\n \"equipar\",\n \"ereto\",\n \"erguido\",\n \"errata\",\n \"erva\",\n \"ervilha\",\n \"esbanjar\",\n \"esbelto\",\n \"escama\",\n \"escola\",\n \"escrita\",\n \"escuta\",\n \"esfinge\",\n \"esfolar\",\n \"esfregar\",\n \"esfumado\",\n \"esgrima\",\n \"esmalte\",\n \"espanto\",\n \"espelho\",\n \"espiga\",\n \"esponja\",\n \"espreita\",\n \"espumar\",\n \"esquerda\",\n \"estaca\",\n \"esteira\",\n \"esticar\",\n \"estofado\",\n \"estrela\",\n \"estudo\",\n \"esvaziar\",\n \"etanol\",\n \"etiqueta\",\n \"euforia\",\n \"europeu\",\n \"evacuar\",\n \"evaporar\",\n \"evasivo\",\n \"eventual\",\n \"evidente\",\n \"evoluir\",\n \"exagero\",\n \"exalar\",\n \"examinar\",\n \"exato\",\n \"exausto\",\n \"excesso\",\n \"excitar\",\n \"exclamar\",\n \"executar\",\n \"exemplo\",\n \"exibir\",\n \"exigente\",\n \"exonerar\",\n \"expandir\",\n \"expelir\",\n \"expirar\",\n \"explanar\",\n \"exposto\",\n \"expresso\",\n \"expulsar\",\n \"externo\",\n \"extinto\",\n \"extrato\",\n \"fabricar\",\n \"fabuloso\",\n \"faceta\",\n \"facial\",\n \"fada\",\n \"fadiga\",\n \"faixa\",\n \"falar\",\n \"falta\",\n \"familiar\",\n \"fandango\",\n \"fanfarra\",\n \"fantoche\",\n \"fardado\",\n \"farelo\",\n \"farinha\",\n \"farofa\",\n \"farpa\",\n \"fartura\",\n \"fatia\",\n \"fator\",\n \"favorita\",\n \"faxina\",\n \"fazenda\",\n \"fechado\",\n \"feijoada\",\n \"feirante\",\n \"felino\",\n \"feminino\",\n \"fenda\",\n \"feno\",\n \"fera\",\n \"feriado\",\n \"ferrugem\",\n \"ferver\",\n \"festejar\",\n \"fetal\",\n \"feudal\",\n \"fiapo\",\n \"fibrose\",\n \"ficar\",\n \"ficheiro\",\n \"figurado\",\n \"fileira\",\n \"filho\",\n \"filme\",\n \"filtrar\",\n \"firmeza\",\n \"fisgada\",\n \"fissura\",\n \"fita\",\n \"fivela\",\n \"fixador\",\n \"fixo\",\n \"flacidez\",\n \"flamingo\",\n \"flanela\",\n \"flechada\",\n \"flora\",\n \"flutuar\",\n \"fluxo\",\n \"focal\",\n \"focinho\",\n \"fofocar\",\n \"fogo\",\n \"foguete\",\n \"foice\",\n \"folgado\",\n \"folheto\",\n \"forjar\",\n \"formiga\",\n \"forno\",\n \"forte\",\n \"fosco\",\n \"fossa\",\n \"fragata\",\n \"fralda\",\n \"frango\",\n \"frasco\",\n \"fraterno\",\n \"freira\",\n \"frente\",\n \"fretar\",\n \"frieza\",\n \"friso\",\n \"fritura\",\n \"fronha\",\n \"frustrar\",\n \"fruteira\",\n \"fugir\",\n \"fulano\",\n \"fuligem\",\n \"fundar\",\n \"fungo\",\n \"funil\",\n \"furador\",\n \"furioso\",\n \"futebol\",\n \"gabarito\",\n \"gabinete\",\n \"gado\",\n \"gaiato\",\n \"gaiola\",\n \"gaivota\",\n \"galega\",\n \"galho\",\n \"galinha\",\n \"galocha\",\n \"ganhar\",\n \"garagem\",\n \"garfo\",\n \"gargalo\",\n \"garimpo\",\n \"garoupa\",\n \"garrafa\",\n \"gasoduto\",\n \"gasto\",\n \"gata\",\n \"gatilho\",\n \"gaveta\",\n \"gazela\",\n \"gelado\",\n \"geleia\",\n \"gelo\",\n \"gemada\",\n \"gemer\",\n \"gemido\",\n \"generoso\",\n \"gengiva\",\n \"genial\",\n \"genoma\",\n \"genro\",\n \"geologia\",\n \"gerador\",\n \"germinar\",\n \"gesso\",\n \"gestor\",\n \"ginasta\",\n \"gincana\",\n \"gingado\",\n \"girafa\",\n \"girino\",\n \"glacial\",\n \"glicose\",\n \"global\",\n \"glorioso\",\n \"goela\",\n \"goiaba\",\n \"golfe\",\n \"golpear\",\n \"gordura\",\n \"gorjeta\",\n \"gorro\",\n \"gostoso\",\n \"goteira\",\n \"governar\",\n \"gracejo\",\n \"gradual\",\n \"grafite\",\n \"gralha\",\n \"grampo\",\n \"granada\",\n \"gratuito\",\n \"graveto\",\n \"graxa\",\n \"grego\",\n \"grelhar\",\n \"greve\",\n \"grilo\",\n \"grisalho\",\n \"gritaria\",\n \"grosso\",\n \"grotesco\",\n \"grudado\",\n \"grunhido\",\n \"gruta\",\n \"guache\",\n \"guarani\",\n \"guaxinim\",\n \"guerrear\",\n \"guiar\",\n \"guincho\",\n \"guisado\",\n \"gula\",\n \"guloso\",\n \"guru\",\n \"habitar\",\n \"harmonia\",\n \"haste\",\n \"haver\",\n \"hectare\",\n \"herdar\",\n \"heresia\",\n \"hesitar\",\n \"hiato\",\n \"hibernar\",\n \"hidratar\",\n \"hiena\",\n \"hino\",\n \"hipismo\",\n \"hipnose\",\n \"hipoteca\",\n \"hoje\",\n \"holofote\",\n \"homem\",\n \"honesto\",\n \"honrado\",\n \"hormonal\",\n \"hospedar\",\n \"humorado\",\n \"iate\",\n \"ideia\",\n \"idoso\",\n \"ignorado\",\n \"igreja\",\n \"iguana\",\n \"ileso\",\n \"ilha\",\n \"iludido\",\n \"iluminar\",\n \"ilustrar\",\n \"imagem\",\n \"imediato\",\n \"imenso\",\n \"imersivo\",\n \"iminente\",\n \"imitador\",\n \"imortal\",\n \"impacto\",\n \"impedir\",\n \"implante\",\n \"impor\",\n \"imprensa\",\n \"impune\",\n \"imunizar\",\n \"inalador\",\n \"inapto\",\n \"inativo\",\n \"incenso\",\n \"inchar\",\n \"incidir\",\n \"incluir\",\n \"incolor\",\n \"indeciso\",\n \"indireto\",\n \"indutor\",\n \"ineficaz\",\n \"inerente\",\n \"infantil\",\n \"infestar\",\n \"infinito\",\n \"inflamar\",\n \"informal\",\n \"infrator\",\n \"ingerir\",\n \"inibido\",\n \"inicial\",\n \"inimigo\",\n \"injetar\",\n \"inocente\",\n \"inodoro\",\n \"inovador\",\n \"inox\",\n \"inquieto\",\n \"inscrito\",\n \"inseto\",\n \"insistir\",\n \"inspetor\",\n \"instalar\",\n \"insulto\",\n \"intacto\",\n \"integral\",\n \"intimar\",\n \"intocado\",\n \"intriga\",\n \"invasor\",\n \"inverno\",\n \"invicto\",\n \"invocar\",\n \"iogurte\",\n \"iraniano\",\n \"ironizar\",\n \"irreal\",\n \"irritado\",\n \"isca\",\n \"isento\",\n \"isolado\",\n \"isqueiro\",\n \"italiano\",\n \"janeiro\",\n \"jangada\",\n \"janta\",\n \"jararaca\",\n \"jardim\",\n \"jarro\",\n \"jasmim\",\n \"jato\",\n \"javali\",\n \"jazida\",\n \"jejum\",\n \"joaninha\",\n \"joelhada\",\n \"jogador\",\n \"joia\",\n \"jornal\",\n \"jorrar\",\n \"jovem\",\n \"juba\",\n \"judeu\",\n \"judoca\",\n \"juiz\",\n \"julgador\",\n \"julho\",\n \"jurado\",\n \"jurista\",\n \"juro\",\n \"justa\",\n \"labareda\",\n \"laboral\",\n \"lacre\",\n \"lactante\",\n \"ladrilho\",\n \"lagarta\",\n \"lagoa\",\n \"laje\",\n \"lamber\",\n \"lamentar\",\n \"laminar\",\n \"lampejo\",\n \"lanche\",\n \"lapidar\",\n \"lapso\",\n \"laranja\",\n \"lareira\",\n \"largura\",\n \"lasanha\",\n \"lastro\",\n \"lateral\",\n \"latido\",\n \"lavanda\",\n \"lavoura\",\n \"lavrador\",\n \"laxante\",\n \"lazer\",\n \"lealdade\",\n \"lebre\",\n \"legado\",\n \"legendar\",\n \"legista\",\n \"leigo\",\n \"leiloar\",\n \"leitura\",\n \"lembrete\",\n \"leme\",\n \"lenhador\",\n \"lentilha\",\n \"leoa\",\n \"lesma\",\n \"leste\",\n \"letivo\",\n \"letreiro\",\n \"levar\",\n \"leveza\",\n \"levitar\",\n \"liberal\",\n \"libido\",\n \"liderar\",\n \"ligar\",\n \"ligeiro\",\n \"limitar\",\n \"limoeiro\",\n \"limpador\",\n \"linda\",\n \"linear\",\n \"linhagem\",\n \"liquidez\",\n \"listagem\",\n \"lisura\",\n \"litoral\",\n \"livro\",\n \"lixa\",\n \"lixeira\",\n \"locador\",\n \"locutor\",\n \"lojista\",\n \"lombo\",\n \"lona\",\n \"longe\",\n \"lontra\",\n \"lorde\",\n \"lotado\",\n \"loteria\",\n \"loucura\",\n \"lousa\",\n \"louvar\",\n \"luar\",\n \"lucidez\",\n \"lucro\",\n \"luneta\",\n \"lustre\",\n \"lutador\",\n \"luva\",\n \"macaco\",\n \"macete\",\n \"machado\",\n \"macio\",\n \"madeira\",\n \"madrinha\",\n \"magnata\",\n \"magreza\",\n \"maior\",\n \"mais\",\n \"malandro\",\n \"malha\",\n \"malote\",\n \"maluco\",\n \"mamilo\",\n \"mamoeiro\",\n \"mamute\",\n \"manada\",\n \"mancha\",\n \"mandato\",\n \"manequim\",\n \"manhoso\",\n \"manivela\",\n \"manobrar\",\n \"mansa\",\n \"manter\",\n \"manusear\",\n \"mapeado\",\n \"maquinar\",\n \"marcador\",\n \"maresia\",\n \"marfim\",\n \"margem\",\n \"marinho\",\n \"marmita\",\n \"maroto\",\n \"marquise\",\n \"marreco\",\n \"martelo\",\n \"marujo\",\n \"mascote\",\n \"masmorra\",\n \"massagem\",\n \"mastigar\",\n \"matagal\",\n \"materno\",\n \"matinal\",\n \"matutar\",\n \"maxilar\",\n \"medalha\",\n \"medida\",\n \"medusa\",\n \"megafone\",\n \"meiga\",\n \"melancia\",\n \"melhor\",\n \"membro\",\n \"memorial\",\n \"menino\",\n \"menos\",\n \"mensagem\",\n \"mental\",\n \"merecer\",\n \"mergulho\",\n \"mesada\",\n \"mesclar\",\n \"mesmo\",\n \"mesquita\",\n \"mestre\",\n \"metade\",\n \"meteoro\",\n \"metragem\",\n \"mexer\",\n \"mexicano\",\n \"micro\",\n \"migalha\",\n \"migrar\",\n \"milagre\",\n \"milenar\",\n \"milhar\",\n \"mimado\",\n \"minerar\",\n \"minhoca\",\n \"ministro\",\n \"minoria\",\n \"miolo\",\n \"mirante\",\n \"mirtilo\",\n \"misturar\",\n \"mocidade\",\n \"moderno\",\n \"modular\",\n \"moeda\",\n \"moer\",\n \"moinho\",\n \"moita\",\n \"moldura\",\n \"moleza\",\n \"molho\",\n \"molinete\",\n \"molusco\",\n \"montanha\",\n \"moqueca\",\n \"morango\",\n \"morcego\",\n \"mordomo\",\n \"morena\",\n \"mosaico\",\n \"mosquete\",\n \"mostarda\",\n \"motel\",\n \"motim\",\n \"moto\",\n \"motriz\",\n \"muda\",\n \"muito\",\n \"mulata\",\n \"mulher\",\n \"multar\",\n \"mundial\",\n \"munido\",\n \"muralha\",\n \"murcho\",\n \"muscular\",\n \"museu\",\n \"musical\",\n \"nacional\",\n \"nadador\",\n \"naja\",\n \"namoro\",\n \"narina\",\n \"narrado\",\n \"nascer\",\n \"nativa\",\n \"natureza\",\n \"navalha\",\n \"navegar\",\n \"navio\",\n \"neblina\",\n \"nebuloso\",\n \"negativa\",\n \"negociar\",\n \"negrito\",\n \"nervoso\",\n \"neta\",\n \"neural\",\n \"nevasca\",\n \"nevoeiro\",\n \"ninar\",\n \"ninho\",\n \"nitidez\",\n \"nivelar\",\n \"nobreza\",\n \"noite\",\n \"noiva\",\n \"nomear\",\n \"nominal\",\n \"nordeste\",\n \"nortear\",\n \"notar\",\n \"noticiar\",\n \"noturno\",\n \"novelo\",\n \"novilho\",\n \"novo\",\n \"nublado\",\n \"nudez\",\n \"numeral\",\n \"nupcial\",\n \"nutrir\",\n \"nuvem\",\n \"obcecado\",\n \"obedecer\",\n \"objetivo\",\n \"obrigado\",\n \"obscuro\",\n \"obstetra\",\n \"obter\",\n \"obturar\",\n \"ocidente\",\n \"ocioso\",\n \"ocorrer\",\n \"oculista\",\n \"ocupado\",\n \"ofegante\",\n \"ofensiva\",\n \"oferenda\",\n \"oficina\",\n \"ofuscado\",\n \"ogiva\",\n \"olaria\",\n \"oleoso\",\n \"olhar\",\n \"oliveira\",\n \"ombro\",\n \"omelete\",\n \"omisso\",\n \"omitir\",\n \"ondulado\",\n \"oneroso\",\n \"ontem\",\n \"opcional\",\n \"operador\",\n \"oponente\",\n \"oportuno\",\n \"oposto\",\n \"orar\",\n \"orbitar\",\n \"ordem\",\n \"ordinal\",\n \"orfanato\",\n \"orgasmo\",\n \"orgulho\",\n \"oriental\",\n \"origem\",\n \"oriundo\",\n \"orla\",\n \"ortodoxo\",\n \"orvalho\",\n \"oscilar\",\n \"ossada\",\n \"osso\",\n \"ostentar\",\n \"otimismo\",\n \"ousadia\",\n \"outono\",\n \"outubro\",\n \"ouvido\",\n \"ovelha\",\n \"ovular\",\n \"oxidar\",\n \"oxigenar\",\n \"pacato\",\n \"paciente\",\n \"pacote\",\n \"pactuar\",\n \"padaria\",\n \"padrinho\",\n \"pagar\",\n \"pagode\",\n \"painel\",\n \"pairar\",\n \"paisagem\",\n \"palavra\",\n \"palestra\",\n \"palheta\",\n \"palito\",\n \"palmada\",\n \"palpitar\",\n \"pancada\",\n \"panela\",\n \"panfleto\",\n \"panqueca\",\n \"pantanal\",\n \"papagaio\",\n \"papelada\",\n \"papiro\",\n \"parafina\",\n \"parcial\",\n \"pardal\",\n \"parede\",\n \"partida\",\n \"pasmo\",\n \"passado\",\n \"pastel\",\n \"patamar\",\n \"patente\",\n \"patinar\",\n \"patrono\",\n \"paulada\",\n \"pausar\",\n \"peculiar\",\n \"pedalar\",\n \"pedestre\",\n \"pediatra\",\n \"pedra\",\n \"pegada\",\n \"peitoral\",\n \"peixe\",\n \"pele\",\n \"pelicano\",\n \"penca\",\n \"pendurar\",\n \"peneira\",\n \"penhasco\",\n \"pensador\",\n \"pente\",\n \"perceber\",\n \"perfeito\",\n \"pergunta\",\n \"perito\",\n \"permitir\",\n \"perna\",\n \"perplexo\",\n \"persiana\",\n \"pertence\",\n \"peruca\",\n \"pescado\",\n \"pesquisa\",\n \"pessoa\",\n \"petiscar\",\n \"piada\",\n \"picado\",\n \"piedade\",\n \"pigmento\",\n \"pilastra\",\n \"pilhado\",\n \"pilotar\",\n \"pimenta\",\n \"pincel\",\n \"pinguim\",\n \"pinha\",\n \"pinote\",\n \"pintar\",\n \"pioneiro\",\n \"pipoca\",\n \"piquete\",\n \"piranha\",\n \"pires\",\n \"pirueta\",\n \"piscar\",\n \"pistola\",\n \"pitanga\",\n \"pivete\",\n \"planta\",\n \"plaqueta\",\n \"platina\",\n \"plebeu\",\n \"plumagem\",\n \"pluvial\",\n \"pneu\",\n \"poda\",\n \"poeira\",\n \"poetisa\",\n \"polegada\",\n \"policiar\",\n \"poluente\",\n \"polvilho\",\n \"pomar\",\n \"pomba\",\n \"ponderar\",\n \"pontaria\",\n \"populoso\",\n \"porta\",\n \"possuir\",\n \"postal\",\n \"pote\",\n \"poupar\",\n \"pouso\",\n \"povoar\",\n \"praia\",\n \"prancha\",\n \"prato\",\n \"praxe\",\n \"prece\",\n \"predador\",\n \"prefeito\",\n \"premiar\",\n \"prensar\",\n \"preparar\",\n \"presilha\",\n \"pretexto\",\n \"prevenir\",\n \"prezar\",\n \"primata\",\n \"princesa\",\n \"prisma\",\n \"privado\",\n \"processo\",\n \"produto\",\n \"profeta\",\n \"proibido\",\n \"projeto\",\n \"prometer\",\n \"propagar\",\n \"prosa\",\n \"protetor\",\n \"provador\",\n \"publicar\",\n \"pudim\",\n \"pular\",\n \"pulmonar\",\n \"pulseira\",\n \"punhal\",\n \"punir\",\n \"pupilo\",\n \"pureza\",\n \"puxador\",\n \"quadra\",\n \"quantia\",\n \"quarto\",\n \"quase\",\n \"quebrar\",\n \"queda\",\n \"queijo\",\n \"quente\",\n \"querido\",\n \"quimono\",\n \"quina\",\n \"quiosque\",\n \"rabanada\",\n \"rabisco\",\n \"rachar\",\n \"racionar\",\n \"radial\",\n \"raiar\",\n \"rainha\",\n \"raio\",\n \"raiva\",\n \"rajada\",\n \"ralado\",\n \"ramal\",\n \"ranger\",\n \"ranhura\",\n \"rapadura\",\n \"rapel\",\n \"rapidez\",\n \"raposa\",\n \"raquete\",\n \"raridade\",\n \"rasante\",\n \"rascunho\",\n \"rasgar\",\n \"raspador\",\n \"rasteira\",\n \"rasurar\",\n \"ratazana\",\n \"ratoeira\",\n \"realeza\",\n \"reanimar\",\n \"reaver\",\n \"rebaixar\",\n \"rebelde\",\n \"rebolar\",\n \"recado\",\n \"recente\",\n \"recheio\",\n \"recibo\",\n \"recordar\",\n \"recrutar\",\n \"recuar\",\n \"rede\",\n \"redimir\",\n \"redonda\",\n \"reduzida\",\n \"reenvio\",\n \"refinar\",\n \"refletir\",\n \"refogar\",\n \"refresco\",\n \"refugiar\",\n \"regalia\",\n \"regime\",\n \"regra\",\n \"reinado\",\n \"reitor\",\n \"rejeitar\",\n \"relativo\",\n \"remador\",\n \"remendo\",\n \"remorso\",\n \"renovado\",\n \"reparo\",\n \"repelir\",\n \"repleto\",\n \"repolho\",\n \"represa\",\n \"repudiar\",\n \"requerer\",\n \"resenha\",\n \"resfriar\",\n \"resgatar\",\n \"residir\",\n \"resolver\",\n \"respeito\",\n \"ressaca\",\n \"restante\",\n \"resumir\",\n \"retalho\",\n \"reter\",\n \"retirar\",\n \"retomada\",\n \"retratar\",\n \"revelar\",\n \"revisor\",\n \"revolta\",\n \"riacho\",\n \"rica\",\n \"rigidez\",\n \"rigoroso\",\n \"rimar\",\n \"ringue\",\n \"risada\",\n \"risco\",\n \"risonho\",\n \"robalo\",\n \"rochedo\",\n \"rodada\",\n \"rodeio\",\n \"rodovia\",\n \"roedor\",\n \"roleta\",\n \"romano\",\n \"roncar\",\n \"rosado\",\n \"roseira\",\n \"rosto\",\n \"rota\",\n \"roteiro\",\n \"rotina\",\n \"rotular\",\n \"rouco\",\n \"roupa\",\n \"roxo\",\n \"rubro\",\n \"rugido\",\n \"rugoso\",\n \"ruivo\",\n \"rumo\",\n \"rupestre\",\n \"russo\",\n \"sabor\",\n \"saciar\",\n \"sacola\",\n \"sacudir\",\n \"sadio\",\n \"safira\",\n \"saga\",\n \"sagrada\",\n \"saibro\",\n \"salada\",\n \"saleiro\",\n \"salgado\",\n \"saliva\",\n \"salpicar\",\n \"salsicha\",\n \"saltar\",\n \"salvador\",\n \"sambar\",\n \"samurai\",\n \"sanar\",\n \"sanfona\",\n \"sangue\",\n \"sanidade\",\n \"sapato\",\n \"sarda\",\n \"sargento\",\n \"sarjeta\",\n \"saturar\",\n \"saudade\",\n \"saxofone\",\n \"sazonal\",\n \"secar\",\n \"secular\",\n \"seda\",\n \"sedento\",\n \"sediado\",\n \"sedoso\",\n \"sedutor\",\n \"segmento\",\n \"segredo\",\n \"segundo\",\n \"seiva\",\n \"seleto\",\n \"selvagem\",\n \"semanal\",\n \"semente\",\n \"senador\",\n \"senhor\",\n \"sensual\",\n \"sentado\",\n \"separado\",\n \"sereia\",\n \"seringa\",\n \"serra\",\n \"servo\",\n \"setembro\",\n \"setor\",\n \"sigilo\",\n \"silhueta\",\n \"silicone\",\n \"simetria\",\n \"simpatia\",\n \"simular\",\n \"sinal\",\n \"sincero\",\n \"singular\",\n \"sinopse\",\n \"sintonia\",\n \"sirene\",\n \"siri\",\n \"situado\",\n \"soberano\",\n \"sobra\",\n \"socorro\",\n \"sogro\",\n \"soja\",\n \"solda\",\n \"soletrar\",\n \"solteiro\",\n \"sombrio\",\n \"sonata\",\n \"sondar\",\n \"sonegar\",\n \"sonhador\",\n \"sono\",\n \"soprano\",\n \"soquete\",\n \"sorrir\",\n \"sorteio\",\n \"sossego\",\n \"sotaque\",\n \"soterrar\",\n \"sovado\",\n \"sozinho\",\n \"suavizar\",\n \"subida\",\n \"submerso\",\n \"subsolo\",\n \"subtrair\",\n \"sucata\",\n \"sucesso\",\n \"suco\",\n \"sudeste\",\n \"sufixo\",\n \"sugador\",\n \"sugerir\",\n \"sujeito\",\n \"sulfato\",\n \"sumir\",\n \"suor\",\n \"superior\",\n \"suplicar\",\n \"suposto\",\n \"suprimir\",\n \"surdina\",\n \"surfista\",\n \"surpresa\",\n \"surreal\",\n \"surtir\",\n \"suspiro\",\n \"sustento\",\n \"tabela\",\n \"tablete\",\n \"tabuada\",\n \"tacho\",\n \"tagarela\",\n \"talher\",\n \"talo\",\n \"talvez\",\n \"tamanho\",\n \"tamborim\",\n \"tampa\",\n \"tangente\",\n \"tanto\",\n \"tapar\",\n \"tapioca\",\n \"tardio\",\n \"tarefa\",\n \"tarja\",\n \"tarraxa\",\n \"tatuagem\",\n \"taurino\",\n \"taxativo\",\n \"taxista\",\n \"teatral\",\n \"tecer\",\n \"tecido\",\n \"teclado\",\n \"tedioso\",\n \"teia\",\n \"teimar\",\n \"telefone\",\n \"telhado\",\n \"tempero\",\n \"tenente\",\n \"tensor\",\n \"tentar\",\n \"termal\",\n \"terno\",\n \"terreno\",\n \"tese\",\n \"tesoura\",\n \"testado\",\n \"teto\",\n \"textura\",\n \"texugo\",\n \"tiara\",\n \"tigela\",\n \"tijolo\",\n \"timbrar\",\n \"timidez\",\n \"tingido\",\n \"tinteiro\",\n \"tiragem\",\n \"titular\",\n \"toalha\",\n \"tocha\",\n \"tolerar\",\n \"tolice\",\n \"tomada\",\n \"tomilho\",\n \"tonel\",\n \"tontura\",\n \"topete\",\n \"tora\",\n \"torcido\",\n \"torneio\",\n \"torque\",\n \"torrada\",\n \"torto\",\n \"tostar\",\n \"touca\",\n \"toupeira\",\n \"toxina\",\n \"trabalho\",\n \"tracejar\",\n \"tradutor\",\n \"trafegar\",\n \"trajeto\",\n \"trama\",\n \"trancar\",\n \"trapo\",\n \"traseiro\",\n \"tratador\",\n \"travar\",\n \"treino\",\n \"tremer\",\n \"trepidar\",\n \"trevo\",\n \"triagem\",\n \"tribo\",\n \"triciclo\",\n \"tridente\",\n \"trilogia\",\n \"trindade\",\n \"triplo\",\n \"triturar\",\n \"triunfal\",\n \"trocar\",\n \"trombeta\",\n \"trova\",\n \"trunfo\",\n \"truque\",\n \"tubular\",\n \"tucano\",\n \"tudo\",\n \"tulipa\",\n \"tupi\",\n \"turbo\",\n \"turma\",\n \"turquesa\",\n \"tutelar\",\n \"tutorial\",\n \"uivar\",\n \"umbigo\",\n \"unha\",\n \"unidade\",\n \"uniforme\",\n \"urologia\",\n \"urso\",\n \"urtiga\",\n \"urubu\",\n \"usado\",\n \"usina\",\n \"usufruir\",\n \"vacina\",\n \"vadiar\",\n \"vagaroso\",\n \"vaidoso\",\n \"vala\",\n \"valente\",\n \"validade\",\n \"valores\",\n \"vantagem\",\n \"vaqueiro\",\n \"varanda\",\n \"vareta\",\n \"varrer\",\n \"vascular\",\n \"vasilha\",\n \"vassoura\",\n \"vazar\",\n \"vazio\",\n \"veado\",\n \"vedar\",\n \"vegetar\",\n \"veicular\",\n \"veleiro\",\n \"velhice\",\n \"veludo\",\n \"vencedor\",\n \"vendaval\",\n \"venerar\",\n \"ventre\",\n \"verbal\",\n \"verdade\",\n \"vereador\",\n \"vergonha\",\n \"vermelho\",\n \"verniz\",\n \"versar\",\n \"vertente\",\n \"vespa\",\n \"vestido\",\n \"vetorial\",\n \"viaduto\",\n \"viagem\",\n \"viajar\",\n \"viatura\",\n \"vibrador\",\n \"videira\",\n \"vidraria\",\n \"viela\",\n \"viga\",\n \"vigente\",\n \"vigiar\",\n \"vigorar\",\n \"vilarejo\",\n \"vinco\",\n \"vinheta\",\n \"vinil\",\n \"violeta\",\n \"virada\",\n \"virtude\",\n \"visitar\",\n \"visto\",\n \"vitral\",\n \"viveiro\",\n \"vizinho\",\n \"voador\",\n \"voar\",\n \"vogal\",\n \"volante\",\n \"voleibol\",\n \"voltagem\",\n \"volumoso\",\n \"vontade\",\n \"vulto\",\n \"vuvuzela\",\n \"xadrez\",\n \"xarope\",\n \"xeque\",\n \"xeretar\",\n \"xerife\",\n \"xingar\",\n \"zangado\",\n \"zarpar\",\n \"zebu\",\n \"zelador\",\n \"zombar\",\n \"zoologia\",\n \"zumbido\"\n]\n\n},{}]},{},[50])(50)\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 var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'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};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","'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};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// 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};","// 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});","// 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 _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'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}","// 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}","// 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};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceDerive = exports.pathRegex = void 0;\nexports.pathRegex = new RegExp(\"^m(\\\\/[0-9]+')+$\");\nexports.replaceDerive = (val) => val.replace(\"'\", '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.derivePath = exports.isValidPath = exports.getPublicKey = exports.getMasterKeyFromSeed = void 0;\nconst createHmac = require(\"create-hmac\");\nconst nacl = require(\"tweetnacl\");\nconst utils_1 = require(\"./utils\");\nconst ED25519_CURVE = 'ed25519 seed';\nconst HARDENED_OFFSET = 0x80000000;\nexports.getMasterKeyFromSeed = (seed) => {\n const hmac = createHmac('sha512', ED25519_CURVE);\n const I = hmac.update(Buffer.from(seed, 'hex')).digest();\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n key: IL,\n chainCode: IR,\n };\n};\nconst CKDPriv = ({ key, chainCode }, index) => {\n const indexBuffer = Buffer.allocUnsafe(4);\n indexBuffer.writeUInt32BE(index, 0);\n const data = Buffer.concat([Buffer.alloc(1, 0), key, indexBuffer]);\n const I = createHmac('sha512', chainCode)\n .update(data)\n .digest();\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n key: IL,\n chainCode: IR,\n };\n};\nexports.getPublicKey = (privateKey, withZeroByte = true) => {\n const keyPair = nacl.sign.keyPair.fromSeed(privateKey);\n const signPk = keyPair.secretKey.subarray(32);\n const zero = Buffer.alloc(1, 0);\n return withZeroByte ?\n Buffer.concat([zero, Buffer.from(signPk)]) :\n Buffer.from(signPk);\n};\nexports.isValidPath = (path) => {\n if (!utils_1.pathRegex.test(path)) {\n return false;\n }\n return !path\n .split('/')\n .slice(1)\n .map(utils_1.replaceDerive)\n .some(isNaN);\n};\nexports.derivePath = (path, seed, offset = HARDENED_OFFSET) => {\n if (!exports.isValidPath(path)) {\n throw new Error('Invalid derivation path');\n }\n const { key, chainCode } = exports.getMasterKeyFromSeed(seed);\n const segments = path\n .split('/')\n .slice(1)\n .map(utils_1.replaceDerive)\n .map(el => parseInt(el, 10));\n return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode });\n};\n","import * as helpers from \"./helpers\";\nimport nacl from \"tweetnacl\";\nimport * as bip39 from \"bip39\";\nimport bip32 from \"ed25519-hd-key\";\n\n/**\n * Create a wallet object for signing and verifying messages\n *\n * @param {Object} [args={}] Args Object\n * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from\n * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users\n * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages\n * @return {Object} Wallet Object with sign and verify methods\n */\nexport let create_wallet = (args = {}) => {\n let { sk = undefined, keepPrivate = false, seed = null } = args;\n\n let vk;\n\n if (sk) {\n vk = get_vk(sk);\n } else {\n let keyPair = new_wallet(seed);\n vk = keyPair.vk;\n sk = keyPair.sk;\n }\n\n const wallet = () => {\n return {\n sign: (msg) => sign(sk, msg),\n verify: (msg, sig) => verify(vk, msg, sig),\n vk,\n sk: !keepPrivate ? sk : undefined,\n };\n };\n\n return wallet();\n};\n\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function generate_keys(seed = null) {\n var kp = null;\n if (seed == null) {\n kp = nacl.sign.keyPair();\n } else {\n kp = nacl.sign.keyPair.fromSeed(seed);\n }\n // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey\n // and the vk is the last 32 bytes of the secretKey as well as the publicKey\n // {\n // 'publicKey': ,\n // 'secretKey': \n // }\n return {\n sk: new Uint8Array(kp[\"secretKey\"].slice(0, 32)),\n vk: new Uint8Array(kp[\"secretKey\"].slice(32, 64)),\n };\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return String vk\n * vk: A 64 character long hex representation of a verify key (public key)\n */\nexport function get_vk(sk) {\n var kp = format_to_keys(sk);\n var kpf = keys_to_format(kp);\n return kpf.vk;\n}\n/**\n * @param String sk\n * sk: A 64 character long hex representation of a signing key (private key)\n *\n * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk }\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n */\nexport function format_to_keys(sk) {\n var skf = helpers.hex2buf(sk);\n var kp = generate_keys(skf);\n return kp;\n}\n/**\n * @param Object kp\n * kp: Object containing the properties sk and vk\n * sk: Signing Key (SK) represents 32 byte signing key\n * vk: Verify Key (VK) represents a 32 byte verify key\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function keys_to_format(kp) {\n return {\n vk: helpers.buf2hex(kp.vk),\n sk: helpers.buf2hex(kp.sk),\n };\n}\n/**\n * @param Uint8Array(length: 32) seed\n * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be\n * avoided by everyday users\n *\n * @return {string, string} { sk, vk }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n */\nexport function new_wallet(seed = null) {\n const keys = generate_keys(seed);\n return keys_to_format(keys);\n}\n\n/**\n *\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}}\n * derivationIndex: bip32 derivation key index\n * vk: Verify Key (VK) represented as a 64 character hex string\n * sk: Signing Key (SK) represented as a 64 character hex string\n * mnemonic: 24 word seed phrase\n\n */\nfunction generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) {\n let finalMnemonic;\n\n if (mnemonic !== undefined) {\n finalMnemonic = mnemonic;\n } else {\n finalMnemonic = bip39.generateMnemonic(256);\n }\n\n const seed = bip39.mnemonicToSeedSync(finalMnemonic).toString(\"hex\");\n\n const derivationPath = \"m/44'/789'/\" + derivationIndex + \"'/0'/0'\";\n const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000);\n\n const privateKey = key.toString(\"hex\");\n const publicKey = bip32.getPublicKey(key, false).toString(\"hex\");\n\n if (publicKey !== get_vk(privateKey)) {\n throw Error(\"Bip32 public key does not match with Lamden public key!\");\n }\n\n return {\n sk: privateKey,\n vk: publicKey,\n derivationIndex: derivationIndex,\n mnemonic: finalMnemonic,\n };\n}\n\n/**\n * @param mnemonic 24 word seed phrase\n * @param derivationIndex bip32 derivation key index\n *\n * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic }\n * sk: Signing Key (SK) represented as a 64 character hex string\n * vk: Verify Key (VK) represented as a 64 character hex string\n * derivationIndex: Bip32 derivation index\n * mnemonic: 24 word seed phrase\n */\nexport function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) {\n return generate_keys_bip39(mnemonic, derivationIndex);\n}\n\n/**\n * @param String sk\n * @param Uint8Array msg\n * sk: A 64 character long hex representation of a signing key (private key)\n * msg: A Uint8Array of bytes representing the message you would like to sign\n *\n * @return String sig\n * sig: A 128 character long hex string representing the message's signature\n */\nexport function sign(sk, msg) {\n var kp = format_to_keys(sk);\n // This is required due to the secretKey required to sign a transaction\n // in the js implementation of NaCL being the combination of the sk and\n // vk for some stupid reason. That being said, we still want the sk and\n // vk objects to exist in 32-byte string format (same as cilantro's\n // python implementation) when presented to the user.\n var jsnacl_sk = helpers.concatUint8Arrays(kp.sk, kp.vk);\n return helpers.buf2hex(nacl.sign.detached(msg, jsnacl_sk));\n}\n/**\n * @param String vk\n * @param Uint8Array msg\n * @param String sig\n * vk: A 64 character long hex representation of a verify key (public key)\n * msg: A Uint8Array (bytes) representation of a message that has been signed\n * sig: A 128 character long hex representation of a nacl signature\n *\n * @return Bool result\n * result: true if verify checked out, false if not\n */\nexport function verify(vk, msg, sig) {\n var vkb = helpers.hex2buf(vk);\n var sigb = helpers.hex2buf(sig);\n try {\n return nacl.sign.detached.verify(msg, sigb, vkb);\n } catch (_a) {\n return false;\n }\n}\n","export class EventEmitter {\n constructor() {\n this._events = {};\n }\n \n on(name, listener) {\n if (!this._events[name]) {\n this._events[name] = [];\n }\n\n this._events[name].push(listener);\n }\n \n removeListener(name, listenerToRemove) {\n if (!this._events[name]) {\n throw new Error(`Can't remove a listener. Event \"${name}\" doesn't exits.`);\n }\n\n const filterListeners = (listener) => listener !== listenerToRemove;\n this._events[name] = this._events[name].filter(filterListeners);\n }\n \n emit(name, data) {\n if (!this._events[name]) return\n \n const fireCallbacks = (callback) => {\n callback(data);\n };\n \n this._events[name].forEach(fireCallbacks);\n }\n }\n","\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar global = getGlobal();\n\nmodule.exports = exports = global.fetch;\n\n// Needed for TypeScript and Webpack.\nif (global.fetch) {\n\texports.default = global.fetch.bind(global);\n}\n\nexports.Headers = global.Headers;\nexports.Request = global.Request;\nexports.Response = global.Response;",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2019 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if only one character,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.$|[+-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","import BigNumber from \"bignumber.js\";\nBigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 });\nBigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent\n\nexport function Encoder(type, value) {\n const throwError = (val) => {\n throw new Error(`Error encoding ${val} to ${type}`);\n };\n const countDecimals = (n) => {\n if (Math.floor(n) === n) return 0;\n try {\n return n.toString().split(\".\")[1].length;\n } catch (e) {\n return 0;\n }\n };\n const isString = (val) => typeof val === \"string\" || val instanceof String;\n const isArray = (val) => val && typeof val === \"object\" && val.constructor === Array;\n const isObject = (val) => val && typeof val === \"object\" && val.constructor === Object;\n const isDate = (val) => val instanceof Date;\n const isBoolean = (val) => typeof val === \"boolean\";\n\n const isNumber = (val) => {\n if (isArray(val)) return false;\n return !isNaN(encodeBigNumber(val).toNumber());\n };\n\n const isInteger = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return true;\n return false;\n };\n const encodeInt = (val) => {\n if (!isNumber(val)) throwError(val);\n else return parseInt(val);\n };\n const isFloat = (val) => {\n if (!isNumber(val)) return false;\n if (countDecimals(val) === 0) return false;\n return true;\n };\n const encodeFloat = (val) => {\n if (!isNumber(val)) throwError(val);\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n };\n const encodeNumber = (val) => {\n if (!isNumber(val)) throwError(val);\n if (isFloat(val)) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return { __fixed__: val.toFixed(30).replace(/^0+(\\d)|(\\d)0+$/gm, \"$1$2\") };\n }\n if (isInteger(val)) return parseInt(val);\n };\n const encodeBigNumber = (val) => {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return val;\n };\n\n const encodeBool = (val) => {\n if (isBoolean(val)) return val;\n if (val === \"true\" || val === 1) return true;\n if (val === \"false\" || val === 0) return false;\n throwError(val);\n };\n const encodeStr = (val) => {\n if (isString(val)) return val;\n if (isDate(val)) return val.toISOString();\n return JSON.stringify(val);\n };\n const encodeDateTime = (val) => {\n val = !isDate(val) ? new Date(val) : val;\n if (!isDate(val)) throwError(val);\n return {\n __time__: [\n val.getUTCFullYear(),\n val.getUTCMonth(),\n val.getUTCDate(),\n val.getUTCHours(),\n val.getUTCMinutes(),\n val.getUTCSeconds(),\n val.getUTCMilliseconds(),\n ],\n };\n };\n const encodeTimeDelta = (val) => {\n const time = isDate(val) ? val.getTime() : new Date(val).getTime();\n const days = parseInt(time / 1000 / 60 / 60 / 24);\n const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000;\n return { __delta__: [days, seconds] };\n };\n\n const encodeList = (val) => {\n if (isArray(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isArray(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeDict = (val) => {\n if (isObject(val)) return parseObject(val);\n try {\n val = JSON.parse(val);\n } catch (e) {\n throwError(val);\n }\n if (isObject(val)) return parseObject(val);\n throwError(val);\n };\n\n const encodeObject = (val) => {\n try {\n return encodeList(val);\n } catch (e) {\n return encodeDict(val);\n }\n };\n\n function parseObject(obj) {\n const encode = (k, v) => {\n if (k === \"datetime\" || k === \"datetime.datetime\") return Encoder(\"datetime.datetime\", v);\n if (k === \"timedelta\" || k === \"datetime.timedelta\") return Encoder(\"datetime.timedelta\", v);\n if (k !== \"__fixed__\" && isFloat(v)) return encodeFloat(v);\n return v;\n };\n\n const fixDatetime = (k, v) => {\n const isDatetimeObject = (val) => {\n let datetimeTypes = [\"datetime.datetime\", \"datetime\", \"datetime.timedelta\", \"timedelta\"];\n return (\n Object.keys(val).length === 1 &&\n datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0\n );\n };\n\n if (v.constructor === Array) {\n v.map((val) => {\n if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]];\n //if (isFloat(val)) return encodeFloat(val)\n return val;\n });\n }\n if (v.constructor === Object) {\n if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]];\n }\n\n //if (isFloat(v)) return encodeFloat(v)\n\n return v;\n };\n\n let encodeValues = JSON.stringify(obj, encode);\n return JSON.parse(encodeValues, fixDatetime);\n }\n\n const encoder = {\n str: encodeStr,\n string: encodeStr,\n float: encodeFloat,\n int: encodeInt,\n bool: encodeBool,\n boolean: encodeBool,\n dict: encodeDict,\n list: encodeList,\n Any: () => value,\n \"datetime.timedelta\": encodeTimeDelta,\n \"datetime.datetime\": encodeDateTime,\n timedelta: encodeTimeDelta,\n datetime: encodeDateTime,\n number: encodeNumber,\n object: encodeObject,\n bigNumber: encodeBigNumber,\n };\n\n if (Object.keys(encoder).includes(type)) return encoder[type](value);\n else throw new Error(`Error: ${type} is not a valid encoder type.`);\n}\n\nEncoder.BigNumber = BigNumber;\n\nexport default { Encoder };\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport fetch from \"node-fetch\";\nimport { Encoder } from \"./encoder\";\n\nexport class LamdenMasterNode_API {\n constructor(networkInfoObj) {\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n\n send(method, path, data, overrideURL, callback) {\n let parms = \"\";\n if (Object.keys(data).includes(\"parms\")) {\n parms = this.createParms(data.parms);\n }\n\n let options = {};\n if (method === \"POST\") {\n let headers = { \"Content-Type\": \"application/json\" };\n options.method = method;\n options.headers = headers;\n options.body = data;\n }\n\n return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options)\n .then(async (res) => {\n if (res.status === 200) {\n let json = await res.json();\n callback(json, undefined);\n return json;\n } else {\n let error = validateTypes.isStringWithValue(res.statusText) ? res.statusText : false;\n callback(undefined, error);\n return error;\n }\n })\n .catch((err) => {\n return callback(undefined, err.toString());\n });\n }\n\n createParms(parms) {\n if (Object.keys(parms).length === 0) return \"\";\n let parmString = \"?\";\n Object.keys(parms).forEach((key) => {\n parmString = `${parmString}${key}=${parms[key]}&`;\n });\n return parmString.slice(0, -1);\n }\n\n async getContractInfo(contractName) {\n const returnInfo = (res) => {\n try {\n if (res.name) return res;\n } catch (e) {}\n return null;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => returnInfo(res)).then((res) =>\n returnInfo(res)\n );\n }\n\n async getVariable(contract, variable, key = \"\") {\n let parms = {};\n if (validateTypes.isStringWithValue(key)) parms.key = key;\n\n let path = `/contracts/${contract}/${variable}/`;\n\n const returnValue = (res) => {\n try {\n if (res.value) return res.value;\n } catch (e) {}\n return null;\n };\n return this.send(\"GET\", path, { parms }, undefined, (res, err) => returnValue(res)).then(\n (res) => returnValue(res)\n );\n }\n\n async getContractMethods(contract) {\n const getMethods = (res) => {\n try {\n if (res.methods) return res.methods;\n } catch (e) {}\n return [];\n };\n let path = `/contracts/${contract}/methods`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getMethods(res)).then((res) =>\n getMethods(res)\n );\n }\n\n async getContractVariables(contract) {\n const getVariables = (res) => {\n try {\n if (res.variables) return res;\n } catch (e) {}\n return {};\n };\n let path = `/contracts/${contract}/variables`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => getVariables(res)).then((res) =>\n getVariables(res)\n );\n }\n\n async pingServer() {\n const getStatus = (res) => {\n try {\n if (res.status) return true;\n } catch (e) {}\n return false;\n };\n let response = await this.send(\"GET\", \"/ping\", {}, undefined, (res, err) => getStatus(res));\n return getStatus(response);\n }\n\n async getCurrencyBalance(vk) {\n let balanceRes = await this.getVariable(\"currency\", \"balances\", vk);\n if (!balanceRes) return Encoder(\"bigNumber\", 0);\n if (balanceRes.__fixed__) return Encoder(\"bigNumber\", balanceRes.__fixed__);\n return Encoder(\"bigNumber\", balanceRes.toString());\n }\n\n async contractExists(contractName) {\n const exists = (res) => {\n try {\n if (res.name) return true;\n } catch (e) {}\n return false;\n };\n let path = `/contracts/${contractName}`;\n return this.send(\"GET\", path, {}, undefined, (res, err) => exists(res)).then((res) =>\n exists(res)\n );\n }\n\n async sendTransaction(data, url = undefined, callback) {\n return this.send(\"POST\", \"/\", JSON.stringify(data), url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n\n async getNonce(sender, callback) {\n if (!validateTypes.isStringHex(sender)) return `${sender} is not a hex string.`;\n let path = `/nonce/${sender}`;\n let url = this.host;\n return this.send(\"GET\", path, {}, url, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, `Unable to get nonce for ${sender} on network ${url}`);\n return;\n }\n return `Unable to get nonce for ${sender} on network ${url}`;\n }\n res.masternode = url;\n if (callback) {\n callback(res, undefined);\n return;\n } else return res;\n });\n }\n\n checkTransaction(hash, callback) {\n const parms = { hash };\n return this.send(\"GET\", \"/tx\", { parms }, undefined, (res, err) => {\n if (err) {\n if (callback) {\n callback(undefined, err);\n return;\n } else return err;\n }\n if (callback) {\n callback(res, undefined);\n return;\n }\n return res;\n });\n }\n}\n","import { EventEmitter } from \"./eventEmitter\";\nimport validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport { LamdenMasterNode_API } from \"./masternode-api\";\n\nexport class Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // networkInfo: {\n // hosts: list of masternode hostname/ip urls,\n // type: \"testnet\", \"mainnet\" or \"custom\"\n // },\n constructor(networkInfoObj) {\n //Reject undefined or missing info\n if (!validateTypes.isObjectWithKeys(networkInfoObj))\n throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`);\n if (!validateTypes.isArrayWithValues(networkInfoObj.hosts))\n throw new Error(`HOSTS Required (Type: Array)`);\n\n this.type = validateTypes.isStringWithValue(networkInfoObj.type)\n ? networkInfoObj.type.toLowerCase()\n : \"custom\";\n this.events = new EventEmitter();\n this.hosts = this.validateHosts(networkInfoObj.hosts);\n this.currencySymbol = validateTypes.isStringWithValue(networkInfoObj.currencySymbol)\n ? networkInfoObj.currencySymbol\n : \"TAU\";\n this.name = validateTypes.isStringWithValue(networkInfoObj.name)\n ? networkInfoObj.name\n : \"lamden network\";\n this.lamden = validateTypes.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false;\n this.blockExplorer = validateTypes.isStringWithValue(networkInfoObj.blockExplorer)\n ? networkInfoObj.blockExplorer\n : undefined;\n\n this.online = false;\n try {\n this.API = new LamdenMasterNode_API(networkInfoObj);\n } catch (e) {\n throw new Error(e);\n }\n }\n //This will throw an error if the protocol wasn't included in the host string\n vaidateProtocol(host) {\n let protocols = [\"https://\", \"http://\"];\n if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host;\n throw new Error(\"Host String must include http:// or https://\");\n }\n validateHosts(hosts) {\n return hosts.map((host) => this.vaidateProtocol(host.toLowerCase()));\n }\n //Check if the network is online\n //Emits boolean as 'online' event\n //Also returns status as well as passes status to a callback\n async ping(callback = undefined) {\n this.online = await this.API.pingServer();\n this.events.emit(\"online\", this.online);\n if (validateTypes.isFunction(callback)) callback(this.online);\n return this.online;\n }\n get host() {\n return this.hosts[Math.floor(Math.random() * this.hosts.length)];\n }\n get url() {\n return this.host;\n }\n async getNetworkInfo() {\n await this.ping();\n return {\n name: this.name,\n lamden: this.lamden,\n type: this.type,\n hosts: this.hosts,\n url: this.url,\n online: this.online,\n };\n }\n}\n","import validators from \"types-validate-assert\";\nconst { validateTypes } = validators;\nimport * as wallet from \"./wallet\";\nimport { Network } from \"./network\";\n\nexport class TransactionBuilder extends Network {\n // Constructor needs an Object with the following information to build Class.\n //\n // arg[0] (networkInfo): { //Can also accpet a Lamden \"Network Class\"\n // host: masternode webserver hostname/ip,\n // type: \"testnet\", \"mainnet\" or \"mockchain\"\n // }\n // arg[1] (txInfo): {\n // uid: [Optional] unique ID for tracking purposes,\n // senderVk: public key of the transaction sender,\n // contractName: name of lamden smart contract,\n // methodName: name of method to call in contractName,\n // kwargs: key/values of args to pass to methodName\n // example: kwargs.to = \"270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e\"\n // kwargs.amount = 1000\n // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail.\n // nonce: [Optional] send() will attempt to retrieve this info automatically\n // processor [Optional] send() will attempt to retrieve this info automatically\n // }\n // arg[2] (txData): [Optional] state hydrating data\n constructor(networkInfo, txInfo, txData) {\n if (validateTypes.isSpecificClass(networkInfo, \"Network\")) super(networkInfo.getNetworkInfo());\n else super(networkInfo);\n\n //Validate arguments\n if (!validateTypes.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`);\n if (!validateTypes.isStringHex(txInfo.senderVk))\n throw new Error(`Sender Public Key Required (Type: Hex String)`);\n if (!validateTypes.isStringWithValue(txInfo.contractName))\n throw new Error(`Contract Name Required (Type: String)`);\n if (!validateTypes.isStringWithValue(txInfo.methodName))\n throw new Error(`Method Required (Type: String)`);\n if (!validateTypes.isInteger(txInfo.stampLimit))\n throw new Error(`Stamps Limit Required (Type: Integer)`);\n\n //Store variables in self for reference\n this.uid = validateTypes.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined;\n this.sender = txInfo.senderVk;\n this.contract = txInfo.contractName;\n this.method = txInfo.methodName;\n this.kwargs = {};\n if (validateTypes.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs;\n this.stampLimit = txInfo.stampLimit;\n\n //validate and set nonce and processor if user provided them\n if (typeof txInfo.nonce !== \"undefined\") {\n if (!validateTypes.isInteger(txInfo.nonce))\n throw new Error(\n `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given`\n );\n this.nonce = txInfo.nonce;\n }\n if (typeof txInfo.processor !== \"undefined\") {\n if (!validateTypes.isStringWithValue(txInfo.processor))\n throw new Error(\n `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given`\n );\n this.processor = txInfo.processor;\n }\n\n this.signature;\n this.transactionSigned = false;\n\n //Transaction result information\n this.nonceResult = {};\n this.txSendResult = { errors: [] };\n this.txBlockResult = {};\n this.txHash;\n this.txCheckResult = {};\n this.txCheckAttempts = 0;\n this.txCheckLimit = 1;\n\n //Hydrate other items if passed\n if (txData) {\n if (txData.uid) this.uid = txData.uid;\n if (validateTypes.isObjectWithKeys(txData.txSendResult))\n this.txSendResult = txData.txSendResult;\n if (validateTypes.isObjectWithKeys(txData.nonceResult)) {\n this.nonceResult = txData.nonceResult;\n if (validateTypes.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce;\n if (validateTypes.isStringWithValue(this.nonceResult.processor))\n this.processor = this.nonceResult.processor;\n }\n if (validateTypes.isObjectWithKeys(txData.txSendResult)) {\n this.txSendResult = txData.txSendResult;\n if (this.txSendResult.hash) this.txHash = this.txSendResult.hash;\n }\n if (validateTypes.isObjectWithKeys(txData.txBlockResult))\n this.txBlockResult = txData.txBlockResult;\n if (validateTypes.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo;\n }\n //Create Capnp messages and transactionMessages\n this.makePayload();\n }\n makePayload() {\n this.payload = {\n contract: this.contract,\n function: this.method,\n kwargs: this.kwargs,\n nonce: this.nonce,\n processor: this.processor,\n sender: this.sender,\n stamps_supplied: this.stampLimit,\n };\n this.sortedPayload = this.sortObject(this.payload);\n }\n makeTransaction() {\n this.tx = {\n metadata: {\n signature: this.signature,\n timestamp: parseInt(+new Date() / 1000),\n },\n payload: this.sortedPayload.orderedObj,\n };\n }\n verifySignature() {\n //Verify the signature is correct\n if (!this.transactionSigned)\n throw new Error(\n \"Transaction has not be been signed. Use the sign() method first.\"\n );\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n return wallet.verify(this.sender, stringArray, this.signature);\n }\n sign(sk = undefined, userWallet = undefined) {\n const stringBuffer = Buffer.from(this.sortedPayload.json);\n const stringArray = new Uint8Array(stringBuffer);\n if (userWallet) this.signature = userWallet.sign(stringArray);\n else this.signature = wallet.sign(sk, stringArray);\n this.transactionSigned = true;\n }\n sortObject(object) {\n const processObj = (obj) => {\n const getType = (value) => {\n return Object.prototype.toString.call(value);\n };\n const isArray = (value) => {\n if (getType(value) === \"[object Array]\") return true;\n return false;\n };\n const isObject = (value) => {\n if (getType(value) === \"[object Object]\") return true;\n return false;\n };\n\n const sortObjKeys = (unsorted) => {\n const sorted = {};\n Object.keys(unsorted)\n .sort()\n .forEach((key) => (sorted[key] = unsorted[key]));\n return sorted;\n };\n\n const formatKeys = (unformatted) => {\n Object.keys(unformatted).forEach((key) => {\n if (isArray(unformatted[key]))\n unformatted[key] = unformatted[key].map((item) => {\n if (isObject(item)) return formatKeys(item);\n return item;\n });\n if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]);\n });\n return sortObjKeys(unformatted);\n };\n\n if (!isObject(obj)) throw new TypeError(\"Not a valid Object\");\n try {\n obj = JSON.parse(JSON.stringify(obj));\n } catch (e) {\n throw new TypeError(\"Not a valid JSON Object\");\n }\n return formatKeys(obj);\n };\n const orderedObj = processObj(object);\n return {\n orderedObj,\n json: JSON.stringify(orderedObj),\n };\n }\n async getNonce(callback = undefined) {\n let timestamp = new Date().toUTCString();\n this.nonceResult = await this.API.getNonce(this.sender);\n if (typeof this.nonceResult.nonce === \"undefined\") {\n throw new Error(this.nonceResult);\n }\n this.nonceResult.timestamp = timestamp;\n this.nonce = this.nonceResult.nonce;\n this.processor = this.nonceResult.processor;\n this.nonceMasternode = this.nonceResult.masternode;\n //Create payload object\n this.makePayload();\n\n if (!callback) return this.nonceResult;\n return callback(this.nonceResult);\n }\n async send(sk = undefined, masternode = undefined, callback = undefined) {\n //Error if transaction is not signed and no sk provided to the send method to sign it before sending\n if (!validateTypes.isStringWithValue(sk) && !this.transactionSigned) {\n throw new Error(\n `Transation Not Signed: Private key needed or call sign() first`\n );\n }\n\n let timestamp = new Date().toUTCString();\n\n try {\n //If the nonce isn't set attempt to get it\n if (isNaN(this.nonce) || !validateTypes.isStringWithValue(this.processor))\n await this.getNonce();\n //if the sk is provided then sign the transaction\n if (validateTypes.isStringWithValue(sk)) this.sign(sk);\n //Serialize transaction\n this.makeTransaction();\n //Send transaction to the masternode\n let masternodeURL = masternode;\n if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode;\n let response = await this.API.sendTransaction(this.tx, masternodeURL);\n //Set error if txSendResult doesn't exist\n if (!response || validateTypes.isStringWithValue(response)) {\n this.txSendResult.errors = [response || \"Unknown Transaction Error\"];\n } else {\n if (response.error) this.txSendResult.errors = [response.error];\n else this.txSendResult = response;\n }\n } catch (e) {\n this.txSendResult.errors = [e.message];\n }\n this.txSendResult.timestamp = timestamp;\n return this.handleMasterNodeResponse(this.txSendResult, callback);\n }\n checkForTransactionResult(callback = undefined) {\n return new Promise((resolve) => {\n let timerId = setTimeout(\n async function checkTx() {\n this.txCheckAttempts = this.txCheckAttempts + 1;\n let res = await this.API.checkTransaction(this.txHash);\n let checkAgain = false;\n let timestamp = new Date().toUTCString();\n if (typeof res === \"string\" || !res) {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n res,\n ];\n }\n } else {\n if (res.error) {\n if (res.error === \"Transaction not found.\") {\n if (this.txCheckAttempts < this.txCheckLimit) {\n checkAgain = true;\n } else {\n this.txCheckResult.errors = [\n res.error,\n `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`,\n ];\n }\n } else {\n this.txCheckResult.errors = [res.error];\n }\n } else {\n this.txCheckResult = res;\n }\n }\n if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000);\n else {\n if (validateTypes.isNumber(this.txCheckResult.status)) {\n if (this.txCheckResult.status > 0) {\n if (!validateTypes.isArray(this.txCheckResult.errors))\n this.txCheckResult.errors = [];\n this.txCheckResult.errors.push(\"This transaction returned a non-zero status code\");\n }\n }\n this.txCheckResult.timestamp = timestamp;\n clearTimeout(timerId);\n resolve(this.handleMasterNodeResponse(this.txCheckResult, callback));\n }\n }.bind(this),\n 1000\n );\n });\n }\n handleMasterNodeResponse(result, callback = undefined) {\n //Check to see if this is a successful transacation submission\n if (\n validateTypes.isStringWithValue(result.hash) &&\n validateTypes.isStringWithValue(result.success)\n ) {\n this.txHash = result.hash;\n this.setPendingBlockInfo();\n } else {\n this.setBlockResultInfo(result);\n this.txBlockResult = result;\n }\n this.events.emit(\"response\", result, this.resultInfo.subtitle);\n if (validateTypes.isFunction(callback)) callback(result);\n return result;\n }\n setPendingBlockInfo() {\n this.resultInfo = {\n title: \"Transaction Pending\",\n subtitle: \"Your transaction was submitted and is being processed\",\n message: `Tx Hash: ${this.txHash}`,\n type: \"success\",\n };\n return this.resultInfo;\n }\n setBlockResultInfo(result) {\n let erroredTx = false;\n let errorText = `returned an error and `;\n let statusCode = validateTypes.isNumber(result.status) ? result.status : undefined;\n let stamps = result.stampsUsed || result.stamps_used || 0;\n let message = \"\";\n if (validateTypes.isArrayWithValues(result.errors)) {\n erroredTx = true;\n message = `This transaction returned ${result.errors.length} errors.`;\n if (result.result) {\n if (result.result.includes(\"AssertionError\")) result.errors.push(result.result);\n }\n }\n if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `;\n\n this.resultInfo = {\n title: `Transaction ${erroredTx ? \"Failed\" : \"Successful\"}`,\n subtitle: `Your transaction ${erroredTx ? `${errorText} ` : \"\"}used ${stamps} stamps`,\n message,\n type: `${erroredTx ? \"error\" : \"success\"}`,\n errorInfo: erroredTx ? result.errors : undefined,\n returnResult: result.result || \"\",\n stampsUsed: stamps,\n statusCode,\n };\n return this.resultInfo;\n }\n getResultInfo() {\n return this.resultInfo;\n }\n getTxInfo() {\n return {\n senderVk: this.sender,\n contractName: this.contract,\n methodName: this.method,\n kwargs: this.kwargs,\n stampLimit: this.stampLimit,\n };\n }\n getAllInfo() {\n return {\n uid: this.uid,\n txHash: this.txHash,\n signed: this.transactionSigned,\n tx: this.tx,\n signature: this.signature,\n networkInfo: this.getNetworkInfo(),\n txInfo: this.getTxInfo(),\n txSendResult: this.txSendResult,\n txBlockResult: this.txBlockResult,\n resultInfo: this.getResultInfo(),\n nonceResult: this.nonceResult,\n };\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes } = validators;\nimport { Network } from './network'\nimport { TransactionBuilder } from './transactionBuilder'\n\nexport class TransactionBatcher extends Network {\n constructor(networkInfo) {\n if (validateTypes.isSpecificClass(networkInfo, 'Network'))\n super(networkInfo.getNetworkInfo())\n else super(networkInfo)\n\n this.txBatches = {}\n this.overflow = []\n this.nonceResults = {}\n this.running = false;\n }\n addTransaction(txInfo){\n if (this.running) {\n this.overflow.push(txInfo)\n return\n }\n this.validateTransactionInfo(txInfo)\n if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []\n this.txBatches[txInfo.senderVk].push(txInfo)\n }\n addTransactionList(txList){\n txList.forEach(txInfo => this.addTransaction(txInfo))\n }\n processOverflow(){\n const overflow = this.overflow\n this.overflow = []\n overflow.forEach(txInfo => this.addTransaction(txInfo))\n }\n hasTransactions(){\n let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length)\n test.filter(f => f === 0)\n if (test.length > 0 ) return true\n return false\n }\n validateTransactionInfo(txInfo){\n try{\n new TransactionBuilder(txInfo)\n }catch(e){\n return false\n }\n return true\n }\n async getStartingNonce(senderVk, callback = undefined){\n let timestamp = new Date().toUTCString();\n let response = await this.API.getNonce(senderVk)\n if (typeof response.nonce === 'undefined'){\n throw new Error(response)\n }\n response.timestamp = timestamp\n this.nonceResults[senderVk] = response\n\n if (callback) callback(response)\n return response;\n }\n async sendAllBatches(keyDict){\n if (this.running) return\n let sentTransactions = []\n this.running = true;\n \n await Promise.all(Object.keys(this.txBatches).map((senderVk) => {\n const senderBatch = this.txBatches[senderVk].splice(0,15);\n if (senderBatch.length <= 15) delete this.txBatches[senderVk]\n \n return new Promise(async (resolver) => {\n if (senderBatch.length === 0 ) resolver()\n\n if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`)\n let nonceResponse = await this.getStartingNonce(senderVk)\n let txBatch = this.setBatchNonces(nonceResponse, senderBatch);\n this.signBatch(txBatch, keyDict[senderVk])\n this.sendBatch(txBatch).then(sentList => {\n sentTransactions = [...sentTransactions, ...sentList]\n resolver()\n }) \n })\n }))\n\n try{\n return Promise.all(sentTransactions)\n }catch (e){}\n finally{\n this.running = false;\n this.processOverflow();\n }\n }\n setBatchNonces(nonceResult, txList){\n return txList.map((txInfo, index) => {\n txInfo.nonce = nonceResult.nonce + index\n txInfo.processor = nonceResult.processor\n return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo)\n }).sort((a, b) => a.nonce - b.nonce)\n }\n signBatch(txBatch, key){\n txBatch.forEach(txBuilder => txBuilder.sign(key))\n }\n sendBatch(txBatch){\n let resolvedTransactions = []\n return new Promise(resolver => {\n const resolve = (index) => {\n if ((index + 1) === txBatch.length) resolver(resolvedTransactions)\n }\n txBatch.forEach((txBuilder, index) => {\n const delayedSend = () => {\n resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder})\n resolve(index)\n }\n setTimeout(delayedSend, 1200 * index)\n })\n })\n }\n}\n","import validators from 'types-validate-assert'\nconst { validateTypes, assertTypes } = validators;\nimport * as helpers from './helpers';\nimport * as wallet from './wallet'\n\nexport class Keystore {\n /**\n * Lamden Keystores\n *\n * This Class will create a lamden keystore instance\n *\n * @param {Object|undefined} arg constructor argument\n * @param {String|undefined} arg.key Create an instance and load it with one private key\n * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys\n * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data\n * @return {Keystore}\n */\n constructor(arg = undefined) {\n this.KEYSTORE_VERSION = \"1.0\"\n this.password = null\n this.encryptedData = null;\n\n this.keyList = (() => {\n let keyList = []\n let outerClass = this\n let wallets = []\n\n const addKey = (key) => {\n keyList.push(key)\n createWallets()\n }\n const deleteKey = (position) => {\n keyList.splice(position, 1);\n createWallets()\n }\n const clearKeys = () => {\n keyList = []\n createWallets()\n }\n const numOfKeys = () => keyList.length\n const createWallets = () => {\n wallets = []\n keyList.forEach(keyInfo => {\n let newWallet = wallet.create_wallet({sk: keyInfo.sk, keepPrivate: true})\n newWallet = {...newWallet, ...keyInfo}\n delete newWallet.sk\n wallets.push(newWallet)\n })\n }\n const createKeystore = (password, hint = undefined) => {\n return JSON.stringify({\n data: helpers.encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}),\n w: !hint ? \"\" : helpers.encryptStrHash('n1ahcKc0lb', hint),\n });\n }\n const decryptKeystore = (password, data) => {\n let decrypted = helpers.decryptObject(password, data)\n if (decrypted) {\n assertTypes.isArray(decrypted.keyList)\n decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk))\n decrypted.keyList.forEach(keyInfo => addKey(keyInfo))\n outerClass.version = decrypted.version\n } else {\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n\n return {\n getWallets: () => wallets,\n getWallet: (vk) => wallets.find(wallet => wallet.vk === vk),\n addKey, \n clearKeys, \n numOfKeys,\n deleteKey,\n createKeystore,\n decryptKeystore\n }\n })()\n\n if (arg){\n if (arg.key) this.addKey(arg.key)\n if (arg.keyList) this.addKeys(arg.keyList)\n if (arg.keystoreData) this.addKeystoreData(arg.keystoreData)\n }\n }\n /**\n * Add a list of keys to add to the keystore\n * @param {Array.} keyList An array of 32 character long Lamden private keys\n */\n addKeys(keyList){\n assertTypes.isArray(keyList)\n keyList.forEach(key => this.addKey(key))\n }\n /**\n * Add a key to the keystore\n * @param {string} key A 32 character long Lamden private key\n */\n addKey(keyInfo){\n assertTypes.isObjectWithKeys(keyInfo)\n assertTypes.isStringWithValue(keyInfo.sk)\n if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk\n this.keyList.addKey(keyInfo)\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {string} keystoreData The contents of an existing encrypted keystore file\n */\n addKeystoreData(keystoreData){\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n if(this.validateKeyStore(keystoreData)){\n this.encryptedData = keystoreData\n }\n }\n /**\n * Returns the password hint in a keystore file\n * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor\n */\n getPasswordHint(keystoreData = undefined){\n if (!this.encryptedData && !keystoreData) throw new Error(\"No keystore data found.\")\n\n if (keystoreData) {\n if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData)\n }\n else keystoreData = this.encryptedData\n\n if (keystoreData.w) return helpers.decryptStrHash('n1ahcKc0lb', keystoreData.w);\n else return \"\"\n }\n /**\n * Removes a specific key from the keyList\n * @param {Number} keyIndex The index of the key you want to remove\n */\n deleteKey(keyIndex){\n assertTypes.isInteger(keyIndex)\n if (this.keyList.numOfKeys() === 0) return\n if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error(\"Key index out of range.\")\n this.keyList.deleteKey(keyIndex)\n }\n /**\n * Clears all keys from the keystore\n */\n clearKeys(){\n this.keyList.clearKeys()\n }\n /**\n * Clears all keys from the keystore\n * @return {Array.} An array of wallet objects\n */\n get wallets() {\n return this.keyList.getWallets()\n }\n /**\n * Load the keystore with the data from an existing keystore\n * @param {String} vk A 32 character long Lamden public key\n * @return {Object} A wallet object\n */\n getWallet(vk) {\n return this.keyList.getWallet(vk)\n }\n /**\n * Used to validate that a keystore is the proper Lamden Format (does not decrypt data)\n * @param {String} keystoreData The contents of an existing encrypted keystore file\n * @return {Boolean} valid\n * @throws {Error} This is not a valid keystore file.\n */\n validateKeyStore(keystoreData){\n assertTypes.isObjectWithKeys(keystoreData)\n try{\n let encryptedData = JSON.parse(keystoreData.data);\n if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){\n throw new Error(\"This is not a valid keystore file.\")\n }\n } catch (e) {\n throw new Error(\"This is not a valid keystore file.\")\n }\n return true;\n }\n /**\n * Create a Keystore text string from the keys contained in the Keystore instance\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password.\n * @return {String} A JSON stringified object containing the encrypted data\n * @throws {Error} Any errors from the encyption process\n */\n createKeystore(password, hint = undefined) {\n assertTypes.isStringWithValue(password)\n if (hint){\n assertTypes.isStringWithValue(hint)\n }\n return this.keyList.createKeystore(password, hint)\n }\n /**\n * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore.\n * @param {String} password A password to encrypt the data\n * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor.\n * @throws {Error} Any errors from the encyption process\n */\n decryptKeystore(password, keystoreData = undefined){\n if (keystoreData) this.addKeystoreData(keystoreData)\n if (!this.encryptedData) throw new Error (\"No keystoreData to decrypt.\")\n try{\n this.keyList.decryptKeystore(password, this.encryptedData.data)\n }catch (e){\n throw new Error(\"Incorrect Keystore Password.\")\n }\n }\n}\n","import { TransactionBuilder } from \"./js/transactionBuilder\";\nimport { TransactionBatcher } from \"./js/transactionBatcher\";\nimport { Network } from \"./js/network\";\nimport { Encoder } from \"./js/encoder\";\nimport { Keystore } from \"./js/keystore\";\nimport { LamdenMasterNode_API as Masternode_API } from \"./js/masternode-api\";\nimport * as wallet from \"./js/wallet\";\nimport * as utils from \"./js/helpers\";\nimport { Buffer } from \"buffer\";\n\nglobalThis.Buffer = Buffer;\n\nexport default {\n TransactionBuilder,\n TransactionBatcher,\n Masternode_API,\n Network,\n wallet,\n Keystore,\n Encoder,\n utils,\n};\n"],"names":["this","CryptoJS","undefined","require$$0","JsonFormatter","require$$1","nodeCryptoJs","validateTypes","assertTypes","require","global","inherits_browserModule","ieee754","buffer","Buffer","StringDecoder","Transform","require$$2","inherits","require$$3","Base","ZEROS","Hmac","_defineProperty","_require","errorOrDestroy","getHighWaterMark","browser","Writable","Duplex","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","destroyImpl","require$$4","_require$codes","require$$5","ERR_INVALID_ARG_TYPE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_STREAM_DESTROYED","require$$6","require$$7","prefinish","Readable","once","noop","isRequest","eos","createReadableStreamAsyncIterator","require$$8","require$$9","require$$10","require$$11","require$$12","HashBase","ARRAY16","MD5","rotl","md5","RIPEMD160","Hash","K","W","rotl5","rotl30","ft","sha","Sha256","maj","sigma0","sigma1","sha_jsModule","helpers.hex2buf","helpers.buf2hex","bip39.generateMnemonic","bip39.mnemonicToSeedSync","helpers.concatUint8Arrays","wallet.verify","wallet.sign","wallet.create_wallet","helpers.encryptObject","helpers.encryptStrHash","helpers.decryptObject","helpers.decryptStrHash","Masternode_API","utils"],"mappings":"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AAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD;AACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CA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,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CA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AI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG;AACH,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,I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,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,yBAAyB,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACrC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,E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EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACjC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AACjG,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC;AAC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AAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,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E,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1E,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AAC1E,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AAC1E,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACjE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACf,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB;AACA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB;AACA;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,G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,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAAS,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CA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AAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC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CT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,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AChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD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AAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,I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,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV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,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT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,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX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,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV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,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV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d,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,UAAU;AAC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AAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C;AACA,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC;AAC1C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC5C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAC;AAC3C,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,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,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAC;AACD;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EA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AE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC;AAC9D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAA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EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE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IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACvF;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;AAC5E,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG;AAC7E,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAClC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG;AACH,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE;AACtF,MAAM,GAAG,GAAG,CA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G,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,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,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AACrC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC;AAC/F,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GA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AAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,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AAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACZ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAClB;AACA;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;AACA,EAAE,CAAC,GAAG,CAAC,CAAC;AACR,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,EAAE,C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AG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACnC;AACA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACd,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACb;AACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA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"} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index 45ce643..4552495 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -9,7 +9,6 @@ export default [ output: { file: "dist/esm/lamden.js", format: "esm", - sourcemap: true, }, plugins: [ @@ -27,7 +26,6 @@ export default [ file: "dist/cjs/lamden.js", format: "cjs", exports: "default", - sourcemap: true, }, plugins: [resolve({ preferBuiltins: true }), commonjs()], external: ["tweetnacl", "bip39", "ed25519-hd-key"], From d390f16020b2fc0741c37a5a4be30875b6b153ab Mon Sep 17 00:00:00 2001 From: yaezah Date: Thu, 4 Nov 2021 13:06:43 -0700 Subject: [PATCH 05/10] minification (442kb) --- dist/cjs/lamden.js | 3 +- dist/esm/lamden.js | 40609 +------------------------------------------ package-lock.json | 132 + package.json | 4 +- rollup.config.js | 2 + 5 files changed, 144 insertions(+), 40606 deletions(-) diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js index 3afd62b..49f6de2 100644 --- a/dist/cjs/lamden.js +++ b/dist/cjs/lamden.js @@ -8226,7 +8226,7 @@ class TransactionBuilder extends Network { if (!callback) return this.nonceResult; return callback(this.nonceResult); } - async send(sk = undefined, masternode = undefined, callback = undefined) { + async send(sk = undefined, callback = undefined, masternode = undefined) { //Error if transaction is not signed and no sk provided to the send method to sign it before sending if (!validateTypes$2.isStringWithValue(sk) && !this.transactionSigned) { throw new Error( @@ -8728,4 +8728,3 @@ var index = { }; module.exports = index; -//# sourceMappingURL=lamden.js.map diff --git a/dist/esm/lamden.js b/dist/esm/lamden.js index 5f8a1fd..0b0866b 100644 --- a/dist/esm/lamden.js +++ b/dist/esm/lamden.js @@ -1,40617 +1,22 @@ -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function getAugmentedNamespace(n) { - if (n.__esModule) return n; - var a = Object.defineProperty({}, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -function commonjsRequire (path) { - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); -} - -var dist$1 = {exports: {}}; - -(function (module, exports) { -(function (global, factory) { - factory(exports) ; -}(commonjsGlobal, (function (exports) { - class ValidateTypes { - constructor() {} - - getType(value) { - return Object.prototype.toString.call(value); - } - - getClassName(value) { - try { - return value.constructor.name; - } catch (e) {} - - return this.getType(value); - } //Validation functions - - - isObject(value) { - if (this.getType(value) === "[object Object]") return true; - return false; - } - - isFunction(value) { - if (this.getType(value) === "[object Function]") return true; - return false; - } - - isString(value) { - if (this.getType(value) === "[object String]") return true; - return false; - } - - isBoolean(value) { - if (this.getType(value) === "[object Boolean]") return true; - return false; - } - - isArray(value) { - if (this.getType(value) === "[object Array]") return true; - return false; - } - - isNumber(value) { - if (this.getType(value) === "[object Number]") return true; - return false; - } - - isInteger(value) { - if (this.getType(value) === "[object Number]" && Number.isInteger(value)) return true; - return false; - } - - isRegEx(value) { - if (this.getType(value) === "[object RegExp]") return true; - return false; - } - - isStringHex(value) { - if (!this.isStringWithValue(value)) return false; - let hexRegEx = /([0-9]|[a-f])/gim; - return (value.match(hexRegEx) || []).length === value.length; - } - - hasKeys(value, keys) { - if (keys.map(key => key in value).includes(false)) return false; - return true; - } - - isStringWithValue(value) { - if (this.isString(value) && value !== '') return true; - return false; - } - - isObjectWithKeys(value) { - if (this.isObject(value) && Object.keys(value).length > 0) return true; - return false; - } - - isArrayWithValues(value) { - if (this.isArray(value) && value.length > 0) return true; - return false; - } - - isSpecificClass(value, className) { - if (!this.isObject(value)) return false; - if (this.getClassName(value) !== className) return false; - return true; - } - - } - - class AssertTypes { - constructor() { - this.validate = new ValidateTypes(); - } //Validation functions - - - isObject(value) { - if (!this.validate.isObject(value)) { - throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isFunction(value) { - if (!this.validate.isFunction(value)) { - throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isString(value) { - if (!this.validate.isString(value)) { - throw new TypeError(`Expected type [object String] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isBoolean(value) { - if (!this.validate.isBoolean(value)) { - throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isArray(value) { - if (!this.validate.isArray(value)) { - throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isNumber(value) { - if (!this.validate.isNumber(value)) { - throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isInteger(value) { - if (!this.validate.isInteger(value)) { - throw new TypeError(`Expected "${value}" to be an integer but got non-integer value`); - } - - return true; - } - - isRegEx(value) { - if (!this.validate.isRegEx(value)) { - throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(value)}`); - } - - return true; - } - - isStringHex(value) { - if (!this.validate.isStringHex(value)) { - throw new TypeError(`Expected "${value}" to be hex but got non-hex value`); - } - - return true; - } - - hasKeys(value, keys) { - if (!this.validate.hasKeys(value, keys)) { - throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(keys)}`); - } - - return true; - } - - isStringWithValue(value) { - if (!this.validate.isStringWithValue(value)) { - throw new TypeError(`Expected "${value}" to be [object String] and not empty`); - } - - return true; - } - - isObjectWithKeys(value) { - if (!this.validate.isObjectWithKeys(value)) { - throw new TypeError(`Expected "${value}" to be [object Object] and have keys`); - } - - return true; - } - - isArrayWithValues(value) { - if (!this.validate.isArrayWithValues(value)) { - throw new TypeError(`Expected "${value}" to be [object Array] and not empty`); - } - - return true; - } - - isSpecificClass(value, className) { - if (!this.validate.isSpecificClass(value, className)) { - throw new TypeError(`Expected Object Class to be "${className}" but got ${this.validate.getClassName(value)}`); - } - - return true; - } - - } - - const validateTypes = new ValidateTypes(); - const assertTypes = new AssertTypes(); - - exports.assertTypes = assertTypes; - exports.validateTypes = validateTypes; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); -}(dist$1, dist$1.exports)); - -var validators = /*@__PURE__*/getDefaultExportFromCjs(dist$1.exports); - -var cryptojs = {}; - -var core = {}; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ - -/** - * CryptoJS core components. - */ -var CryptoJS$8 = CryptoJS$8 || (function (Math, undefined$1) { - /** - * CryptoJS namespace. - */ - var C = {}; - - /** - * Library namespace. - */ - var C_lib = C.lib = {}; - - /** - * Base object for prototypal inheritance. - */ - var Base = C_lib.Base = (function () { - function F() {} - - return { - /** - * Creates a new object that inherits from this object. - * - * @param {Object} overrides Properties to copy into the new object. - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * field: 'value', - * - * method: function () { - * } - * }); - */ - extend: function (overrides) { - // Spawn - F.prototype = this; - var subtype = new F(); - - // Augment - if (overrides) { - subtype.mixIn(overrides); - } - - // Create default initializer - if (!subtype.hasOwnProperty('init')) { - subtype.init = function () { - subtype.$super.init.apply(this, arguments); - }; - } - - // Initializer's prototype is the subtype object - subtype.init.prototype = subtype; - - // Reference supertype - subtype.$super = this; - - return subtype; - }, - - /** - * Extends this object and runs the init method. - * Arguments to create() will be passed to init(). - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var instance = MyType.create(); - */ - create: function () { - var instance = this.extend(); - instance.init.apply(instance, arguments); - - return instance; - }, - - /** - * Initializes a newly created object. - * Override this method to add some logic when your objects are created. - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * init: function () { - * // ... - * } - * }); - */ - init: function () { - }, - - /** - * Copies properties into this object. - * - * @param {Object} properties The properties to mix in. - * - * @example - * - * MyType.mixIn({ - * field: 'value' - * }); - */ - mixIn: function (properties) { - for (var propertyName in properties) { - if (properties.hasOwnProperty(propertyName)) { - this[propertyName] = properties[propertyName]; - } - } - - // IE won't copy toString using the loop above - if (properties.hasOwnProperty('toString')) { - this.toString = properties.toString; - } - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = instance.clone(); - */ - clone: function () { - return this.init.prototype.extend(this); - } - }; - }()); - - /** - * An array of 32-bit words. - * - * @property {Array} words The array of 32-bit words. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var WordArray = C_lib.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of 32-bit words. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.create(); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); - */ - init: function (words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined$1) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 4; - } - }, - - /** - * Converts this word array to a string. - * - * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex - * - * @return {string} The stringified word array. - * - * @example - * - * var string = wordArray + ''; - * var string = wordArray.toString(); - * var string = wordArray.toString(CryptoJS.enc.Utf8); - */ - toString: function (encoder) { - return (encoder || Hex).stringify(this); - }, - - /** - * Concatenates a word array to this word array. - * - * @param {WordArray} wordArray The word array to append. - * - * @return {WordArray} This word array. - * - * @example - * - * wordArray1.concat(wordArray2); - */ - concat: function (wordArray) { - // Shortcuts - var thisWords = this.words; - var thatWords = wordArray.words; - var thisSigBytes = this.sigBytes; - var thatSigBytes = wordArray.sigBytes; - - // Clamp excess bits - this.clamp(); - - // Concat - if (thisSigBytes % 4) { - // Copy one byte at a time - for (var i = 0; i < thatSigBytes; i++) { - var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); - } - } else if (thatWords.length > 0xffff) { - // Copy one word at a time - for (var i = 0; i < thatSigBytes; i += 4) { - thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; - } - } else { - // Copy all words at once - thisWords.push.apply(thisWords, thatWords); - } - this.sigBytes += thatSigBytes; - - // Chainable - return this; - }, - - /** - * Removes insignificant bits. - * - * @example - * - * wordArray.clamp(); - */ - clamp: function () { - // Shortcuts - var words = this.words; - var sigBytes = this.sigBytes; - - // Clamp - words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); - words.length = Math.ceil(sigBytes / 4); - }, - - /** - * Creates a copy of this word array. - * - * @return {WordArray} The clone. - * - * @example - * - * var clone = wordArray.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone.words = this.words.slice(0); - - return clone; - }, - - /** - * Creates a word array filled with random bytes. - * - * @param {number} nBytes The number of random bytes to generate. - * - * @return {WordArray} The random word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.random(16); - */ - random: function (nBytes) { - var words = []; - for (var i = 0; i < nBytes; i += 4) { - words.push((Math.random() * 0x100000000) | 0); - } - - return new WordArray.init(words, nBytes); - } - }); - - /** - * Encoder namespace. - */ - var C_enc = C.enc = {}; - - /** - * Hex encoding strategy. - */ - var Hex = C_enc.Hex = { - /** - * Converts a word array to a hex string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The hex string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.enc.Hex.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var hexChars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - hexChars.push((bite >>> 4).toString(16)); - hexChars.push((bite & 0x0f).toString(16)); - } - - return hexChars.join(''); - }, - - /** - * Converts a hex string to a word array. - * - * @param {string} hexStr The hex string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Hex.parse(hexString); - */ - parse: function (hexStr) { - // Shortcut - var hexStrLength = hexStr.length; - - // Convert - var words = []; - for (var i = 0; i < hexStrLength; i += 2) { - words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); - } - - return new WordArray.init(words, hexStrLength / 2); - } - }; - - /** - * Latin1 encoding strategy. - */ - var Latin1 = C_enc.Latin1 = { - /** - * Converts a word array to a Latin1 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Latin1 string. - * - * @static - * - * @example - * - * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var latin1Chars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - latin1Chars.push(String.fromCharCode(bite)); - } - - return latin1Chars.join(''); - }, - - /** - * Converts a Latin1 string to a word array. - * - * @param {string} latin1Str The Latin1 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); - */ - parse: function (latin1Str) { - // Shortcut - var latin1StrLength = latin1Str.length; - - // Convert - var words = []; - for (var i = 0; i < latin1StrLength; i++) { - words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); - } - - return new WordArray.init(words, latin1StrLength); - } - }; - - /** - * UTF-8 encoding strategy. - */ - var Utf8 = C_enc.Utf8 = { - /** - * Converts a word array to a UTF-8 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-8 string. - * - * @static - * - * @example - * - * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); - */ - stringify: function (wordArray) { - try { - return decodeURIComponent(escape(Latin1.stringify(wordArray))); - } catch (e) { - throw new Error('Malformed UTF-8 data'); - } - }, - - /** - * Converts a UTF-8 string to a word array. - * - * @param {string} utf8Str The UTF-8 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); - */ - parse: function (utf8Str) { - return Latin1.parse(unescape(encodeURIComponent(utf8Str))); - } - }; - - /** - * Abstract buffered block algorithm template. - * - * The property blockSize must be implemented in a concrete subtype. - * - * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 - */ - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ - /** - * Resets this block algorithm's data buffer to its initial state. - * - * @example - * - * bufferedBlockAlgorithm.reset(); - */ - reset: function () { - // Initial values - this._data = new WordArray.init(); - this._nDataBytes = 0; - }, - - /** - * Adds new data to this block algorithm's buffer. - * - * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. - * - * @example - * - * bufferedBlockAlgorithm._append('data'); - * bufferedBlockAlgorithm._append(wordArray); - */ - _append: function (data) { - // Convert string to WordArray, else assume WordArray already - if (typeof data == 'string') { - data = Utf8.parse(data); - } - - // Append - this._data.concat(data); - this._nDataBytes += data.sigBytes; - }, - - /** - * Processes available data blocks. - * - * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. - * - * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. - * - * @return {WordArray} The processed data. - * - * @example - * - * var processedData = bufferedBlockAlgorithm._process(); - * var processedData = bufferedBlockAlgorithm._process(!!'flush'); - */ - _process: function (doFlush) { - // Shortcuts - var data = this._data; - var dataWords = data.words; - var dataSigBytes = data.sigBytes; - var blockSize = this.blockSize; - var blockSizeBytes = blockSize * 4; - - // Count blocks ready - var nBlocksReady = dataSigBytes / blockSizeBytes; - if (doFlush) { - // Round up to include partial blocks - nBlocksReady = Math.ceil(nBlocksReady); - } else { - // Round down to include only full blocks, - // less the number of blocks that must remain in the buffer - nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); - } - - // Count words ready - var nWordsReady = nBlocksReady * blockSize; - - // Count bytes ready - var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); - - // Process blocks - if (nWordsReady) { - for (var offset = 0; offset < nWordsReady; offset += blockSize) { - // Perform concrete-algorithm logic - this._doProcessBlock(dataWords, offset); - } - - // Remove processed words - var processedWords = dataWords.splice(0, nWordsReady); - data.sigBytes -= nBytesReady; - } - - // Return processed words - return new WordArray.init(processedWords, nBytesReady); - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = bufferedBlockAlgorithm.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone._data = this._data.clone(); - - return clone; - }, - - _minBufferSize: 0 - }); - - /** - * Abstract hasher template. - * - * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) - */ - C_lib.Hasher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - */ - cfg: Base.extend(), - - /** - * Initializes a newly created hasher. - * - * @param {Object} cfg (Optional) The configuration options to use for this hash computation. - * - * @example - * - * var hasher = CryptoJS.algo.SHA256.create(); - */ - init: function (cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Set initial values - this.reset(); - }, - - /** - * Resets this hasher to its initial state. - * - * @example - * - * hasher.reset(); - */ - reset: function () { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-hasher logic - this._doReset(); - }, - - /** - * Updates this hasher with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {Hasher} This hasher. - * - * @example - * - * hasher.update('message'); - * hasher.update(wordArray); - */ - update: function (messageUpdate) { - // Append - this._append(messageUpdate); - - // Update the hash - this._process(); - - // Chainable - return this; - }, - - /** - * Finalizes the hash computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The hash. - * - * @example - * - * var hash = hasher.finalize(); - * var hash = hasher.finalize('message'); - * var hash = hasher.finalize(wordArray); - */ - finalize: function (messageUpdate) { - // Final message update - if (messageUpdate) { - this._append(messageUpdate); - } - - // Perform concrete-hasher logic - var hash = this._doFinalize(); - - return hash; - }, - - blockSize: 512/32, - - /** - * Creates a shortcut function to a hasher's object interface. - * - * @param {Hasher} hasher The hasher to create a helper for. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); - */ - _createHelper: function (hasher) { - return function (message, cfg) { - return new hasher.init(cfg).finalize(message); - }; - }, - - /** - * Creates a shortcut function to the HMAC's object interface. - * - * @param {Hasher} hasher The hasher to use in this HMAC helper. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); - */ - _createHmacHelper: function (hasher) { - return function (message, key) { - return new C_algo.HMAC.init(hasher, key).finalize(message); - }; - } - }); - - /** - * Algorithm namespace. - */ - var C_algo = C.algo = {}; - - return C; -}(Math)); - -core.CryptoJS = CryptoJS$8; - -var CryptoJS$7 = core.CryptoJS; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function () { - // Shortcuts - var C = CryptoJS$7; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64 encoding strategy. - */ - C_enc.Base64 = { - /** - * Converts a word array to a Base64 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Base64 string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64 string to a word array. - * - * @param {string} base64Str The Base64 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64.parse(base64String); - */ - parse: function (base64Str) { - // Shortcuts - var base64StrLength = base64Str.length; - var map = this._map; - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex != -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2); - var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2); - words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - - return WordArray.create(words, nBytes); - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' - }; -}()); - -var CryptoJS$6 = core.CryptoJS; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function (Math) { - // Shortcuts - var C = CryptoJS$6; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var T = []; - - // Compute constants - (function () { - for (var i = 0; i < 64; i++) { - T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; - } - }()); - - /** - * MD5 hash algorithm. - */ - var MD5 = C_algo.MD5 = Hasher.extend({ - _doReset: function () { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476 - ]); - }, - - _doProcessBlock: function (M, offset) { - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - - // Shortcuts - var H = this._hash.words; - - var M_offset_0 = M[offset + 0]; - var M_offset_1 = M[offset + 1]; - var M_offset_2 = M[offset + 2]; - var M_offset_3 = M[offset + 3]; - var M_offset_4 = M[offset + 4]; - var M_offset_5 = M[offset + 5]; - var M_offset_6 = M[offset + 6]; - var M_offset_7 = M[offset + 7]; - var M_offset_8 = M[offset + 8]; - var M_offset_9 = M[offset + 9]; - var M_offset_10 = M[offset + 10]; - var M_offset_11 = M[offset + 11]; - var M_offset_12 = M[offset + 12]; - var M_offset_13 = M[offset + 13]; - var M_offset_14 = M[offset + 14]; - var M_offset_15 = M[offset + 15]; - - // Working varialbes - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - - // Computation - a = FF(a, b, c, d, M_offset_0, 7, T[0]); - d = FF(d, a, b, c, M_offset_1, 12, T[1]); - c = FF(c, d, a, b, M_offset_2, 17, T[2]); - b = FF(b, c, d, a, M_offset_3, 22, T[3]); - a = FF(a, b, c, d, M_offset_4, 7, T[4]); - d = FF(d, a, b, c, M_offset_5, 12, T[5]); - c = FF(c, d, a, b, M_offset_6, 17, T[6]); - b = FF(b, c, d, a, M_offset_7, 22, T[7]); - a = FF(a, b, c, d, M_offset_8, 7, T[8]); - d = FF(d, a, b, c, M_offset_9, 12, T[9]); - c = FF(c, d, a, b, M_offset_10, 17, T[10]); - b = FF(b, c, d, a, M_offset_11, 22, T[11]); - a = FF(a, b, c, d, M_offset_12, 7, T[12]); - d = FF(d, a, b, c, M_offset_13, 12, T[13]); - c = FF(c, d, a, b, M_offset_14, 17, T[14]); - b = FF(b, c, d, a, M_offset_15, 22, T[15]); - - a = GG(a, b, c, d, M_offset_1, 5, T[16]); - d = GG(d, a, b, c, M_offset_6, 9, T[17]); - c = GG(c, d, a, b, M_offset_11, 14, T[18]); - b = GG(b, c, d, a, M_offset_0, 20, T[19]); - a = GG(a, b, c, d, M_offset_5, 5, T[20]); - d = GG(d, a, b, c, M_offset_10, 9, T[21]); - c = GG(c, d, a, b, M_offset_15, 14, T[22]); - b = GG(b, c, d, a, M_offset_4, 20, T[23]); - a = GG(a, b, c, d, M_offset_9, 5, T[24]); - d = GG(d, a, b, c, M_offset_14, 9, T[25]); - c = GG(c, d, a, b, M_offset_3, 14, T[26]); - b = GG(b, c, d, a, M_offset_8, 20, T[27]); - a = GG(a, b, c, d, M_offset_13, 5, T[28]); - d = GG(d, a, b, c, M_offset_2, 9, T[29]); - c = GG(c, d, a, b, M_offset_7, 14, T[30]); - b = GG(b, c, d, a, M_offset_12, 20, T[31]); - - a = HH(a, b, c, d, M_offset_5, 4, T[32]); - d = HH(d, a, b, c, M_offset_8, 11, T[33]); - c = HH(c, d, a, b, M_offset_11, 16, T[34]); - b = HH(b, c, d, a, M_offset_14, 23, T[35]); - a = HH(a, b, c, d, M_offset_1, 4, T[36]); - d = HH(d, a, b, c, M_offset_4, 11, T[37]); - c = HH(c, d, a, b, M_offset_7, 16, T[38]); - b = HH(b, c, d, a, M_offset_10, 23, T[39]); - a = HH(a, b, c, d, M_offset_13, 4, T[40]); - d = HH(d, a, b, c, M_offset_0, 11, T[41]); - c = HH(c, d, a, b, M_offset_3, 16, T[42]); - b = HH(b, c, d, a, M_offset_6, 23, T[43]); - a = HH(a, b, c, d, M_offset_9, 4, T[44]); - d = HH(d, a, b, c, M_offset_12, 11, T[45]); - c = HH(c, d, a, b, M_offset_15, 16, T[46]); - b = HH(b, c, d, a, M_offset_2, 23, T[47]); - - a = II(a, b, c, d, M_offset_0, 6, T[48]); - d = II(d, a, b, c, M_offset_7, 10, T[49]); - c = II(c, d, a, b, M_offset_14, 15, T[50]); - b = II(b, c, d, a, M_offset_5, 21, T[51]); - a = II(a, b, c, d, M_offset_12, 6, T[52]); - d = II(d, a, b, c, M_offset_3, 10, T[53]); - c = II(c, d, a, b, M_offset_10, 15, T[54]); - b = II(b, c, d, a, M_offset_1, 21, T[55]); - a = II(a, b, c, d, M_offset_8, 6, T[56]); - d = II(d, a, b, c, M_offset_15, 10, T[57]); - c = II(c, d, a, b, M_offset_6, 15, T[58]); - b = II(b, c, d, a, M_offset_13, 21, T[59]); - a = II(a, b, c, d, M_offset_4, 6, T[60]); - d = II(d, a, b, c, M_offset_11, 10, T[61]); - c = II(c, d, a, b, M_offset_2, 15, T[62]); - b = II(b, c, d, a, M_offset_9, 21, T[63]); - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - - var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); - var nBitsTotalL = nBitsTotal; - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( - (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | - (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) - ); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | - (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) - ); - - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 4; i++) { - // Shortcut - var H_i = H[i]; - - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - function FF(a, b, c, d, x, s, t) { - var n = a + ((b & c) | (~b & d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function GG(a, b, c, d, x, s, t) { - var n = a + ((b & d) | (c & ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function HH(a, b, c, d, x, s, t) { - var n = a + (b ^ c ^ d) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function II(a, b, c, d, x, s, t) { - var n = a + (c ^ (b | ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.MD5('message'); - * var hash = CryptoJS.MD5(wordArray); - */ - C.MD5 = Hasher._createHelper(MD5); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacMD5(message, key); - */ - C.HmacMD5 = Hasher._createHmacHelper(MD5); -}(Math)); - -var CryptoJS$5 = core.CryptoJS; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function () { - // Shortcuts - var C = CryptoJS$5; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var MD5 = C_algo.MD5; - - /** - * This key derivation function is meant to conform with EVP_BytesToKey. - * www.openssl.org/docs/crypto/EVP_BytesToKey.html - */ - var EvpKDF = C_algo.EvpKDF = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hash algorithm to use. Default: MD5 - * @property {number} iterations The number of iterations to perform. Default: 1 - */ - cfg: Base.extend({ - keySize: 128/32, - hasher: MD5, - iterations: 1 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.EvpKDF.create(); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); - */ - init: function (cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function (password, salt) { - // Shortcut - var cfg = this.cfg; - - // Init hasher - var hasher = cfg.hasher.create(); - - // Initial values - var derivedKey = WordArray.create(); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - if (block) { - hasher.update(block); - } - var block = hasher.update(password).finalize(salt); - hasher.reset(); - - // Iterations - for (var i = 1; i < iterations; i++) { - block = hasher.finalize(block); - hasher.reset(); - } - - derivedKey.concat(block); - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.EvpKDF(password, salt); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.EvpKDF = function (password, salt, cfg) { - return EvpKDF.create(cfg).compute(password, salt); - }; -}()); - -var CryptoJS$4 = core.CryptoJS; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/** - * Cipher core components. - */ -CryptoJS$4.lib.Cipher || (function (undefined$1) { - // Shortcuts - var C = CryptoJS$4; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; - var C_enc = C.enc; - C_enc.Utf8; - var Base64 = C_enc.Base64; - var C_algo = C.algo; - var EvpKDF = C_algo.EvpKDF; - - /** - * Abstract base cipher template. - * - * @property {number} keySize This cipher's key size. Default: 4 (128 bits) - * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) - * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. - * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. - */ - var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - * - * @property {WordArray} iv The IV to use for this operation. - */ - cfg: Base.extend(), - - /** - * Creates this cipher in encryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); - */ - createEncryptor: function (key, cfg) { - return this.create(this._ENC_XFORM_MODE, key, cfg); - }, - - /** - * Creates this cipher in decryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); - */ - createDecryptor: function (key, cfg) { - return this.create(this._DEC_XFORM_MODE, key, cfg); - }, - - /** - * Initializes a newly created cipher. - * - * @param {number} xformMode Either the encryption or decryption transormation mode constant. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @example - * - * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); - */ - init: function (xformMode, key, cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Store transform mode and key - this._xformMode = xformMode; - this._key = key; - - // Set initial values - this.reset(); - }, - - /** - * Resets this cipher to its initial state. - * - * @example - * - * cipher.reset(); - */ - reset: function () { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-cipher logic - this._doReset(); - }, - - /** - * Adds data to be encrypted or decrypted. - * - * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. - * - * @return {WordArray} The data after processing. - * - * @example - * - * var encrypted = cipher.process('data'); - * var encrypted = cipher.process(wordArray); - */ - process: function (dataUpdate) { - // Append - this._append(dataUpdate); - - // Process available blocks - return this._process(); - }, - - /** - * Finalizes the encryption or decryption process. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. - * - * @return {WordArray} The data after final processing. - * - * @example - * - * var encrypted = cipher.finalize(); - * var encrypted = cipher.finalize('data'); - * var encrypted = cipher.finalize(wordArray); - */ - finalize: function (dataUpdate) { - // Final data update - if (dataUpdate) { - this._append(dataUpdate); - } - - // Perform concrete-cipher logic - var finalProcessedData = this._doFinalize(); - - return finalProcessedData; - }, - - keySize: 128/32, - - ivSize: 128/32, - - _ENC_XFORM_MODE: 1, - - _DEC_XFORM_MODE: 2, - - /** - * Creates shortcut functions to a cipher's object interface. - * - * @param {Cipher} cipher The cipher to create a helper for. - * - * @return {Object} An object with encrypt and decrypt shortcut functions. - * - * @static - * - * @example - * - * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); - */ - _createHelper: (function () { - function selectCipherStrategy(key) { - if (typeof key == 'string') { - return PasswordBasedCipher; - } else { - return SerializableCipher; - } - } - - return function (cipher) { - return { - encrypt: function (message, key, cfg) { - return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); - }, - - decrypt: function (ciphertext, key, cfg) { - return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); - } - }; - }; - }()) - }); - - /** - * Abstract base stream cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) - */ - C_lib.StreamCipher = Cipher.extend({ - _doFinalize: function () { - // Process partial blocks - var finalProcessedBlocks = this._process(!!'flush'); - - return finalProcessedBlocks; - }, - - blockSize: 1 - }); - - /** - * Mode namespace. - */ - var C_mode = C.mode = {}; - - /** - * Abstract base block cipher mode template. - */ - var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ - /** - * Creates this mode for encryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); - */ - createEncryptor: function (cipher, iv) { - return this.Encryptor.create(cipher, iv); - }, - - /** - * Creates this mode for decryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); - */ - createDecryptor: function (cipher, iv) { - return this.Decryptor.create(cipher, iv); - }, - - /** - * Initializes a newly created mode. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @example - * - * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); - */ - init: function (cipher, iv) { - this._cipher = cipher; - this._iv = iv; - } - }); - - /** - * Cipher Block Chaining mode. - */ - var CBC = C_mode.CBC = (function () { - /** - * Abstract base CBC mode. - */ - var CBC = BlockCipherMode.extend(); - - /** - * CBC encryptor. - */ - CBC.Encryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // XOR and encrypt - xorBlock.call(this, words, offset, blockSize); - cipher.encryptBlock(words, offset); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - /** - * CBC decryptor. - */ - CBC.Decryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function (words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - // Decrypt and XOR - cipher.decryptBlock(words, offset); - xorBlock.call(this, words, offset, blockSize); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function xorBlock(words, offset, blockSize) { - // Shortcut - var iv = this._iv; - - // Choose mixing block - if (iv) { - var block = iv; - - // Remove IV for subsequent blocks - this._iv = undefined$1; - } else { - var block = this._prevBlock; - } - - // XOR blocks - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= block[i]; - } - } - - return CBC; - }()); - - /** - * Padding namespace. - */ - var C_pad = C.pad = {}; - - /** - * PKCS #5/7 padding strategy. - */ - var Pkcs7 = C_pad.Pkcs7 = { - /** - * Pads data using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to pad. - * @param {number} blockSize The multiple that the data should be padded to. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.pad(wordArray, 4); - */ - pad: function (data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Create padding word - var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; - - // Create padding - var paddingWords = []; - for (var i = 0; i < nPaddingBytes; i += 4) { - paddingWords.push(paddingWord); - } - var padding = WordArray.create(paddingWords, nPaddingBytes); - - // Add padding - data.concat(padding); - }, - - /** - * Unpads data that had been padded using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to unpad. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.unpad(wordArray); - */ - unpad: function (data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - /** - * Abstract base block cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) - */ - C_lib.BlockCipher = Cipher.extend({ - /** - * Configuration options. - * - * @property {Mode} mode The block mode to use. Default: CBC - * @property {Padding} padding The padding strategy to use. Default: Pkcs7 - */ - cfg: Cipher.cfg.extend({ - mode: CBC, - padding: Pkcs7 - }), - - reset: function () { - // Reset cipher - Cipher.reset.call(this); - - // Shortcuts - var cfg = this.cfg; - var iv = cfg.iv; - var mode = cfg.mode; - - // Reset block mode - if (this._xformMode == this._ENC_XFORM_MODE) { - var modeCreator = mode.createEncryptor; - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - var modeCreator = mode.createDecryptor; - - // Keep at least one block in the buffer for unpadding - this._minBufferSize = 1; - } - this._mode = modeCreator.call(mode, this, iv && iv.words); - }, - - _doProcessBlock: function (words, offset) { - this._mode.processBlock(words, offset); - }, - - _doFinalize: function () { - // Shortcut - var padding = this.cfg.padding; - - // Finalize - if (this._xformMode == this._ENC_XFORM_MODE) { - // Pad data - padding.pad(this._data, this.blockSize); - - // Process final blocks - var finalProcessedBlocks = this._process(!!'flush'); - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - // Process final blocks - var finalProcessedBlocks = this._process(!!'flush'); - - // Unpad data - padding.unpad(finalProcessedBlocks); - } - - return finalProcessedBlocks; - }, - - blockSize: 128/32 - }); - - /** - * A collection of cipher parameters. - * - * @property {WordArray} ciphertext The raw ciphertext. - * @property {WordArray} key The key to this ciphertext. - * @property {WordArray} iv The IV used in the ciphering operation. - * @property {WordArray} salt The salt used with a key derivation function. - * @property {Cipher} algorithm The cipher algorithm. - * @property {Mode} mode The block mode used in the ciphering operation. - * @property {Padding} padding The padding scheme used in the ciphering operation. - * @property {number} blockSize The block size of the cipher. - * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. - */ - var CipherParams = C_lib.CipherParams = Base.extend({ - /** - * Initializes a newly created cipher params object. - * - * @param {Object} cipherParams An object with any of the possible cipher parameters. - * - * @example - * - * var cipherParams = CryptoJS.lib.CipherParams.create({ - * ciphertext: ciphertextWordArray, - * key: keyWordArray, - * iv: ivWordArray, - * salt: saltWordArray, - * algorithm: CryptoJS.algo.AES, - * mode: CryptoJS.mode.CBC, - * padding: CryptoJS.pad.PKCS7, - * blockSize: 4, - * formatter: CryptoJS.format.OpenSSL - * }); - */ - init: function (cipherParams) { - this.mixIn(cipherParams); - }, - - /** - * Converts this cipher params object to a string. - * - * @param {Format} formatter (Optional) The formatting strategy to use. - * - * @return {string} The stringified cipher params. - * - * @throws Error If neither the formatter nor the default formatter is set. - * - * @example - * - * var string = cipherParams + ''; - * var string = cipherParams.toString(); - * var string = cipherParams.toString(CryptoJS.format.OpenSSL); - */ - toString: function (formatter) { - return (formatter || this.formatter).stringify(this); - } - }); - - /** - * Format namespace. - */ - var C_format = C.format = {}; - - /** - * OpenSSL formatting strategy. - */ - var OpenSSLFormatter = C_format.OpenSSL = { - /** - * Converts a cipher params object to an OpenSSL-compatible string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The OpenSSL-compatible string. - * - * @static - * - * @example - * - * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); - */ - stringify: function (cipherParams) { - // Shortcuts - var ciphertext = cipherParams.ciphertext; - var salt = cipherParams.salt; - - // Format - if (salt) { - var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); - } else { - var wordArray = ciphertext; - } - - return wordArray.toString(Base64); - }, - - /** - * Converts an OpenSSL-compatible string to a cipher params object. - * - * @param {string} openSSLStr The OpenSSL-compatible string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); - */ - parse: function (openSSLStr) { - // Parse base64 - var ciphertext = Base64.parse(openSSLStr); - - // Shortcut - var ciphertextWords = ciphertext.words; - - // Test for salt - if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { - // Extract salt - var salt = WordArray.create(ciphertextWords.slice(2, 4)); - - // Remove salt from ciphertext - ciphertextWords.splice(0, 4); - ciphertext.sigBytes -= 16; - } - - return CipherParams.create({ ciphertext: ciphertext, salt: salt }); - } - }; - - /** - * A cipher wrapper that returns ciphertext as a serializable cipher params object. - */ - var SerializableCipher = C_lib.SerializableCipher = Base.extend({ - /** - * Configuration options. - * - * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL - */ - cfg: Base.extend({ - format: OpenSSLFormatter - }), - - /** - * Encrypts a message. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - encrypt: function (cipher, message, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Encrypt - var encryptor = cipher.createEncryptor(key, cfg); - var ciphertext = encryptor.finalize(message); - - // Shortcut - var cipherCfg = encryptor.cfg; - - // Create and return serializable cipher params - return CipherParams.create({ - ciphertext: ciphertext, - key: key, - iv: cipherCfg.iv, - algorithm: cipher, - mode: cipherCfg.mode, - padding: cipherCfg.padding, - blockSize: cipher.blockSize, - formatter: cfg.format - }); - }, - - /** - * Decrypts serialized ciphertext. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - decrypt: function (cipher, ciphertext, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Decrypt - var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); - - return plaintext; - }, - - /** - * Converts serialized ciphertext to CipherParams, - * else assumed CipherParams already and returns ciphertext unchanged. - * - * @param {CipherParams|string} ciphertext The ciphertext. - * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. - * - * @return {CipherParams} The unserialized ciphertext. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); - */ - _parse: function (ciphertext, format) { - if (typeof ciphertext == 'string') { - return format.parse(ciphertext, this); - } else { - return ciphertext; - } - } - }); - - /** - * Key derivation function namespace. - */ - var C_kdf = C.kdf = {}; - - /** - * OpenSSL key derivation function. - */ - var OpenSSLKdf = C_kdf.OpenSSL = { - /** - * Derives a key and IV from a password. - * - * @param {string} password The password to derive from. - * @param {number} keySize The size in words of the key to generate. - * @param {number} ivSize The size in words of the IV to generate. - * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. - * - * @return {CipherParams} A cipher params object with the key, IV, and salt. - * - * @static - * - * @example - * - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); - */ - execute: function (password, keySize, ivSize, salt) { - // Generate random salt - if (!salt) { - salt = WordArray.random(64/8); - } - - // Derive key and IV - var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt); - - // Separate key and IV - var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); - key.sigBytes = keySize * 4; - - // Return params - return CipherParams.create({ key: key, iv: iv, salt: salt }); - } - }; - - /** - * A serializable cipher wrapper that derives the key from a password, - * and returns ciphertext as a serializable cipher params object. - */ - var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ - /** - * Configuration options. - * - * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL - */ - cfg: SerializableCipher.cfg.extend({ - kdf: OpenSSLKdf - }), - - /** - * Encrypts a message using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); - */ - encrypt: function (cipher, message, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Encrypt - var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); - - // Mix in derived params - ciphertext.mixIn(derivedParams); - - return ciphertext; - }, - - /** - * Decrypts serialized ciphertext using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); - */ - decrypt: function (cipher, ciphertext, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Decrypt - var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); - - return plaintext; - } - }); -}()); - -var CryptoJS$3 = core.CryptoJS; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function () { - // Shortcuts - var C = CryptoJS$3; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Lookup tables - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX_0 = []; - var SUB_MIX_1 = []; - var SUB_MIX_2 = []; - var SUB_MIX_3 = []; - var INV_SUB_MIX_0 = []; - var INV_SUB_MIX_1 = []; - var INV_SUB_MIX_2 = []; - var INV_SUB_MIX_3 = []; - - // Compute lookup tables - (function () { - // Compute double table - var d = []; - for (var i = 0; i < 256; i++) { - if (i < 128) { - d[i] = i << 1; - } else { - d[i] = (i << 1) ^ 0x11b; - } - } - - // Walk GF(2^8) - var x = 0; - var xi = 0; - for (var i = 0; i < 256; i++) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; - - // Compute multiplication - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100); - SUB_MIX_0[x] = (t << 24) | (t >>> 8); - SUB_MIX_1[x] = (t << 16) | (t >>> 16); - SUB_MIX_2[x] = (t << 8) | (t >>> 24); - SUB_MIX_3[x] = t; - - // Compute inv sub bytes, inv mix columns tables - var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); - INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); - INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); - INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); - INV_SUB_MIX_3[sx] = t; - - // Compute next counter - if (!x) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - }()); - - // Precomputed Rcon lookup - var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - - /** - * AES block cipher algorithm. - */ - var AES = C_algo.AES = BlockCipher.extend({ - _doReset: function () { - // Shortcuts - var key = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - // Compute number of rounds - var nRounds = this._nRounds = keySize + 6; - - // Compute number of key schedule rows - var ksRows = (nRounds + 1) * 4; - - // Compute key schedule - var keySchedule = this._keySchedule = []; - for (var ksRow = 0; ksRow < ksRows; ksRow++) { - if (ksRow < keySize) { - keySchedule[ksRow] = keyWords[ksRow]; - } else { - var t = keySchedule[ksRow - 1]; - - if (!(ksRow % keySize)) { - // Rot word - t = (t << 8) | (t >>> 24); - - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - - // Mix Rcon - t ^= RCON[(ksRow / keySize) | 0] << 24; - } else if (keySize > 6 && ksRow % keySize == 4) { - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - } - - keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; - } - } - - // Compute inv key schedule - var invKeySchedule = this._invKeySchedule = []; - for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { - var ksRow = ksRows - invKsRow; - - if (invKsRow % 4) { - var t = keySchedule[ksRow]; - } else { - var t = keySchedule[ksRow - 4]; - } - - if (invKsRow < 4 || ksRow <= 4) { - invKeySchedule[invKsRow] = t; - } else { - invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ - INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; - } - } - }, - - encryptBlock: function (M, offset) { - this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); - }, - - decryptBlock: function (M, offset) { - // Swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - - this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); - - // Inv swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - }, - - _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { - // Shortcut - var nRounds = this._nRounds; - - // Get input, add round key - var s0 = M[offset] ^ keySchedule[0]; - var s1 = M[offset + 1] ^ keySchedule[1]; - var s2 = M[offset + 2] ^ keySchedule[2]; - var s3 = M[offset + 3] ^ keySchedule[3]; - - // Key schedule row counter - var ksRow = 4; - - // Rounds - for (var round = 1; round < nRounds; round++) { - // Shift rows, sub bytes, mix columns, add round key - var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; - var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; - var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; - var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; - - // Update state - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - // Shift rows, sub bytes, add round key - var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - - // Set output - M[offset] = t0; - M[offset + 1] = t1; - M[offset + 2] = t2; - M[offset + 3] = t3; - }, - - keySize: 256/32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); - */ - C.AES = BlockCipher._createHelper(AES); -}()); - -var jsonformatter = {}; - -var CryptoJS$2 = core.CryptoJS; - -// create custom json serialization format -var JsonFormatter$2 = { - stringify: function (cipherParams) { - // create json object with ciphertext - var jsonObj = { - ct: cipherParams.ciphertext.toString(CryptoJS$2.enc.Base64) - }; - - // optionally add iv and salt - if (cipherParams.iv) { - jsonObj.iv = cipherParams.iv.toString(); - } - - if (cipherParams.salt) { - jsonObj.s = cipherParams.salt.toString(); - } - - // stringify json object - return JSON.stringify(jsonObj) - }, - - parse: function (jsonStr) { - // parse json string - var jsonObj = JSON.parse(jsonStr); - - // extract ciphertext from json object, and create cipher params object - var cipherParams = CryptoJS$2.lib.CipherParams.create({ - ciphertext: CryptoJS$2.enc.Base64.parse(jsonObj.ct) - }); - - // optionally extract iv and salt - if (jsonObj.iv) { - cipherParams.iv = CryptoJS$2.enc.Hex.parse(jsonObj.iv); - } - - if (jsonObj.s) { - cipherParams.salt = CryptoJS$2.enc.Hex.parse(jsonObj.s); - } - - return cipherParams; - } -}; - -jsonformatter.JsonFormatter = JsonFormatter$2; - -var CryptoJS$1 = core.CryptoJS; - - - - - -var JsonFormatter$1 = jsonformatter.JsonFormatter; - -cryptojs.CryptoJS = CryptoJS$1; -cryptojs.JsonFormatter = JsonFormatter$1; - -const { CryptoJS, JsonFormatter } = cryptojs; -const { validateTypes: validateTypes$5, assertTypes: assertTypes$1 } = validators; - -/** - * Encrypt a Javascript object with a string password - * The object passed must pass JSON.stringify or the method will fail. - * - * @param {string} password A password to encrypt the object with - * @param {Object} obj A javascript object (must be JSON compatible) - * @return {string} Encrypted string - */ -function encryptObject(password, obj) { - assertTypes$1.isStringWithValue(password); - assertTypes$1.isObject(obj); - - const encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), password, { - format: JsonFormatter, - }).toString(); - return encrypted; -} - -/** - * Decrypt an Object using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} objString A javascript object as JSON string - * @return {string} Encrypted string - */ -function decryptObject(password, objString) { - assertTypes$1.isStringWithValue(password); - assertTypes$1.isStringWithValue(objString); - - try { - const decrypt = CryptoJS.AES.decrypt(objString, password, { format: JsonFormatter }); - return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt)); - } catch (e) { - return false; - } -} - -/** - * Encrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} string A string to be password encrypted - * @return {string} Encrypted string - */ -function encryptStrHash(password, string) { - assertTypes$1.isStringWithValue(password); - assertTypes$1.isString(string); - - const encrypt = CryptoJS.AES.encrypt(string, password).toString(); - return encrypt; -} - -/** - * Decrypt a string using a password string - * - * @param {string} password A password to encrypt the object with - * @param {string} encryptedString A string to decrypt - * @return {string} Decrypted string - */ -function decryptStrHash(password, encryptedString) { - assertTypes$1.isStringWithValue(password); - assertTypes$1.isStringWithValue(encryptedString); - - try { - const decrypted = CryptoJS.AES.decrypt(encryptedString, password); - return CryptoJS.enc.Utf8.stringify(decrypted) === "" - ? false - : CryptoJS.enc.Utf8.stringify(decrypted); - } catch (e) { - return false; - } -} - -function buf2hex(buffer) { - return Array.prototype.map - .call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)) - .join(""); -} -function hex2buf(hexString) { - var bytes = new Uint8Array(Math.ceil(hexString.length / 2)); - for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hexString.substr(i * 2, 2), 16); - return bytes; -} -function str2buf(string) { - var buf = new Buffer.from(string); - return new Uint8Array(buf); -} -function concatUint8Arrays(array1, array2) { - var arr = new Uint8Array(array1.length + array2.length); - arr.set(array1); - arr.set(array2, array1.length); - return arr; -} -function ab2str(buf) { - return String.fromCharCode.apply(null, new Uint8Array(buf)); -} -function str2ab(str) { - var buf = new ArrayBuffer(str.length); - var bufView = new Uint8Array(buf); - for (var i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); - } - return buf; -} -function str2hex(str) { - var hex = ""; - for (var i = 0; i < str.length; i++) { - hex += "" + str.charCodeAt(i).toString(16); - } - return hex; -} -function hex2str(hexx) { - var hex = hexx.toString(); //force conversion - var str = ""; - for (var i = 0; i < hex.length && hex.substr(i, 2) !== "00"; i += 2) - str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); - return str; -} -function randomString(length) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (var i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -} -function isStringHex(string = "") { - let hexRegEx = /([0-9]|[a-f])/gim; - return typeof string === "string" && (string.match(hexRegEx) || []).length === string.length; -} - -function isLamdenKey(string) { - if (validateTypes$5.isStringHex(string) && string.length === 64) return true; - return false; -} - -var utils$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - encryptObject: encryptObject, - decryptObject: decryptObject, - encryptStrHash: encryptStrHash, - decryptStrHash: decryptStrHash, - buf2hex: buf2hex, - hex2buf: hex2buf, - str2buf: str2buf, - concatUint8Arrays: concatUint8Arrays, - ab2str: ab2str, - str2ab: str2ab, - str2hex: str2hex, - hex2str: hex2str, - randomString: randomString, - isStringHex: isStringHex, - isLamdenKey: isLamdenKey -}); - -var naclFast$1 = {exports: {}}; - -var _nodeResolve_empty = {}; - -var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': _nodeResolve_empty -}); - -var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); - -(function (module) { -(function(nacl) { - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var 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 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - for (var i = 0; i < arguments.length; i++) { - if (!(arguments[i] instanceof Uint8Array)) - throw new TypeError('unexpected type, use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return null; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof commonjsRequire !== 'undefined') { - // Node.js. - crypto = require$$0$1; - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(module.exports ? module.exports : (self.nacl = self.nacl || {})); -}(naclFast$1)); - -var nacl = naclFast$1.exports; - -var bip39_browser = {exports: {}}; - -(function (module, exports) { -(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u="function"==typeof commonjsRequire&&commonjsRequire,i=0;i 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4); - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - - var curByte = 0; - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen; - - var i; - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = (tmp >> 16) & 0xFF; - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ); - } - - return parts.join('') -} - -},{}],2:[function(require,module,exports){ - -},{}],3:[function(require,module,exports){ -(function (Buffer){(function (){ - -var base64 = require('base64-js'); -var ieee754 = require('ieee754'); - -exports.Buffer = Buffer; -exports.SlowBuffer = SlowBuffer; -exports.INSPECT_MAX_BYTES = 50; - -var K_MAX_LENGTH = 0x7fffffff; -exports.kMaxLength = K_MAX_LENGTH; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ); -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1); - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }; - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}); - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}); - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length); - buf.__proto__ = Buffer.prototype; - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }); -} - -Buffer.poolSize = 8192; // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf(); - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value); - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -}; - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype; -Buffer.__proto__ = Uint8Array; - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -}; - -function allocUnsafe (size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -}; - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0; - var buf = createBuffer(length); - - var actual = buf.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual); - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - var buf = createBuffer(length); - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf; - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array); - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } - - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype; - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0; - var buf = createBuffer(len); - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len); - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0; - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -}; - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf); - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer -}; - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length; - var mustMatch = (arguments.length > 2 && arguments[2] === true); - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer.byteLength = byteLength; - -function slowToString (encoding, start, end) { - var loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true; - -function swap (b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer.prototype.toString = function toString () { - var length = this.length; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer.prototype.toLocaleString = Buffer.prototype.toString; - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -}; - -Buffer.prototype.inspect = function inspect () { - var str = ''; - var max = exports.INSPECT_MAX_BYTES; - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); - if (this.length > max) str += ' ... '; - return '' -}; - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength); - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i; - if (dir) { - var foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - var found = true; - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - var strLen = string.length; - - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0; - if (isFinite(length)) { - length = length >>> 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - - var i = start; - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = ''; - var i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - var newBuf = this.subarray(start, end); - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype; - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, true, 23, 4) -}; - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754.read(this, offset, false, 23, 4) -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, true, 52, 8) -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754.read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - return offset + 4 -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - ieee754.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - ieee754.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end); - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0); - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code; - } - } - } else if (typeof val === 'number') { - val = val & 255; - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - var i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding); - var len = bytes.length; - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0]; - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo; - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -}).call(this);}).call(this,require("buffer").Buffer); -},{"base64-js":1,"buffer":3,"ieee754":5}],4:[function(require,module,exports){ - -var R = typeof Reflect === 'object' ? Reflect : null; -var ReflectApply = R && typeof R.apply === 'function' - ? R.apply - : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - -var ReflectOwnKeys; -if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys; -} else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target) - .concat(Object.getOwnPropertySymbols(target)); - }; -} else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; -} - -function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); -} - -var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; -}; - -function EventEmitter() { - EventEmitter.init.call(this); -} -module.exports = EventEmitter; -module.exports.once = once; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._eventsCount = 0; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -var defaultMaxListeners = 10; - -function checkListener(listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } -} - -Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - defaultMaxListeners = arg; - } -}); - -EventEmitter.init = function() { - - if (this._events === undefined || - this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - this._maxListeners = n; - return this; -}; - -function _getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); -}; - -EventEmitter.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = (type === 'error'); - - var events = this._events; - if (events !== undefined) - doError = (doError && events.error === undefined); - else if (!doError) - return false; - - // If there is no 'error' event listener then throw. - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } - // At least give some kind of context to the user - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - - if (handler === undefined) - return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - checkListener(listener); - - events = target._events; - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = - prepend ? [listener, existing] : [existing, listener]; - // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - - // Check for listener leak - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + String(type) + ' listeners ' + - 'added. Use emitter.setMaxListeners() to ' + - 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - -function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } -} - -function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; -} - -EventEmitter.prototype.once = function once(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - -// Emits a 'removeListener' event if and only if the listener was removed. -EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - checkListener(listener); - - events = this._events; - if (events === undefined) - return this; - - list = events[type]; - if (list === undefined) - return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - - if (list.length === 1) - events[type] = list[0]; - - if (events.removeListener !== undefined) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - -EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; - if (events === undefined) - return this; - - // not listening for removeListener, no need to emit - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; - }; - -function _listeners(target, type, unwrap) { - var events = target._events; - - if (events === undefined) - return []; - - var evlistener = events[type]; - if (evlistener === undefined) - return []; - - if (typeof evlistener === 'function') - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - - return unwrap ? - unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); -} - -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; - -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); -}; - -EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } -}; - -EventEmitter.prototype.listenerCount = listenerCount; -function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; -}; - -function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; -} - -function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; -} - -function once(emitter, name) { - return new Promise(function (resolve, reject) { - function errorListener(err) { - emitter.removeListener(name, resolver); - reject(err); - } - - function resolver() { - if (typeof emitter.removeListener === 'function') { - emitter.removeListener('error', errorListener); - } - resolve([].slice.call(arguments)); - } - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== 'error') { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); -} - -function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === 'function') { - eventTargetAgnosticAddListener(emitter, 'error', handler, flags); - } -} - -function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === 'function') { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === 'function') { - // EventTarget does not have `error` event semantics like Node - // EventEmitters, we do not listen for `error` events here. - emitter.addEventListener(name, function wrapListener(arg) { - // IE does not have builtin `{ once: true }` support so we - // have to do it manually. - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } -} - -},{}],5:[function(require,module,exports){ +var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t}function n(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var i={exports:{}};!function(e){class t{constructor(){}getType(e){return Object.prototype.toString.call(e)}getClassName(e){try{return e.constructor.name}catch(e){}return this.getType(e)}isObject(e){return"[object Object]"===this.getType(e)}isFunction(e){return"[object Function]"===this.getType(e)}isString(e){return"[object String]"===this.getType(e)}isBoolean(e){return"[object Boolean]"===this.getType(e)}isArray(e){return"[object Array]"===this.getType(e)}isNumber(e){return"[object Number]"===this.getType(e)}isInteger(e){return!("[object Number]"!==this.getType(e)||!Number.isInteger(e))}isRegEx(e){return"[object RegExp]"===this.getType(e)}isStringHex(e){if(!this.isStringWithValue(e))return!1;let t=/([0-9]|[a-f])/gim;return(e.match(t)||[]).length===e.length}hasKeys(e,t){return!t.map((t=>t in e)).includes(!1)}isStringWithValue(e){return!(!this.isString(e)||""===e)}isObjectWithKeys(e){return!!(this.isObject(e)&&Object.keys(e).length>0)}isArrayWithValues(e){return!!(this.isArray(e)&&e.length>0)}isSpecificClass(e,t){return!!this.isObject(e)&&this.getClassName(e)===t}}class r{constructor(){this.validate=new t}isObject(e){if(!this.validate.isObject(e))throw new TypeError(`Expected type [object Object] but got ${this.validate.getType(e)}`);return!0}isFunction(e){if(!this.validate.isFunction(e))throw new TypeError(`Expected type [object Function] but got ${this.validate.getType(e)}`);return!0}isString(e){if(!this.validate.isString(e))throw new TypeError(`Expected type [object String] but got ${this.validate.getType(e)}`);return!0}isBoolean(e){if(!this.validate.isBoolean(e))throw new TypeError(`Expected type [object Boolean] but got ${this.validate.getType(e)}`);return!0}isArray(e){if(!this.validate.isArray(e))throw new TypeError(`Expected type [object Array] but got ${this.validate.getType(e)}`);return!0}isNumber(e){if(!this.validate.isNumber(e))throw new TypeError(`Expected type [object Number] but got ${this.validate.getType(e)}`);return!0}isInteger(e){if(!this.validate.isInteger(e))throw new TypeError(`Expected "${e}" to be an integer but got non-integer value`);return!0}isRegEx(e){if(!this.validate.isRegEx(e))throw new TypeError(`Expected type [object RegExp] but got ${this.validate.getType(e)}`);return!0}isStringHex(e){if(!this.validate.isStringHex(e))throw new TypeError(`Expected "${e}" to be hex but got non-hex value`);return!0}hasKeys(e,t){if(!this.validate.hasKeys(e,t))throw new TypeError(`Provided object does not contain all keys ${JSON.stringify(t)}`);return!0}isStringWithValue(e){if(!this.validate.isStringWithValue(e))throw new TypeError(`Expected "${e}" to be [object String] and not empty`);return!0}isObjectWithKeys(e){if(!this.validate.isObjectWithKeys(e))throw new TypeError(`Expected "${e}" to be [object Object] and have keys`);return!0}isArrayWithValues(e){if(!this.validate.isArrayWithValues(e))throw new TypeError(`Expected "${e}" to be [object Array] and not empty`);return!0}isSpecificClass(e,t){if(!this.validate.isSpecificClass(e,t))throw new TypeError(`Expected Object Class to be "${t}" but got ${this.validate.getClassName(e)}`);return!0}}const n=new t,i=new r;e.assertTypes=i,e.validateTypes=n,Object.defineProperty(e,"__esModule",{value:!0})}(i.exports);var o=t(i.exports),a={},s={},u=u||function(e,t){var r={},n=r.lib={},i=n.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var r=new e;return t&&r.mixIn(t),r.hasOwnProperty("init")||(r.init=function(){r.$super.init.apply(this,arguments)}),r.init.prototype=r,r.$super=this,r},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=n.WordArray=i.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||s).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,i=e.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;t[n+o>>>2]|=a<<24-(n+o)%4*8}else if(r.length>65535)for(o=0;o>>2]=r[o>>>2];else t.push.apply(t,r);return this.sigBytes+=i,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var r=[],n=0;n>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new o.init(r,t/2)}},u=a.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new o.init(r,t)}},h=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},l=n.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=h.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r=this._data,n=r.words,i=r.sigBytes,a=this.blockSize,s=i/(4*a),u=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*a,h=e.min(4*u,i);if(u){for(var l=0;l>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s>>6*(3-s)&63));var u=n.charAt(64);if(u)for(;i.length%4;)i.push(u);return i.join("")},parse:function(e){var t=e.length,r=this._map,n=r.charAt(64);if(n){var i=e.indexOf(n);-1!=i&&(t=i)}for(var o=[],a=0,s=0;s>>6-s%4*2;o[a>>>2]|=(u|h)<<24-a%4*8,a++}return l.create(o,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};var c=s.CryptoJS;!function(e){var t=c,r=t.lib,n=r.WordArray,i=r.Hasher,o=t.algo,a=[];!function(){for(var t=0;t<64;t++)a[t]=4294967296*e.abs(e.sin(t+1))|0}();var s=o.MD5=i.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,i=e[n];e[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,s=e[t+0],c=e[t+1],d=e[t+2],p=e[t+3],g=e[t+4],y=e[t+5],b=e[t+6],m=e[t+7],v=e[t+8],w=e[t+9],_=e[t+10],E=e[t+11],S=e[t+12],k=e[t+13],x=e[t+14],R=e[t+15],A=o[0],T=o[1],B=o[2],O=o[3];A=u(A,T,B,O,s,7,a[0]),O=u(O,A,T,B,c,12,a[1]),B=u(B,O,A,T,d,17,a[2]),T=u(T,B,O,A,p,22,a[3]),A=u(A,T,B,O,g,7,a[4]),O=u(O,A,T,B,y,12,a[5]),B=u(B,O,A,T,b,17,a[6]),T=u(T,B,O,A,m,22,a[7]),A=u(A,T,B,O,v,7,a[8]),O=u(O,A,T,B,w,12,a[9]),B=u(B,O,A,T,_,17,a[10]),T=u(T,B,O,A,E,22,a[11]),A=u(A,T,B,O,S,7,a[12]),O=u(O,A,T,B,k,12,a[13]),B=u(B,O,A,T,x,17,a[14]),A=h(A,T=u(T,B,O,A,R,22,a[15]),B,O,c,5,a[16]),O=h(O,A,T,B,b,9,a[17]),B=h(B,O,A,T,E,14,a[18]),T=h(T,B,O,A,s,20,a[19]),A=h(A,T,B,O,y,5,a[20]),O=h(O,A,T,B,_,9,a[21]),B=h(B,O,A,T,R,14,a[22]),T=h(T,B,O,A,g,20,a[23]),A=h(A,T,B,O,w,5,a[24]),O=h(O,A,T,B,x,9,a[25]),B=h(B,O,A,T,p,14,a[26]),T=h(T,B,O,A,v,20,a[27]),A=h(A,T,B,O,k,5,a[28]),O=h(O,A,T,B,d,9,a[29]),B=h(B,O,A,T,m,14,a[30]),A=l(A,T=h(T,B,O,A,S,20,a[31]),B,O,y,4,a[32]),O=l(O,A,T,B,v,11,a[33]),B=l(B,O,A,T,E,16,a[34]),T=l(T,B,O,A,x,23,a[35]),A=l(A,T,B,O,c,4,a[36]),O=l(O,A,T,B,g,11,a[37]),B=l(B,O,A,T,m,16,a[38]),T=l(T,B,O,A,_,23,a[39]),A=l(A,T,B,O,k,4,a[40]),O=l(O,A,T,B,s,11,a[41]),B=l(B,O,A,T,p,16,a[42]),T=l(T,B,O,A,b,23,a[43]),A=l(A,T,B,O,w,4,a[44]),O=l(O,A,T,B,S,11,a[45]),B=l(B,O,A,T,R,16,a[46]),A=f(A,T=l(T,B,O,A,d,23,a[47]),B,O,s,6,a[48]),O=f(O,A,T,B,m,10,a[49]),B=f(B,O,A,T,x,15,a[50]),T=f(T,B,O,A,y,21,a[51]),A=f(A,T,B,O,S,6,a[52]),O=f(O,A,T,B,p,10,a[53]),B=f(B,O,A,T,_,15,a[54]),T=f(T,B,O,A,c,21,a[55]),A=f(A,T,B,O,v,6,a[56]),O=f(O,A,T,B,R,10,a[57]),B=f(B,O,A,T,b,15,a[58]),T=f(T,B,O,A,k,21,a[59]),A=f(A,T,B,O,g,6,a[60]),O=f(O,A,T,B,E,10,a[61]),B=f(B,O,A,T,d,15,a[62]),T=f(T,B,O,A,w,21,a[63]),o[0]=o[0]+A|0,o[1]=o[1]+T|0,o[2]=o[2]+B|0,o[3]=o[3]+O|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;r[i>>>5]|=128<<24-i%32;var o=e.floor(n/4294967296),a=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,u=s.words,h=0;h<4;h++){var l=u[h];u[h]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return s},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});function u(e,t,r,n,i,o,a){var s=e+(t&r|~t&n)+i+a;return(s<>>32-o)+t}function h(e,t,r,n,i,o,a){var s=e+(t&n|r&~n)+i+a;return(s<>>32-o)+t}function l(e,t,r,n,i,o,a){var s=e+(t^r^n)+i+a;return(s<>>32-o)+t}function f(e,t,r,n,i,o,a){var s=e+(r^(t|~n))+i+a;return(s<>>32-o)+t}t.MD5=i._createHelper(s),t.HmacMD5=i._createHmacHelper(s)}(Math);var d=s.CryptoJS;!function(){var e=d,t=e.lib,r=t.Base,n=t.WordArray,i=e.algo,o=i.MD5,a=i.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:o,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r=this.cfg,i=r.hasher.create(),o=n.create(),a=o.words,s=r.keySize,u=r.iterations;a.length>>2];e.sigBytes-=t}};r.BlockCipher=h.extend({cfg:h.cfg.extend({mode:c,padding:d}),reset:function(){h.reset.call(this);var e=this.cfg,t=e.iv,r=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{n=r.createDecryptor;this._minBufferSize=1}this._mode=n.call(r,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{t=this._process(!0);e.unpad(t)}return t},blockSize:4});var g=r.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),y=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;if(r)var n=i.create([1398893684,1701076831]).concat(r).concat(t);else n=t;return n.toString(s)},parse:function(e){var t=s.parse(e),r=t.words;if(1398893684==r[0]&&1701076831==r[1]){var n=i.create(r.slice(2,4));r.splice(0,4),t.sigBytes-=16}return g.create({ciphertext:t,salt:n})}},b=r.SerializableCipher=n.extend({cfg:n.extend({format:y}),encrypt:function(e,t,r,n){n=this.cfg.extend(n);var i=e.createEncryptor(r,n),o=i.finalize(t),a=i.cfg;return g.create({ciphertext:o,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:n.format})},decrypt:function(e,t,r,n){return n=this.cfg.extend(n),t=this._parse(t,n.format),e.createDecryptor(r,n).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),m=(t.kdf={}).OpenSSL={execute:function(e,t,r,n){n||(n=i.random(8));var o=u.create({keySize:t+r}).compute(e,n),a=i.create(o.words.slice(t),4*r);return o.sigBytes=4*t,g.create({key:o,iv:a,salt:n})}},v=r.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:m}),encrypt:function(e,t,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,e.keySize,e.ivSize);n.iv=i.iv;var o=b.encrypt.call(this,e,t,i.key,n);return o.mixIn(i),o},decrypt:function(e,t,r,n){n=this.cfg.extend(n),t=this._parse(t,n.format);var i=n.kdf.execute(r,e.keySize,e.ivSize,t.salt);return n.iv=i.iv,b.decrypt.call(this,e,t,i.key,n)}})}();var g=s.CryptoJS;!function(){var e=g,t=e.lib.BlockCipher,r=e.algo,n=[],i=[],o=[],a=[],s=[],u=[],h=[],l=[],f=[],c=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,d=0;for(t=0;t<256;t++){var p=d^d<<1^d<<2^d<<3^d<<4;p=p>>>8^255&p^99,n[r]=p,i[p]=r;var g=e[r],y=e[g],b=e[y],m=257*e[p]^16843008*p;o[r]=m<<24|m>>>8,a[r]=m<<16|m>>>16,s[r]=m<<8|m>>>24,u[r]=m;m=16843009*b^65537*y^257*g^16843008*r;h[p]=m<<24|m>>>8,l[p]=m<<16|m>>>16,f[p]=m<<8|m>>>24,c[p]=m,r?(r=g^e[e[e[b^g]]],d^=e[e[d]]):r=d=1}}();var d=[0,1,2,4,8,16,32,64,128,27,54],p=r.AES=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],a=0;a6&&a%r==4&&(s=n[s>>>24]<<24|n[s>>>16&255]<<16|n[s>>>8&255]<<8|n[255&s]):(s=n[(s=s<<8|s>>>24)>>>24]<<24|n[s>>>16&255]<<16|n[s>>>8&255]<<8|n[255&s],s^=d[a/r|0]<<24),o[a]=o[a-r]^s}for(var u=this._invKeySchedule=[],p=0;p>>24]]^l[n[s>>>16&255]]^f[n[s>>>8&255]]^c[n[255&s]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,s,u,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,h,l,f,c,i);r=e[t+1];e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,n,i,o,a,s){for(var u=this._nRounds,h=e[t]^r[0],l=e[t+1]^r[1],f=e[t+2]^r[2],c=e[t+3]^r[3],d=4,p=1;p>>24]^i[l>>>16&255]^o[f>>>8&255]^a[255&c]^r[d++],y=n[l>>>24]^i[f>>>16&255]^o[c>>>8&255]^a[255&h]^r[d++],b=n[f>>>24]^i[c>>>16&255]^o[h>>>8&255]^a[255&l]^r[d++],m=n[c>>>24]^i[h>>>16&255]^o[l>>>8&255]^a[255&f]^r[d++];h=g,l=y,f=b,c=m}g=(s[h>>>24]<<24|s[l>>>16&255]<<16|s[f>>>8&255]<<8|s[255&c])^r[d++],y=(s[l>>>24]<<24|s[f>>>16&255]<<16|s[c>>>8&255]<<8|s[255&h])^r[d++],b=(s[f>>>24]<<24|s[c>>>16&255]<<16|s[h>>>8&255]<<8|s[255&l])^r[d++],m=(s[c>>>24]<<24|s[h>>>16&255]<<16|s[l>>>8&255]<<8|s[255&f])^r[d++];e[t]=g,e[t+1]=y,e[t+2]=b,e[t+3]=m},keySize:8});e.AES=t._createHelper(p)}();var y={},b=s.CryptoJS,m={stringify:function(e){var t={ct:e.ciphertext.toString(b.enc.Base64)};return e.iv&&(t.iv=e.iv.toString()),e.salt&&(t.s=e.salt.toString()),JSON.stringify(t)},parse:function(e){var t=JSON.parse(e),r=b.lib.CipherParams.create({ciphertext:b.enc.Base64.parse(t.ct)});return t.iv&&(r.iv=b.enc.Hex.parse(t.iv)),t.s&&(r.salt=b.enc.Hex.parse(t.s)),r}};y.JsonFormatter=m;var v=s.CryptoJS,w=y.JsonFormatter;a.CryptoJS=v,a.JsonFormatter=w;const{CryptoJS:_,JsonFormatter:E}=a,{validateTypes:S,assertTypes:k}=o;function x(e,t){k.isStringWithValue(e),k.isObject(t);return _.AES.encrypt(JSON.stringify(t),e,{format:E}).toString()}function R(e,t){k.isStringWithValue(e),k.isStringWithValue(t);try{const r=_.AES.decrypt(t,e,{format:E});return JSON.parse(_.enc.Utf8.stringify(r))}catch(e){return!1}}function A(e,t){k.isStringWithValue(e),k.isString(t);return _.AES.encrypt(t,e).toString()}function T(e,t){k.isStringWithValue(e),k.isStringWithValue(t);try{const r=_.AES.decrypt(t,e);return""!==_.enc.Utf8.stringify(r)&&_.enc.Utf8.stringify(r)}catch(e){return!1}}function B(e){return Array.prototype.map.call(new Uint8Array(e),(e=>("00"+e.toString(16)).slice(-2))).join("")}function O(e){for(var t=new Uint8Array(Math.ceil(e.length/2)),r=0;r>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function F(e,t){return W(e,t,i)}function K(e,t){return r(t,32),F(e,t)}function Y(e,t,r){var i=new Uint8Array(32);return W(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+G,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=V[2*E+1]),A+=x>>>16,T+=65535&(k=V[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,G+=128,n-=128}return n}function J(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,G(i,o,t,r),r%=128,n=0;n=0;--i)Z(e,t,n=r[i/8|0]>>(7&i)&1),X(t,e),X(e,e),Z(e,t,n)}function te(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),ee(e,n,r)}function re(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),J(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,te(s,a),Q(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ne=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ie(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,t[i]-=256*r;t[i]+=r,t[n]=0}for(r=0,i=0;i<32;i++)t[i]+=r-(t[31]>>4)*ne[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ne[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function oe(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;ie(e,r)}function ae(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];J(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}(n,n),D(n,n,s),D(n,n,h),D(n,n,h),D(e[0],n,h),z(i,e[0]),D(i,i,h),j(i,s)&&D(e[0],e[0],c),z(i,e[0]),D(i,i,h),j(i,s)?-1:(I(e[0])===r[31]>>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}function ue(e,r,n,i){var o,a=new Uint8Array(32),s=new Uint8Array(64),u=[t(),t(),t(),t()],h=[t(),t(),t(),t()];if(n<64)return-1;if(se(h,i))return-1;for(o=0;o=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return re(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;r0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function l(e){var t=h(e),r=t[0],n=t[1];return 3*(r+n)/4-n}function f(e,t,r){return 3*(t+r)/4-r}function c(e){var t,r,n=h(e),a=n[0],s=n[1],u=new o(f(e,a,s)),l=0,c=s>0?a-4:a;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u}function d(e){return n[e>>18&63]+n[e>>12&63]+n[e>>6&63]+n[63&e]}function p(e,t,r){for(var n,i=[],o=t;ou?u:s+a));return 1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],2:[function(e,t,r){},{}],3:[function(e,t,r){(function(t){(function(){var t=e("base64-js"),n=e("ieee754");r.Buffer=s,r.SlowBuffer=b,r.INSPECT_MAX_BYTES=50;var i=2147483647;function o(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}function a(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=s.prototype,t}function s(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return f(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return c(e,t);if(ArrayBuffer.isView(e))return d(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(J(e,ArrayBuffer)||e&&J(e.buffer,ArrayBuffer))return p(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return s.from(n,t,r);var i=g(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return s.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e,t,r){return h(e),e<=0?a(e):void 0!==t?"string"==typeof r?a(e).fill(t,r):a(e).fill(t):a(e)}function f(e){return h(e),a(e<0?0:0|y(e))}function c(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!s.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|m(e,t),n=a(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function d(e){for(var t=e.length<0?0:0|y(e.length),r=a(t),n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function b(e){return+e!=e&&(e=0),s.alloc(+e)}function m(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||J(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Y(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return V(e).length;default:if(i)return n?-1:Y(e).length;t=(""+t).toLowerCase(),i=!0}}function v(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,r);case"utf8":case"utf-8":return O(this,t,r);case"ascii":return j(this,t,r);case"latin1":case"binary":return U(this,t,r);case"base64":return B(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function w(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function _(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),X(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=s.from(t,n)),s.isBuffer(t))return 0===t.length?-1:E(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):E(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function E(e,t,r,n,i){var o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var l=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){for(var f=!0,c=0;ci&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var a=0;a239?4:h>223?3:h>191?2:1;if(i+f<=r)switch(f){case 1:h<128&&(l=h);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&h)<<6|63&o)>127&&(l=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(u=(15&h)<<12|(63&o)<<6|63&a)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(u=(15&h)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return L(n)}r.kMaxLength=i,s.TYPED_ARRAY_SUPPORT=o(),s.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(e,t,r){return u(e,t,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(e,t,r){return l(e,t,r)},s.allocUnsafe=function(e){return f(e)},s.allocUnsafeSlow=function(e){return f(e)},s.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==s.prototype},s.compare=function(e,t){if(J(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),J(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);it&&(e+=" ... "),""},s.prototype.compare=function(e,t,r,n,i){if(J(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),u=Math.min(o,a),h=this.slice(n,i),l=e.slice(t,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return S(this,e,t,r);case"utf8":case"utf-8":return k(this,e,t,r);case"ascii":return x(this,e,t,r);case"latin1":case"binary":return R(this,e,t,r);case"base64":return A(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function L(e){var t=e.length;if(t<=M)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,i,o){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function z(e,t,r,i,o){return t=+t,r>>>=0,o||D(e,t,r,4),n.write(e,t,r,i,23,4),r+4}function q(e,t,r,i,o){return t=+t,r>>>=0,o||D(e,t,r,8),n.write(e,t,r,i,52,8),r+8}s.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},s.prototype.readUInt8=function(e,t){return e>>>=0,t||N(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||N(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||N(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||N(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||N(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},s.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||N(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},s.prototype.readInt8=function(e,t){return e>>>=0,t||N(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||N(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(e,t){e>>>=0,t||N(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||N(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||N(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return e>>>=0,t||N(e,4,this.length),n.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||N(e,4,this.length),n.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||N(e,8,this.length),n.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||N(e,8,this.length),n.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||P(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,n||P(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},s.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},s.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);P(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},s.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeFloatLE=function(e,t,r){return z(this,e,t,!0,r)},s.prototype.writeFloatBE=function(e,t,r){return z(this,e,t,!1,r)},s.prototype.writeDoubleLE=function(e,t,r){return q(this,e,t,!0,r)},s.prototype.writeDoubleBE=function(e,t,r){return q(this,e,t,!1,r)},s.prototype.copy=function(e,t,r,n){if(!s.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},s.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!s.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(e){for(var t=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function V(e){return t.toByteArray(F(e))}function G(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function J(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function X(e){return e!=e}}).call(this)}).call(this,e("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:5}],4:[function(e,t,r){var n,i="object"==typeof Reflect?Reflect:null,o=i&&"function"==typeof i.apply?i.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};function a(e){console&&console.warn&&console.warn(e)}n=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var s=Number.isNaN||function(e){return e!=e};function u(){u.init.call(this)}t.exports=u,t.exports.once=w,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var h=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function f(e){return void 0===e._maxListeners?u.defaultMaxListeners:e._maxListeners}function c(e,t,r,n){var i,o,s;if(l(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if("function"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(i=f(e))>0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=s.length,a(u)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=d.bind(n);return i.listener=r,n.wrapFn=i,i}function g(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?v(i):b(i,i.length)}function y(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function b(e,t){for(var r=new Array(t),n=0;n0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var u=i[e];if(void 0===u)return!1;if("function"==typeof u)o(u,this,t);else{var h=u.length,l=b(u,h);for(r=0;r=0;o--)if(r[o]===t||r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():m(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,a||t)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n=0;n--)this.removeListener(e,t[n]);return this},u.prototype.listeners=function(e){return g(this,e,!0)},u.prototype.rawListeners=function(e){return g(this,e,!1)},u.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):y.call(e,t)},u.prototype.listenerCount=y,u.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},{}],5:[function(e,t,r){ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -}; - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -}; - -},{}],6:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - }; -} - -},{}],7:[function(require,module,exports){ +r.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,c=r?-1:1,d=e[t+f];for(f+=c,o=d&(1<<-l)-1,d>>=-l,l+=s;l>0;o=256*o+e[t+f],f+=c,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+f],f+=c,l-=8);if(0===o)o=1-h;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=h}return(d?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,h=8*o-i-1,l=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+f>=1?c/u:c*Math.pow(2,1-f))*u>=2&&(a++,u/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,h-=8);e[r+d-p]|=128*g}},{}],6:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],7:[function(e,t,r){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))} /*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */ - -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -}; - -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} - -},{}],8:[function(require,module,exports){ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()); -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] }; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],9:[function(require,module,exports){ +t.exports=function(e){return null!=e&&(n(e)||i(e)||!!e._isBuffer)}},{}],8:[function(e,t,r){var n,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}function h(e){if(i===clearTimeout)return clearTimeout(e);if((i===s||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{return i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}}();var l,f=[],c=!1,d=-1;function p(){c&&l&&(c=!1,l.length?f=l.concat(f):d=-1,f.length&&g())}function g(){if(!c){var e=u(p);c=!0;for(var t=f.length;t;){for(l=f,f=[];++d1)for(var r=1;r */ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer'); -var Buffer = buffer.Buffer; - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype); - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size); - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -}; - -},{"buffer":3}],10:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Stream; - -var EE = require('events').EventEmitter; -var inherits = require('inherits'); - -inherits(Stream, EE); -Stream.Readable = require('readable-stream/lib/_stream_readable.js'); -Stream.Writable = require('readable-stream/lib/_stream_writable.js'); -Stream.Duplex = require('readable-stream/lib/_stream_duplex.js'); -Stream.Transform = require('readable-stream/lib/_stream_transform.js'); -Stream.PassThrough = require('readable-stream/lib/_stream_passthrough.js'); -Stream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js'); -Stream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js'); - -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; - - - -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. - -function Stream() { - EE.call(this); -} - -Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; - -},{"events":4,"inherits":6,"readable-stream/lib/_stream_duplex.js":12,"readable-stream/lib/_stream_passthrough.js":13,"readable-stream/lib/_stream_readable.js":14,"readable-stream/lib/_stream_transform.js":15,"readable-stream/lib/_stream_writable.js":16,"readable-stream/lib/internal/streams/end-of-stream.js":20,"readable-stream/lib/internal/streams/pipeline.js":22}],11:[function(require,module,exports){ - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -var codes = {}; - -function createErrorType(code, message, Base) { - if (!Base) { - Base = Error; - } - - function getMessage(arg1, arg2, arg3) { - if (typeof message === 'string') { - return message; - } else { - return message(arg1, arg2, arg3); - } - } - - var NodeError = - /*#__PURE__*/ - function (_Base) { - _inheritsLoose(NodeError, _Base); - - function NodeError(arg1, arg2, arg3) { - return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; - } - - return NodeError; - }(Base); - - NodeError.prototype.name = Base.name; - NodeError.prototype.code = code; - codes[code] = NodeError; -} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js - - -function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - expected = expected.map(function (i) { - return String(i); - }); - - if (len > 2) { - return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; - } else if (len === 2) { - return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); - } else { - return "of ".concat(thing, " ").concat(expected[0]); - } - } else { - return "of ".concat(thing, " ").concat(String(expected)); - } -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - - -function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - - -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - - return str.substring(this_len - search.length, this_len) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes - - -function includes(str, search, start) { - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; - } -} - -createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { - return 'The value "' + value + '" is invalid for option "' + name + '"'; -}, TypeError); -createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { - // determiner: 'must be' or 'must not be' - var determiner; - - if (typeof expected === 'string' && startsWith(expected, 'not ')) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } else { - determiner = 'must be'; - } - - var msg; - - if (endsWith(name, ' argument')) { - // For cases like 'first argument' - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } else { - var type = includes(name, '.') ? 'property' : 'argument'; - msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } - - msg += ". Received type ".concat(typeof actual); - return msg; -}, TypeError); -createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); -createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { - return 'The ' + name + ' method is not implemented'; -}); -createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); -createErrorType('ERR_STREAM_DESTROYED', function (name) { - return 'Cannot call ' + name + ' after a stream was destroyed'; -}); -createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); -createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); -createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); -createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); -createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { - return 'Unknown encoding: ' + arg; -}, TypeError); -createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); -module.exports.codes = codes; - -},{}],12:[function(require,module,exports){ -(function (process){(function (){ -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - - for (var key in obj) { - keys.push(key); - } - - return keys; -}; -/**/ - - -module.exports = Duplex; - -var Readable = require('./_stream_readable'); - -var Writable = require('./_stream_writable'); - -require('inherits')(Duplex, Readable); - -{ - // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); - - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); - Writable.call(this, options); - this.allowHalfOpen = true; - - if (options) { - if (options.readable === false) this.readable = false; - if (options.writable === false) this.writable = false; - - if (options.allowHalfOpen === false) { - this.allowHalfOpen = false; - this.once('end', onend); - } - } -} - -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); -Object.defineProperty(Duplex.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); -Object.defineProperty(Duplex.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); // the no-half-open enforcer - -function onend() { - // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. - - process.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); -}).call(this);}).call(this,require('_process')); -},{"./_stream_readable":14,"./_stream_writable":16,"_process":8,"inherits":6}],13:[function(require,module,exports){ - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -require('inherits')(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":15,"inherits":6}],14:[function(require,module,exports){ -(function (process,global){(function (){ - -module.exports = Readable; -/**/ - -var Duplex; -/**/ - -Readable.ReadableState = ReadableState; -/**/ - -require('events').EventEmitter; - -var EElistenerCount = function EElistenerCount(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ - - -var Stream = require('./internal/streams/stream'); -/**/ - - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} -/**/ - - -var debugUtil = require('util'); - -var debug; - -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function debug() {}; -} -/**/ - - -var BufferList = require('./internal/streams/buffer_list'); - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. - - -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; - -require('inherits')(Readable, Stream); - -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - 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 - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - - 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]]; -} - -function ReadableState(options, stream, isDuplex) { - Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - - this.sync = true; // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') - - this.autoDestroy = !!options.autoDestroy; // has it been destroyed - - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled - - this.readingMore = false; - this.decoder = null; - this.encoding = null; - - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; - this._readableState = new ReadableState(options, this, isDuplex); // legacy - - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined) { - return false; - } - - return this._readableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - } -}); -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; - -Readable.prototype._destroy = function (err, cb) { - cb(err); -}; // Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. - - -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - - -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - debug('readableAddChunk', chunk); - var state = stream._readableState; - - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - - if (er) { - errorOrDestroy(stream, er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed) { - return false; - } else { - state.reading = false; - - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - maybeReadMore(stream, state); - } - } // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. - - - return !state.ended && (state.length < state.highWaterMark || state.length === 0); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - state.awaitDrain = 0; - stream.emit('data', chunk); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); - } - - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); - } - - return er; -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; // backwards compatibility. - - -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 - - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: - - var p = this._readableState.buffer.head; - var content = ''; - - while (p !== null) { - content += decoder.write(p.data); - p = p.next; - } - - this._readableState.buffer.clear(); - - if (content !== '') this._readableState.buffer.push(content); - this._readableState.length = content.length; - return this; -}; // Don't raise the hwm > 1GB - - -var MAX_HWM = 0x40000000; - -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - - if (!state.ended) { - state.needReadable = true; - return 0; - } - - return state.length; -} // you can override either this method, or the async _read(n) below. - - -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - - - var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some - - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - - - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - - this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - n = 0; - } else { - state.length -= n; - state.awaitDrain = 0; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. - - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - return ret; -}; - -function onEofChunk(stream, state) { - debug('onEofChunk'); - if (state.ended) return; - - if (state.decoder) { - var chunk = state.decoder.end(); - - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - - state.ended = true; - - if (state.sync) { - // if we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call - emitReadable(stream); - } else { - // emit 'readable' now to make sure it gets picked up. - state.needReadable = false; - - if (!state.emittedReadable) { - state.emittedReadable = true; - emitReadable_(stream); - } - } -} // Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. - - -function emitReadable(stream) { - var state = stream._readableState; - debug('emitReadable', state.needReadable, state.emittedReadable); - state.needReadable = false; - - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - process.nextTick(emitReadable_, stream); - } -} - -function emitReadable_(stream) { - var state = stream._readableState; - debug('emitReadable_', state.destroyed, state.length, state.ended); - - if (!state.destroyed && (state.length || state.ended)) { - stream.emit('readable'); - state.emittedReadable = false; - } // The stream needs another readable event if - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. - - - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; - flow(stream); -} // at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. - - -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. - break; - } - - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. - - -Readable.prototype._read = function (n) { - errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - - case 1: - state.pipes = [state.pipes, dest]; - break; - - default: - state.pipes.push(dest); - break; - } - - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); - dest.on('unpipe', onunpipe); - - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - - - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - var cleanedUp = false; - - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - src.on('data', ondata); - - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - debug('dest.write', ret); - - if (ret === false) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', state.awaitDrain); - state.awaitDrain++; - } - - src.pause(); - } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - - - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. - - - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. - - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - - dest.once('close', onclose); - - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } // tell the dest that it's being piped to - - - dest.emit('pipe', src); // start the flow if it hasn't been started already. - - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function pipeOnDrainFunctionResult() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { - hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. - - if (state.pipesCount === 0) return this; // just one destination. most common case. - - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. - - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } // slow case. multiple pipe destinations. - - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - } - - return this; - } // try to find the right one. - - - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - - -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; - - if (ev === 'data') { - // update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused - - if (state.flowing !== false) this.resume(); - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - debug('on readable', state.length, state.reading); - - if (state.length) { - emitReadable(this); - } else if (!state.reading) { - process.nextTick(nReadingNextTick, this); - } - } - } - - return res; -}; - -Readable.prototype.addListener = Readable.prototype.on; - -Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); - - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - - return res; -}; - -Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); - - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - - return res; -}; - -function updateReadableListening(self) { - var state = self._readableState; - state.readableListening = self.listenerCount('readable') > 0; - - if (state.resumeScheduled && !state.paused) { - // flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume - } else if (self.listenerCount('data') > 0) { - self.resume(); - } -} - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - - -Readable.prototype.resume = function () { - var state = this._readableState; - - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening - // for readable, but we still have to call - // resume() - - state.flowing = !state.readableListening; - resume(this, state); - } - - state.paused = false; - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - debug('resume', state.reading); - - if (!state.reading) { - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - - if (this._readableState.flowing !== false) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - - this._readableState.paused = true; - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - - while (state.flowing && stream.read() !== null) { - } -} // wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. - - -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - stream.on('end', function () { - debug('wrapped end'); - - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - - if (!ret) { - paused = true; - stream.pause(); - } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. - - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function methodWrap(method) { - return function methodWrapReturnFunction() { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } // proxy certain important events. - - - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - - - this._read = function (n) { - debug('wrapped _read', n); - - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -if (typeof Symbol === 'function') { - Readable.prototype[Symbol.asyncIterator] = function () { - if (createReadableStreamAsyncIterator === undefined) { - createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); - } - - return createReadableStreamAsyncIterator(this); - }; -} - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.highWaterMark; - } -}); -Object.defineProperty(Readable.prototype, 'readableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState && this._readableState.buffer; - } -}); -Object.defineProperty(Readable.prototype, 'readableFlowing', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.flowing; - }, - set: function set(state) { - if (this._readableState) { - this._readableState.flowing = state; - } - } -}); // exposed for testing purposes only. - -Readable._fromList = fromList; -Object.defineProperty(Readable.prototype, 'readableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.length; - } -}); // Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = state.buffer.consume(n, state.decoder); - } - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - debug('endReadable', state.endEmitted); - - if (!state.endEmitted) { - state.ended = true; - process.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. - - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; - - if (!wState || wState.autoDestroy && wState.finished) { - stream.destroy(); - } - } - } -} - -if (typeof Symbol === 'function') { - Readable.from = function (iterable, opts) { - if (from === undefined) { - from = require('./internal/streams/from'); - } - - return from(Readable, iterable, opts); - }; -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - - return -1; -} -}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{"../errors":11,"./_stream_duplex":12,"./internal/streams/async_iterator":17,"./internal/streams/buffer_list":18,"./internal/streams/destroy":19,"./internal/streams/from":21,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"events":4,"inherits":6,"string_decoder/":25,"util":2}],15:[function(require,module,exports){ - -module.exports = Transform; - -var _require$codes = require('../errors').codes, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; - -var Duplex = require('./_stream_duplex'); - -require('inherits')(Transform, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - var cb = ts.writecb; - - if (cb === null) { - return this.emit('error', new ERR_MULTIPLE_CALLBACK()); - } - - ts.writechunk = null; - ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); - var rs = this._readableState; - rs.reading = false; - - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; // start out asking for a readable event once data is transformed. - - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - - - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. - - -Transform.prototype._transform = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; // Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. - - -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && !ts.transforming) { - ts.transforming = true; - - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); - if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); - return stream.push(null); -} -},{"../errors":11,"./_stream_duplex":12,"inherits":6}],16:[function(require,module,exports){ -(function (process,global){(function (){ - -module.exports = Writable; -// there will be only 2 of these for each stream - - -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ - - -var Duplex; -/**/ - -Writable.WritableState = WritableState; -/**/ - -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ - -var Stream = require('./internal/streams/stream'); -/**/ - - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; - -var errorOrDestroy = destroyImpl.errorOrDestroy; - -require('inherits')(Writable, Stream); - -function nop() {} - -function WritableState(options, stream, isDuplex) { - Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream - // contains buffers or objects. - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - - this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called - - this.finalCalled = false; // drain event flag. - - this.needDrain = false; // at the start of calling end() - - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - - this.length = 0; // a flag to see when we're in the middle of a write. - - this.writing = false; // when true all writes will be buffered until .uncork() call - - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - - this.sync = true; // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - - this.onwrite = function (er) { - onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - - - this.writecb = null; // the amount that is being written when _write is called. - - this.writelen = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - - this.prefinished = false; // True if the error was already emitted and should not be thrown again - - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') - - this.autoDestroy = !!options.autoDestroy; // count buffered requests - - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - - while (current) { - out.push(current); - current = current.next; - } - - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function writableStateBufferGetter() { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - - -var realHasInstance; - -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function value(object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function realHasInstance(object) { - return object instanceof this; - }; -} - -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; - if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. - - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; - } - - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - - -Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); -}; - -function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - - errorOrDestroy(stream, er); - process.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. - - -function validChunk(stream, state, chunk, cb) { - var er; - - if (chunk === null) { - er = new ERR_STREAM_NULL_VALUES(); - } else if (typeof chunk !== 'string' && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); - } - - if (er) { - errorOrDestroy(stream, er); - process.nextTick(cb, er); - return false; - } - - return true; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - return ret; -}; - -Writable.prototype.cork = function () { - this._writableState.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - 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); - this._writableState.defaultEncoding = encoding; - return this; -}; - -Object.defineProperty(Writable.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); // if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. - -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - - var len = state.objectMode ? 1 : chunk.length; - state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - 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); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - process.nextTick(cb, er); // this can emit finish, and it will always happen - // after error - - process.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); // this can emit finish, but finish must - // always follow error - - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); - onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state) || stream.destroyed; - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(afterWrite, stream, state, finished, cb); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. - - -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} // if there's something in the buffer waiting, then process it - - -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - var count = 0; - var allBuffers = true; - - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - - state.pendingcb++; - state.lastBufferedRequest = null; - - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - - if (state.corked) { - state.corked = 1; - this.uncork(); - } // ignore unnecessary end() calls. - - - if (!state.ending) endWritable(this, state, cb); - return this; -}; - -Object.defineProperty(Writable.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - - if (err) { - errorOrDestroy(stream, err); - } - - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} - -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.pendingcb++; - state.finalCalled = true; - process.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - - if (need) { - prefinish(stream, state); - - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; - - if (!rState || rState.autoDestroy && rState.endEmitted) { - stream.destroy(); - } - } - } - } - - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - - if (cb) { - if (state.finished) process.nextTick(cb);else stream.once('finish', cb); - } - - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } // reuse the free corkReq. - - - state.corkedRequestsFree.next = corkReq; -} - -Object.defineProperty(Writable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._writableState === undefined) { - return false; - } - - return this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._writableState.destroyed = value; - } -}); -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; - -Writable.prototype._destroy = function (err, cb) { - cb(err); -}; -}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{"../errors":11,"./_stream_duplex":12,"./internal/streams/destroy":19,"./internal/streams/state":23,"./internal/streams/stream":24,"_process":8,"buffer":3,"inherits":6,"util-deprecate":26}],17:[function(require,module,exports){ -(function (process){(function (){ - -var _Object$setPrototypeO; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var finished = require('./end-of-stream'); - -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); - -function createIterResult(value, done) { - return { - value: value, - done: done - }; -} - -function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - - if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null - // we can be expecting either 'end' or - // 'error' - - if (data !== null) { - iter[kLastPromise] = null; - iter[kLastResolve] = null; - iter[kLastReject] = null; - resolve(createIterResult(data, false)); - } - } -} - -function onReadable(iter) { - // we wait for the next tick, because it might - // emit an error with process.nextTick - process.nextTick(readAndResolve, iter); -} - -function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { - if (iter[kEnded]) { - resolve(createIterResult(undefined, true)); - return; - } - - iter[kHandlePromise](resolve, reject); - }, reject); - }; -} - -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { - get stream() { - return this[kStream]; - }, - - next: function next() { - var _this = this; - - // if we have detected an error in the meanwhile - // reject straight away - var error = this[kError]; - - if (error !== null) { - return Promise.reject(error); - } - - if (this[kEnded]) { - return Promise.resolve(createIterResult(undefined, true)); - } - - if (this[kStream].destroyed) { - // We need to defer via nextTick because if .destroy(err) is - // called, the error will be emitted via nextTick, and - // we cannot guarantee that there is no error lingering around - // waiting to be emitted. - return new Promise(function (resolve, reject) { - process.nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); - } else { - resolve(createIterResult(undefined, true)); - } - }); - }); - } // if we have multiple next() calls - // we will wait for the previous Promise to finish - // this logic is optimized to support for await loops, - // where next() is only called once at a time - - - var lastPromise = this[kLastPromise]; - var promise; - - if (lastPromise) { - promise = new Promise(wrapForNext(lastPromise, this)); - } else { - // fast path needed to support multiple this.push() - // without triggering the next() queue - var data = this[kStream].read(); - - if (data !== null) { - return Promise.resolve(createIterResult(data, false)); - } - - promise = new Promise(this[kHandlePromise]); - } - - this[kLastPromise] = promise; - return promise; - } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; - - // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } - - resolve(createIterResult(undefined, true)); - }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } - }, - writable: true - }), _Object$create)); - iterator[kLastPromise] = null; - finished(stream, function (err) { - if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise - // returned by next() and store the error - - if (reject !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - reject(err); - } - - iterator[kError] = err; - return; - } - - var resolve = iterator[kLastResolve]; - - if (resolve !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(undefined, true)); - } - - iterator[kEnded] = true; - }); - stream.on('readable', onReadable.bind(null, iterator)); - return iterator; -}; - -module.exports = createReadableStreamAsyncIterator; -}).call(this);}).call(this,require('_process')); -},{"./end-of-stream":20,"_process":8}],18:[function(require,module,exports){ - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var _require = require('buffer'), - Buffer = _require.Buffer; - -var _require2 = require('util'), - inspect = _require2.inspect; - -var custom = inspect && inspect.custom || 'inspect'; - -function copyBuffer(src, target, offset) { - Buffer.prototype.copy.call(src, target, offset); -} - -module.exports = -/*#__PURE__*/ -function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; - } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } - - return ret; - } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); - } - }]); - - return BufferList; -}(); -},{"buffer":3,"util":2}],19:[function(require,module,exports){ -(function (process){(function (){ - -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err) { - if (!this._writableState) { - process.nextTick(emitErrorNT, this, err); - } else if (!this._writableState.errorEmitted) { - this._writableState.errorEmitted = true; - process.nextTick(emitErrorNT, this, err); - } - } - - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - - if (this._readableState) { - this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - - - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - if (!_this._writableState) { - process.nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - process.nextTick(emitErrorAndCloseNT, _this, err); - } else { - process.nextTick(emitCloseNT, _this); - } - } else if (cb) { - process.nextTick(emitCloseNT, _this); - cb(err); - } else { - process.nextTick(emitCloseNT, _this); - } - }); - - return this; -} - -function emitErrorAndCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); -} - -function emitCloseNT(self) { - if (self._writableState && !self._writableState.emitClose) return; - if (self._readableState && !self._readableState.emitClose) return; - self.emit('close'); -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finalCalled = false; - this._writableState.prefinished = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -function errorOrDestroy(stream, err) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; - if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); -} - -module.exports = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy -}; -}).call(this);}).call(this,require('_process')); -},{"_process":8}],20:[function(require,module,exports){ - -var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; - -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - callback.apply(this, args); - }; -} - -function noop() {} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function eos(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - callback = once(callback || noop); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; - - var onlegacyfinish = function onlegacyfinish() { - if (!stream.writable) onfinish(); - }; - - var writableEnded = stream._writableState && stream._writableState.finished; - - var onfinish = function onfinish() { - writable = false; - writableEnded = true; - if (!readable) callback.call(stream); - }; - - var readableEnded = stream._readableState && stream._readableState.endEmitted; - - var onend = function onend() { - readable = false; - readableEnded = true; - if (!writable) callback.call(stream); - }; - - var onerror = function onerror(err) { - callback.call(stream, err); - }; - - var onclose = function onclose() { - var err; - - if (readable && !readableEnded) { - if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - - if (writable && !writableEnded) { - if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - }; - - var onrequest = function onrequest() { - stream.req.on('finish', onfinish); - }; - - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest();else stream.on('request', onrequest); - } else if (writable && !stream._writableState) { - // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - return function () { - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -} - -module.exports = eos; -},{"../../../errors":11}],21:[function(require,module,exports){ -module.exports = function () { - throw new Error('Readable.from is not available in the browser') -}; - -},{}],22:[function(require,module,exports){ - -var eos; - -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - callback.apply(void 0, arguments); - }; -} - -var _require$codes = require('../../../errors').codes, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; - -function noop(err) { - // Rethrow the error if it exists to avoid swallowing it - if (err) throw err; -} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function destroyer(stream, reading, writing, callback) { - callback = once(callback); - var closed = false; - stream.on('close', function () { - closed = true; - }); - if (eos === undefined) eos = require('./end-of-stream'); - eos(stream, { - readable: reading, - writable: writing - }, function (err) { - if (err) return callback(err); - closed = true; - callback(); - }); - var destroyed = false; - return function (err) { - if (closed) return; - if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want - - if (isRequest(stream)) return stream.abort(); - if (typeof stream.destroy === 'function') return stream.destroy(); - callback(err || new ERR_STREAM_DESTROYED('pipe')); - }; -} - -function call(fn) { - fn(); -} - -function pipe(from, to) { - return from.pipe(to); -} - -function popCallback(streams) { - if (!streams.length) return noop; - if (typeof streams[streams.length - 1] !== 'function') return noop; - return streams.pop(); -} - -function pipeline() { - for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { - streams[_key] = arguments[_key]; - } - - var callback = popCallback(streams); - if (Array.isArray(streams[0])) streams = streams[0]; - - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams'); - } - - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err; - if (err) destroys.forEach(call); - if (reading) return; - destroys.forEach(call); - callback(error); - }); - }); - return streams.reduce(pipe); -} - -module.exports = pipeline; -},{"../../../errors":11,"./end-of-stream":20}],23:[function(require,module,exports){ - -var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; - -function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; -} - -function getHighWaterMark(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - - if (hwm != null) { - if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; - throw new ERR_INVALID_OPT_VALUE(name, hwm); - } - - return Math.floor(hwm); - } // Default value - - - return state.objectMode ? 16 : 16 * 1024; -} - -module.exports = { - getHighWaterMark: getHighWaterMark -}; -},{"../../../errors":11}],24:[function(require,module,exports){ -module.exports = require('events').EventEmitter; - -},{"events":4}],25:[function(require,module,exports){ - -/**/ - -var Buffer = require('safe-buffer').Buffer; -/**/ - -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -} -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} - -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - 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; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} -},{"safe-buffer":9}],26:[function(require,module,exports){ -(function (global){(function (){ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -}).call(this);}).call(this,typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{}],27:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer; -var Transform = require('stream').Transform; -var StringDecoder = require('string_decoder').StringDecoder; -var inherits = require('inherits'); - -function CipherBase (hashMode) { - Transform.call(this); - this.hashMode = typeof hashMode === 'string'; - if (this.hashMode) { - this[hashMode] = this._finalOrDigest; - } else { - this.final = this._finalOrDigest; - } - if (this._final) { - this.__final = this._final; - this._final = null; - } - this._decoder = null; - this._encoding = null; -} -inherits(CipherBase, Transform); - -CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - if (typeof data === 'string') { - data = Buffer.from(data, inputEnc); - } - - var outData = this._update(data); - if (this.hashMode) return this - - if (outputEnc) { - outData = this._toString(outData, outputEnc); - } - - return outData -}; - -CipherBase.prototype.setAutoPadding = function () {}; -CipherBase.prototype.getAuthTag = function () { - throw new Error('trying to get auth tag in unsupported state') -}; - -CipherBase.prototype.setAuthTag = function () { - throw new Error('trying to set auth tag in unsupported state') -}; - -CipherBase.prototype.setAAD = function () { - throw new Error('trying to set aad in unsupported state') -}; - -CipherBase.prototype._transform = function (data, _, next) { - var err; - try { - if (this.hashMode) { - this._update(data); - } else { - this.push(this._update(data)); - } - } catch (e) { - err = e; - } finally { - next(err); - } -}; -CipherBase.prototype._flush = function (done) { - var err; - try { - this.push(this.__final()); - } catch (e) { - err = e; - } - - done(err); -}; -CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer.alloc(0); - if (outputEnc) { - outData = this._toString(outData, outputEnc, true); - } - return outData -}; - -CipherBase.prototype._toString = function (value, enc, fin) { - if (!this._decoder) { - this._decoder = new StringDecoder(enc); - this._encoding = enc; - } - - if (this._encoding !== enc) throw new Error('can\'t switch encodings') - - var out = this._decoder.write(value); - if (fin) { - out += this._decoder.end(); - } - - return out -}; - -module.exports = CipherBase; - -},{"inherits":31,"safe-buffer":40,"stream":10,"string_decoder":25}],28:[function(require,module,exports){ -var inherits = require('inherits'); -var MD5 = require('md5.js'); -var RIPEMD160 = require('ripemd160'); -var sha = require('sha.js'); -var Base = require('cipher-base'); - -function Hash (hash) { - Base.call(this, 'digest'); - - this._hash = hash; -} - -inherits(Hash, Base); - -Hash.prototype._update = function (data) { - this._hash.update(data); -}; - -Hash.prototype._final = function () { - return this._hash.digest() -}; - -module.exports = function createHash (alg) { - alg = alg.toLowerCase(); - if (alg === 'md5') return new MD5() - if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() - - return new Hash(sha(alg)) -}; - -},{"cipher-base":27,"inherits":31,"md5.js":32,"ripemd160":39,"sha.js":42}],29:[function(require,module,exports){ -var MD5 = require('md5.js'); - -module.exports = function (buffer) { - return new MD5().update(buffer).digest() -}; - -},{"md5.js":32}],30:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer; -var Transform = require('stream').Transform; -var inherits = require('inherits'); - -function throwIfNotStringOrBuffer (val, prefix) { - if (!Buffer.isBuffer(val) && typeof val !== 'string') { - throw new TypeError(prefix + ' must be a string or a buffer') - } -} - -function HashBase (blockSize) { - Transform.call(this); - - this._block = Buffer.allocUnsafe(blockSize); - this._blockSize = blockSize; - this._blockOffset = 0; - this._length = [0, 0, 0, 0]; - - this._finalized = false; -} - -inherits(HashBase, Transform); - -HashBase.prototype._transform = function (chunk, encoding, callback) { - var error = null; - try { - this.update(chunk, encoding); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase.prototype._flush = function (callback) { - var error = null; - try { - this.push(this.digest()); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase.prototype.update = function (data, encoding) { - throwIfNotStringOrBuffer(data, 'Data'); - if (this._finalized) throw new Error('Digest already called') - if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); - - // consume data - var block = this._block; - var offset = 0; - while (this._blockOffset + data.length - offset >= this._blockSize) { - for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]; - this._update(); - this._blockOffset = 0; - } - while (offset < data.length) block[this._blockOffset++] = data[offset++]; - - // update length - for (var j = 0, carry = data.length * 8; carry > 0; ++j) { - this._length[j] += carry; - carry = (this._length[j] / 0x0100000000) | 0; - if (carry > 0) this._length[j] -= 0x0100000000 * carry; - } - - return this -}; - -HashBase.prototype._update = function () { - throw new Error('_update is not implemented') -}; - -HashBase.prototype.digest = function (encoding) { - if (this._finalized) throw new Error('Digest already called') - this._finalized = true; - - var digest = this._digest(); - if (encoding !== undefined) digest = digest.toString(encoding); - - // reset state - this._block.fill(0); - this._blockOffset = 0; - for (var i = 0; i < 4; ++i) this._length[i] = 0; - - return digest -}; - -HashBase.prototype._digest = function () { - throw new Error('_digest is not implemented') -}; - -module.exports = HashBase; - -},{"inherits":31,"safe-buffer":40,"stream":10}],31:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - }; -} - -},{}],32:[function(require,module,exports){ -var inherits = require('inherits'); -var HashBase = require('hash-base'); -var Buffer = require('safe-buffer').Buffer; - -var ARRAY16 = new Array(16); - -function MD5 () { - HashBase.call(this, 64); - - // state - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; -} - -inherits(MD5, HashBase); - -MD5.prototype._update = function () { - var M = ARRAY16; - for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4); - - var a = this._a; - var b = this._b; - var c = this._c; - var d = this._d; - - a = fnF(a, b, c, d, M[0], 0xd76aa478, 7); - d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12); - c = fnF(c, d, a, b, M[2], 0x242070db, 17); - b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22); - a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7); - d = fnF(d, a, b, c, M[5], 0x4787c62a, 12); - c = fnF(c, d, a, b, M[6], 0xa8304613, 17); - b = fnF(b, c, d, a, M[7], 0xfd469501, 22); - a = fnF(a, b, c, d, M[8], 0x698098d8, 7); - d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12); - c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17); - b = fnF(b, c, d, a, M[11], 0x895cd7be, 22); - a = fnF(a, b, c, d, M[12], 0x6b901122, 7); - d = fnF(d, a, b, c, M[13], 0xfd987193, 12); - c = fnF(c, d, a, b, M[14], 0xa679438e, 17); - b = fnF(b, c, d, a, M[15], 0x49b40821, 22); - - a = fnG(a, b, c, d, M[1], 0xf61e2562, 5); - d = fnG(d, a, b, c, M[6], 0xc040b340, 9); - c = fnG(c, d, a, b, M[11], 0x265e5a51, 14); - b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20); - a = fnG(a, b, c, d, M[5], 0xd62f105d, 5); - d = fnG(d, a, b, c, M[10], 0x02441453, 9); - c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14); - b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20); - a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5); - d = fnG(d, a, b, c, M[14], 0xc33707d6, 9); - c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14); - b = fnG(b, c, d, a, M[8], 0x455a14ed, 20); - a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5); - d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9); - c = fnG(c, d, a, b, M[7], 0x676f02d9, 14); - b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20); - - a = fnH(a, b, c, d, M[5], 0xfffa3942, 4); - d = fnH(d, a, b, c, M[8], 0x8771f681, 11); - c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16); - b = fnH(b, c, d, a, M[14], 0xfde5380c, 23); - a = fnH(a, b, c, d, M[1], 0xa4beea44, 4); - d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11); - c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16); - b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23); - a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4); - d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11); - c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16); - b = fnH(b, c, d, a, M[6], 0x04881d05, 23); - a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4); - d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11); - c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16); - b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23); - - a = fnI(a, b, c, d, M[0], 0xf4292244, 6); - d = fnI(d, a, b, c, M[7], 0x432aff97, 10); - c = fnI(c, d, a, b, M[14], 0xab9423a7, 15); - b = fnI(b, c, d, a, M[5], 0xfc93a039, 21); - a = fnI(a, b, c, d, M[12], 0x655b59c3, 6); - d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10); - c = fnI(c, d, a, b, M[10], 0xffeff47d, 15); - b = fnI(b, c, d, a, M[1], 0x85845dd1, 21); - a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6); - d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10); - c = fnI(c, d, a, b, M[6], 0xa3014314, 15); - b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21); - a = fnI(a, b, c, d, M[4], 0xf7537e82, 6); - d = fnI(d, a, b, c, M[11], 0xbd3af235, 10); - c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15); - b = fnI(b, c, d, a, M[9], 0xeb86d391, 21); - - this._a = (this._a + a) | 0; - this._b = (this._b + b) | 0; - this._c = (this._c + c) | 0; - this._d = (this._d + d) | 0; -}; - -MD5.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - this._update(); - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - this._block.writeUInt32LE(this._length[0], 56); - this._block.writeUInt32LE(this._length[1], 60); - this._update(); - - // produce result - var buffer = Buffer.allocUnsafe(16); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - return buffer -}; - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fnF (a, b, c, d, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 -} - -function fnG (a, b, c, d, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 -} - -function fnH (a, b, c, d, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 -} - -function fnI (a, b, c, d, m, k, s) { - return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 -} - -module.exports = MD5; - -},{"hash-base":30,"inherits":31,"safe-buffer":40}],33:[function(require,module,exports){ -exports.pbkdf2 = require('./lib/async'); -exports.pbkdf2Sync = require('./lib/sync'); - -},{"./lib/async":34,"./lib/sync":37}],34:[function(require,module,exports){ -(function (process,global){(function (){ -var checkParameters = require('./precondition'); -var defaultEncoding = require('./default-encoding'); -var sync = require('./sync'); -var Buffer = require('safe-buffer').Buffer; - -var ZERO_BUF; -var subtle = global.crypto && global.crypto.subtle; -var toBrowser = { - 'sha': 'SHA-1', - 'sha-1': 'SHA-1', - 'sha1': 'SHA-1', - 'sha256': 'SHA-256', - 'sha-256': 'SHA-256', - 'sha384': 'SHA-384', - 'sha-384': 'SHA-384', - 'sha-512': 'SHA-512', - 'sha512': 'SHA-512' -}; -var checks = []; -function checkNative (algo) { - if (global.process && !global.process.browser) { - return Promise.resolve(false) - } - if (!subtle || !subtle.importKey || !subtle.deriveBits) { - return Promise.resolve(false) - } - if (checks[algo] !== undefined) { - return checks[algo] - } - ZERO_BUF = ZERO_BUF || Buffer.alloc(8); - var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) - .then(function () { - return true - }).catch(function () { - return false - }); - checks[algo] = prom; - return prom -} - -function browserPbkdf2 (password, salt, iterations, length, algo) { - return subtle.importKey( - 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits'] - ).then(function (key) { - return subtle.deriveBits({ - name: 'PBKDF2', - salt: salt, - iterations: iterations, - hash: { - name: algo - } - }, key, length << 3) - }).then(function (res) { - return Buffer.from(res) - }) -} - -function resolvePromise (promise, callback) { - promise.then(function (out) { - process.nextTick(function () { - callback(null, out); - }); - }, function (e) { - process.nextTick(function () { - callback(e); - }); - }); -} -module.exports = function (password, salt, iterations, keylen, digest, callback) { - if (typeof digest === 'function') { - callback = digest; - digest = undefined; - } - - digest = digest || 'sha1'; - var algo = toBrowser[digest.toLowerCase()]; - - if (!algo || typeof global.Promise !== 'function') { - return process.nextTick(function () { - var out; - try { - out = sync(password, salt, iterations, keylen, digest); - } catch (e) { - return callback(e) - } - callback(null, out); - }) - } - - checkParameters(password, salt, iterations, keylen); - if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2') - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding); - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding); - - resolvePromise(checkNative(algo).then(function (resp) { - if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo) - - return sync(password, salt, iterations, keylen, digest) - }), callback); -}; - -}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{"./default-encoding":35,"./precondition":36,"./sync":37,"_process":8,"safe-buffer":40}],35:[function(require,module,exports){ -(function (process){(function (){ -var defaultEncoding; -/* istanbul ignore next */ -if (process.browser) { - defaultEncoding = 'utf-8'; -} else { - var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10); - - defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'; -} -module.exports = defaultEncoding; - -}).call(this);}).call(this,require('_process')); -},{"_process":8}],36:[function(require,module,exports){ -(function (Buffer){(function (){ -var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs - -function checkBuffer (buf, name) { - if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { - throw new TypeError(name + ' must be a buffer or string') - } -} - -module.exports = function (password, salt, iterations, keylen) { - checkBuffer(password, 'Password'); - checkBuffer(salt, 'Salt'); - - if (typeof iterations !== 'number') { - throw new TypeError('Iterations not a number') - } - - if (iterations < 0) { - throw new TypeError('Bad iterations') - } - - if (typeof keylen !== 'number') { - throw new TypeError('Key length not a number') - } - - if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ - throw new TypeError('Bad key length') - } -}; - -}).call(this);}).call(this,{"isBuffer":require("../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js")}); -},{"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js":7}],37:[function(require,module,exports){ -var md5 = require('create-hash/md5'); -var RIPEMD160 = require('ripemd160'); -var sha = require('sha.js'); - -var checkParameters = require('./precondition'); -var defaultEncoding = require('./default-encoding'); -var Buffer = require('safe-buffer').Buffer; -var ZEROS = Buffer.alloc(128); -var sizes = { - md5: 16, - sha1: 20, - sha224: 28, - sha256: 32, - sha384: 48, - sha512: 64, - rmd160: 20, - ripemd160: 20 -}; - -function Hmac (alg, key, saltLen) { - var hash = getDigest(alg); - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64; - - if (key.length > blocksize) { - key = hash(key); - } else if (key.length < blocksize) { - key = Buffer.concat([key, ZEROS], blocksize); - } - - var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]); - var opad = Buffer.allocUnsafe(blocksize + sizes[alg]); - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - - var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4); - ipad.copy(ipad1, 0, 0, blocksize); - this.ipad1 = ipad1; - this.ipad2 = ipad; - this.opad = opad; - this.alg = alg; - this.blocksize = blocksize; - this.hash = hash; - this.size = sizes[alg]; -} - -Hmac.prototype.run = function (data, ipad) { - data.copy(ipad, this.blocksize); - var h = this.hash(ipad); - h.copy(this.opad, this.blocksize); - return this.hash(this.opad) -}; - -function getDigest (alg) { - function shaFunc (data) { - return sha(alg).update(data).digest() - } - function rmd160Func (data) { - return new RIPEMD160().update(data).digest() - } - - if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func - if (alg === 'md5') return md5 - return shaFunc -} - -function pbkdf2 (password, salt, iterations, keylen, digest) { - checkParameters(password, salt, iterations, keylen); - - if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding); - if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding); - - digest = digest || 'sha1'; - - var hmac = new Hmac(digest, password, salt.length); - - var DK = Buffer.allocUnsafe(keylen); - var block1 = Buffer.allocUnsafe(salt.length + 4); - salt.copy(block1, 0, 0, salt.length); - - var destPos = 0; - var hLen = sizes[digest]; - var l = Math.ceil(keylen / hLen); - - for (var i = 1; i <= l; i++) { - block1.writeUInt32BE(i, salt.length); - - var T = hmac.run(block1, hmac.ipad1); - var U = T; - - for (var j = 1; j < iterations; j++) { - U = hmac.run(U, hmac.ipad2); - for (var k = 0; k < hLen; k++) T[k] ^= U[k]; - } - - T.copy(DK, destPos); - destPos += hLen; - } - - return DK -} - -module.exports = pbkdf2; - -},{"./default-encoding":35,"./precondition":36,"create-hash/md5":29,"ripemd160":39,"safe-buffer":40,"sha.js":42}],38:[function(require,module,exports){ -(function (process,global){(function (){ - -// limit of Crypto.getRandomValues() -// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues -var MAX_BYTES = 65536; - -// Node supports requesting up to this number of bytes -// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48 -var MAX_UINT32 = 4294967295; - -function oldBrowser () { - throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') -} - -var Buffer = require('safe-buffer').Buffer; -var crypto = global.crypto || global.msCrypto; - -if (crypto && crypto.getRandomValues) { - module.exports = randomBytes; -} else { - module.exports = oldBrowser; -} - -function randomBytes (size, cb) { - // phantomjs needs to throw - if (size > MAX_UINT32) throw new RangeError('requested too many random bytes') - - var bytes = Buffer.allocUnsafe(size); - - if (size > 0) { // getRandomValues fails on IE if size == 0 - if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues - // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues - for (var generated = 0; generated < size; generated += MAX_BYTES) { - // buffer.slice automatically checks if the end is past the end of - // the buffer so we don't have to here - crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)); - } - } else { - crypto.getRandomValues(bytes); - } - } - - if (typeof cb === 'function') { - return process.nextTick(function () { - cb(null, bytes); - }) - } - - return bytes -} - -}).call(this);}).call(this,require('_process'),typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); -},{"_process":8,"safe-buffer":40}],39:[function(require,module,exports){ -var Buffer = require('buffer').Buffer; -var inherits = require('inherits'); -var HashBase = require('hash-base'); - -var ARRAY16 = new Array(16); - -var 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 -]; - -var 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 -]; - -var 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 -]; - -var 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 -]; - -var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]; -var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]; - -function RIPEMD160 () { - HashBase.call(this, 64); - - // state - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; -} - -inherits(RIPEMD160, HashBase); - -RIPEMD160.prototype._update = function () { - var words = ARRAY16; - for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4); - - var al = this._a | 0; - var bl = this._b | 0; - var cl = this._c | 0; - var dl = this._d | 0; - var el = this._e | 0; - - var ar = this._a | 0; - var br = this._b | 0; - var cr = this._c | 0; - var dr = this._d | 0; - var er = this._e | 0; - - // computation - for (var i = 0; i < 80; i += 1) { - var tl; - var tr; - if (i < 16) { - tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]); - tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]); - } else if (i < 32) { - tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]); - tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]); - } else if (i < 48) { - tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]); - tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]); - } else if (i < 64) { - tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]); - tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]); - } else { // if (i<80) { - tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]); - tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]); - } - - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = tl; - - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = tr; - } - - // update state - var t = (this._b + cl + dr) | 0; - this._b = (this._c + dl + er) | 0; - this._c = (this._d + el + ar) | 0; - this._d = (this._e + al + br) | 0; - this._e = (this._a + bl + cr) | 0; - this._a = t; -}; - -RIPEMD160.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - this._update(); - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - this._block.writeUInt32LE(this._length[0], 56); - this._block.writeUInt32LE(this._length[1], 60); - this._update(); - - // produce result - var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - buffer.writeInt32LE(this._e, 16); - return buffer -}; - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fn1 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn2 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 -} - -function fn3 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn4 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 -} - -function fn5 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 -} - -module.exports = RIPEMD160; - -},{"buffer":3,"hash-base":30,"inherits":31}],40:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer'); -var Buffer = buffer.Buffer; - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer; -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size); - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -}; - -},{"buffer":3}],41:[function(require,module,exports){ -var Buffer = require('safe-buffer').Buffer; - -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = Buffer.alloc(blockSize); - this._finalSize = finalSize; - this._blockSize = blockSize; - this._len = 0; -} - -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8'; - data = Buffer.from(data, enc); - } - - var block = this._block; - var blockSize = this._blockSize; - var length = data.length; - var accum = this._len; - - for (var offset = 0; offset < length;) { - var assigned = accum % blockSize; - var remainder = Math.min(length - offset, blockSize - assigned); - - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i]; - } - - accum += remainder; - offset += remainder; - - if ((accum % blockSize) === 0) { - this._update(block); - } - } - - this._len += length; - return this -}; - -Hash.prototype.digest = function (enc) { - var rem = this._len % this._blockSize; - - this._block[rem] = 0x80; - - // zero (rem + 1) trailing bits, where (rem + 1) is the smallest - // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize - this._block.fill(0, rem + 1); - - if (rem >= this._finalSize) { - this._update(this._block); - this._block.fill(0); - } - - var bits = this._len * 8; - - // uint32 - if (bits <= 0xffffffff) { - this._block.writeUInt32BE(bits, this._blockSize - 4); - - // uint64 - } else { - var lowBits = (bits & 0xffffffff) >>> 0; - var highBits = (bits - lowBits) / 0x100000000; - - this._block.writeUInt32BE(highBits, this._blockSize - 8); - this._block.writeUInt32BE(lowBits, this._blockSize - 4); - } - - this._update(this._block); - var hash = this._hash(); - - return enc ? hash.toString(enc) : hash -}; - -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -}; - -module.exports = Hash; - -},{"safe-buffer":40}],42:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase(); - - var Algorithm = exports[algorithm]; - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - - return new Algorithm() -}; - -exports.sha = require('./sha'); -exports.sha1 = require('./sha1'); -exports.sha224 = require('./sha224'); -exports.sha256 = require('./sha256'); -exports.sha384 = require('./sha384'); -exports.sha512 = require('./sha512'); - -},{"./sha":43,"./sha1":44,"./sha224":45,"./sha256":46,"./sha384":47,"./sha512":48}],43:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ - -var inherits = require('inherits'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -]; - -var W = new Array(80); - -function Sha () { - this.init(); - this._w = W; - - Hash.call(this, 64, 56); -} - -inherits(Sha, Hash); - -Sha.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - - return this -}; - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0; - - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; -}; - -Sha.prototype._hash = function () { - var H = Buffer.allocUnsafe(20); - - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - - return H -}; - -module.exports = Sha; - -},{"./hash":41,"inherits":31,"safe-buffer":40}],44:[function(require,module,exports){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var inherits = require('inherits'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -]; - -var W = new Array(80); - -function Sha1 () { - this.init(); - this._w = W; - - Hash.call(this, 64, 56); -} - -inherits(Sha1, Hash); - -Sha1.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - - return this -}; - -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha1.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]); - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0; - - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; -}; - -Sha1.prototype._hash = function () { - var H = Buffer.allocUnsafe(20); - - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - - return H -}; - -module.exports = Sha1; - -},{"./hash":41,"inherits":31,"safe-buffer":40}],45:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits'); -var Sha256 = require('./sha256'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var W = new Array(64); - -function Sha224 () { - this.init(); - - this._w = W; // new Array(64) - - Hash.call(this, 64, 56); -} - -inherits(Sha224, Sha256); - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8; - this._b = 0x367cd507; - this._c = 0x3070dd17; - this._d = 0xf70e5939; - this._e = 0xffc00b31; - this._f = 0x68581511; - this._g = 0x64f98fa7; - this._h = 0xbefa4fa4; - - return this -}; - -Sha224.prototype._hash = function () { - var H = Buffer.allocUnsafe(28); - - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - - return H -}; - -module.exports = Sha224; - -},{"./hash":41,"./sha256":46,"inherits":31,"safe-buffer":40}],46:[function(require,module,exports){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -]; - -var W = new Array(64); - -function Sha256 () { - this.init(); - - this._w = W; // new Array(64) - - Hash.call(this, 64, 56); -} - -inherits(Sha256, Hash); - -Sha256.prototype.init = function () { - this._a = 0x6a09e667; - this._b = 0xbb67ae85; - this._c = 0x3c6ef372; - this._d = 0xa54ff53a; - this._e = 0x510e527f; - this._f = 0x9b05688c; - this._g = 0x1f83d9ab; - this._h = 0x5be0cd19; - - return this -}; - -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} - -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} - -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} - -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} - -Sha256.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - var f = this._f | 0; - var g = this._g | 0; - var h = this._h | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0; - - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0; - var T2 = (sigma0(a) + maj(a, b, c)) | 0; - - h = g; - g = f; - f = e; - e = (d + T1) | 0; - d = c; - c = b; - b = a; - a = (T1 + T2) | 0; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; - this._f = (f + this._f) | 0; - this._g = (g + this._g) | 0; - this._h = (h + this._h) | 0; -}; - -Sha256.prototype._hash = function () { - var H = Buffer.allocUnsafe(32); - - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - H.writeInt32BE(this._h, 28); - - return H -}; - -module.exports = Sha256; - -},{"./hash":41,"inherits":31,"safe-buffer":40}],47:[function(require,module,exports){ -var inherits = require('inherits'); -var SHA512 = require('./sha512'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var W = new Array(160); - -function Sha384 () { - this.init(); - this._w = W; - - Hash.call(this, 128, 112); -} - -inherits(Sha384, SHA512); - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d; - this._bh = 0x629a292a; - this._ch = 0x9159015a; - this._dh = 0x152fecd8; - this._eh = 0x67332667; - this._fh = 0x8eb44a87; - this._gh = 0xdb0c2e0d; - this._hh = 0x47b5481d; - - this._al = 0xc1059ed8; - this._bl = 0x367cd507; - this._cl = 0x3070dd17; - this._dl = 0xf70e5939; - this._el = 0xffc00b31; - this._fl = 0x68581511; - this._gl = 0x64f98fa7; - this._hl = 0xbefa4fa4; - - return this -}; - -Sha384.prototype._hash = function () { - var H = Buffer.allocUnsafe(48); - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - - return H -}; - -module.exports = Sha384; - -},{"./hash":41,"./sha512":48,"inherits":31,"safe-buffer":40}],48:[function(require,module,exports){ -var inherits = require('inherits'); -var Hash = require('./hash'); -var Buffer = require('safe-buffer').Buffer; - -var 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 -]; - -var W = new Array(160); - -function Sha512 () { - this.init(); - this._w = W; - - Hash.call(this, 128, 112); -} - -inherits(Sha512, Hash); - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667; - this._bh = 0xbb67ae85; - this._ch = 0x3c6ef372; - this._dh = 0xa54ff53a; - this._eh = 0x510e527f; - this._fh = 0x9b05688c; - this._gh = 0x1f83d9ab; - this._hh = 0x5be0cd19; - - this._al = 0xf3bcc908; - this._bl = 0x84caa73b; - this._cl = 0xfe94f82b; - this._dl = 0x5f1d36f1; - this._el = 0xade682d1; - this._fl = 0x2b3e6c1f; - this._gl = 0xfb41bd6b; - this._hl = 0x137e2179; - - return this -}; - -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} - -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} - -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} - -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} - -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} - -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} - -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} - -Sha512.prototype._update = function (M) { - var W = this._w; - - var ah = this._ah | 0; - var bh = this._bh | 0; - var ch = this._ch | 0; - var dh = this._dh | 0; - var eh = this._eh | 0; - var fh = this._fh | 0; - var gh = this._gh | 0; - var hh = this._hh | 0; - - var al = this._al | 0; - var bl = this._bl | 0; - var cl = this._cl | 0; - var dl = this._dl | 0; - var el = this._el | 0; - var fl = this._fl | 0; - var gl = this._gl | 0; - var hl = this._hl | 0; - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4); - W[i + 1] = M.readInt32BE(i * 4 + 4); - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2]; - var xl = W[i - 15 * 2 + 1]; - var gamma0 = Gamma0(xh, xl); - var gamma0l = Gamma0l(xl, xh); - - xh = W[i - 2 * 2]; - xl = W[i - 2 * 2 + 1]; - var gamma1 = Gamma1(xh, xl); - var gamma1l = Gamma1l(xl, xh); - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2]; - var Wi7l = W[i - 7 * 2 + 1]; - - var Wi16h = W[i - 16 * 2]; - var Wi16l = W[i - 16 * 2 + 1]; - - var Wil = (gamma0l + Wi7l) | 0; - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0; - Wil = (Wil + gamma1l) | 0; - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0; - Wil = (Wil + Wi16l) | 0; - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0; - - W[i] = Wih; - W[i + 1] = Wil; - } - - for (var j = 0; j < 160; j += 2) { - Wih = W[j]; - Wil = W[j + 1]; - - var majh = maj(ah, bh, ch); - var majl = maj(al, bl, cl); - - var sigma0h = sigma0(ah, al); - var sigma0l = sigma0(al, ah); - var sigma1h = sigma1(eh, el); - var sigma1l = sigma1(el, eh); - - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j]; - var Kil = K[j + 1]; - - var chh = Ch(eh, fh, gh); - var chl = Ch(el, fl, gl); - - var t1l = (hl + sigma1l) | 0; - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0; - t1l = (t1l + chl) | 0; - t1h = (t1h + chh + getCarry(t1l, chl)) | 0; - t1l = (t1l + Kil) | 0; - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0; - t1l = (t1l + Wil) | 0; - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0; - - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0; - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0; - - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = (dl + t1l) | 0; - eh = (dh + t1h + getCarry(el, dl)) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = (t1l + t2l) | 0; - ah = (t1h + t2h + getCarry(al, t1l)) | 0; - } - - this._al = (this._al + al) | 0; - this._bl = (this._bl + bl) | 0; - this._cl = (this._cl + cl) | 0; - this._dl = (this._dl + dl) | 0; - this._el = (this._el + el) | 0; - this._fl = (this._fl + fl) | 0; - this._gl = (this._gl + gl) | 0; - this._hl = (this._hl + hl) | 0; - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0; - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0; - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0; - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0; - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0; - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0; - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0; - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0; -}; - -Sha512.prototype._hash = function () { - var H = Buffer.allocUnsafe(64); - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - writeInt64BE(this._gh, this._gl, 48); - writeInt64BE(this._hh, this._hl, 56); - - return H -}; - -module.exports = Sha512; - -},{"./hash":41,"inherits":31,"safe-buffer":40}],49:[function(require,module,exports){ -Object.defineProperty(exports, "__esModule", { value: true }); -// browserify by default only pulls in files that are hard coded in requires -// In order of last to first in this file, the default wordlist will be chosen -// based on what is present. (Bundles may remove wordlists they don't need) -const wordlists = {}; -exports.wordlists = wordlists; -let _default; -exports._default = _default; -try { - exports._default = _default = require('./wordlists/czech.json'); - wordlists.czech = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/chinese_simplified.json'); - wordlists.chinese_simplified = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/chinese_traditional.json'); - wordlists.chinese_traditional = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/korean.json'); - wordlists.korean = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/french.json'); - wordlists.french = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/italian.json'); - wordlists.italian = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/spanish.json'); - wordlists.spanish = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/japanese.json'); - wordlists.japanese = _default; - wordlists.JA = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/portuguese.json'); - wordlists.portuguese = _default; -} -catch (err) { } -try { - exports._default = _default = require('./wordlists/english.json'); - wordlists.english = _default; - wordlists.EN = _default; -} -catch (err) { } - -},{"./wordlists/chinese_simplified.json":51,"./wordlists/chinese_traditional.json":undefined,"./wordlists/czech.json":undefined,"./wordlists/english.json":52,"./wordlists/french.json":undefined,"./wordlists/italian.json":undefined,"./wordlists/japanese.json":53,"./wordlists/korean.json":undefined,"./wordlists/portuguese.json":54,"./wordlists/spanish.json":undefined}],50:[function(require,module,exports){ -(function (Buffer){(function (){ -Object.defineProperty(exports, "__esModule", { value: true }); -const createHash = require("create-hash"); -const pbkdf2_1 = require("pbkdf2"); -const randomBytes = require("randombytes"); -const _wordlists_1 = require("./_wordlists"); -let DEFAULT_WORDLIST = _wordlists_1._default; -const INVALID_MNEMONIC = 'Invalid mnemonic'; -const INVALID_ENTROPY = 'Invalid entropy'; -const INVALID_CHECKSUM = 'Invalid mnemonic checksum'; -const WORDLIST_REQUIRED = 'A wordlist is required but a default could not be found.\n' + - 'Please pass a 2048 word array explicitly.'; -function pbkdf2Promise(password, saltMixin, iterations, keylen, digest) { - return Promise.resolve().then(() => new Promise((resolve, reject) => { - const callback = (err, derivedKey) => { - if (err) { - return reject(err); - } - else { - return resolve(derivedKey); - } - }; - pbkdf2_1.pbkdf2(password, saltMixin, iterations, keylen, digest, callback); - })); -} -function normalize(str) { - return (str || '').normalize('NFKD'); -} -function lpad(str, padString, length) { - while (str.length < length) { - str = padString + str; - } - return str; -} -function binaryToByte(bin) { - return parseInt(bin, 2); -} -function bytesToBinary(bytes) { - return bytes.map((x) => lpad(x.toString(2), '0', 8)).join(''); -} -function deriveChecksumBits(entropyBuffer) { - const ENT = entropyBuffer.length * 8; - const CS = ENT / 32; - const hash = createHash('sha256') - .update(entropyBuffer) - .digest(); - return bytesToBinary(Array.from(hash)).slice(0, CS); -} -function salt(password) { - return 'mnemonic' + (password || ''); -} -function mnemonicToSeedSync(mnemonic, password) { - const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); - const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); - return pbkdf2_1.pbkdf2Sync(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); -} -exports.mnemonicToSeedSync = mnemonicToSeedSync; -function mnemonicToSeed(mnemonic, password) { - return Promise.resolve().then(() => { - const mnemonicBuffer = Buffer.from(normalize(mnemonic), 'utf8'); - const saltBuffer = Buffer.from(salt(normalize(password)), 'utf8'); - return pbkdf2Promise(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512'); - }); -} -exports.mnemonicToSeed = mnemonicToSeed; -function mnemonicToEntropy(mnemonic, wordlist) { - wordlist = wordlist || DEFAULT_WORDLIST; - if (!wordlist) { - throw new Error(WORDLIST_REQUIRED); - } - const words = normalize(mnemonic).split(' '); - if (words.length % 3 !== 0) { - throw new Error(INVALID_MNEMONIC); - } - // convert word indices to 11 bit binary strings - const bits = words - .map((word) => { - const index = wordlist.indexOf(word); - if (index === -1) { - throw new Error(INVALID_MNEMONIC); - } - return lpad(index.toString(2), '0', 11); - }) - .join(''); - // split the binary string into ENT/CS - const dividerIndex = Math.floor(bits.length / 33) * 32; - const entropyBits = bits.slice(0, dividerIndex); - const checksumBits = bits.slice(dividerIndex); - // calculate the checksum and compare - const entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte); - if (entropyBytes.length < 16) { - throw new Error(INVALID_ENTROPY); - } - if (entropyBytes.length > 32) { - throw new Error(INVALID_ENTROPY); - } - if (entropyBytes.length % 4 !== 0) { - throw new Error(INVALID_ENTROPY); - } - const entropy = Buffer.from(entropyBytes); - const newChecksum = deriveChecksumBits(entropy); - if (newChecksum !== checksumBits) { - throw new Error(INVALID_CHECKSUM); - } - return entropy.toString('hex'); -} -exports.mnemonicToEntropy = mnemonicToEntropy; -function entropyToMnemonic(entropy, wordlist) { - if (!Buffer.isBuffer(entropy)) { - entropy = Buffer.from(entropy, 'hex'); - } - wordlist = wordlist || DEFAULT_WORDLIST; - if (!wordlist) { - throw new Error(WORDLIST_REQUIRED); - } - // 128 <= ENT <= 256 - if (entropy.length < 16) { - throw new TypeError(INVALID_ENTROPY); - } - if (entropy.length > 32) { - throw new TypeError(INVALID_ENTROPY); - } - if (entropy.length % 4 !== 0) { - throw new TypeError(INVALID_ENTROPY); - } - const entropyBits = bytesToBinary(Array.from(entropy)); - const checksumBits = deriveChecksumBits(entropy); - const bits = entropyBits + checksumBits; - const chunks = bits.match(/(.{1,11})/g); - const words = chunks.map((binary) => { - const index = binaryToByte(binary); - return wordlist[index]; - }); - return wordlist[0] === '\u3042\u3044\u3053\u304f\u3057\u3093' // Japanese wordlist - ? words.join('\u3000') - : words.join(' '); -} -exports.entropyToMnemonic = entropyToMnemonic; -function generateMnemonic(strength, rng, wordlist) { - strength = strength || 128; - if (strength % 32 !== 0) { - throw new TypeError(INVALID_ENTROPY); - } - rng = rng || randomBytes; - return entropyToMnemonic(rng(strength / 8), wordlist); -} -exports.generateMnemonic = generateMnemonic; -function validateMnemonic(mnemonic, wordlist) { - try { - mnemonicToEntropy(mnemonic, wordlist); - } - catch (e) { - return false; - } - return true; -} -exports.validateMnemonic = validateMnemonic; -function setDefaultWordlist(language) { - const result = _wordlists_1.wordlists[language]; - if (result) { - DEFAULT_WORDLIST = result; - } - else { - throw new Error('Could not find wordlist for language "' + language + '"'); - } -} -exports.setDefaultWordlist = setDefaultWordlist; -function getDefaultWordlist() { - if (!DEFAULT_WORDLIST) { - throw new Error('No Default Wordlist set'); - } - return Object.keys(_wordlists_1.wordlists).filter((lang) => { - if (lang === 'JA' || lang === 'EN') { - return false; - } - return _wordlists_1.wordlists[lang].every((word, index) => word === DEFAULT_WORDLIST[index]); - })[0]; -} -exports.getDefaultWordlist = getDefaultWordlist; -var _wordlists_2 = require("./_wordlists"); -exports.wordlists = _wordlists_2.wordlists; - -}).call(this);}).call(this,require("buffer").Buffer); -},{"./_wordlists":49,"buffer":3,"create-hash":28,"pbkdf2":33,"randombytes":38}],51:[function(require,module,exports){ -module.exports=[ - "的", - "一", - "是", - "在", - "不", - "了", - "有", - "和", - "人", - "这", - "中", - "大", - "为", - "上", - "个", - "国", - "我", - "以", - "要", - "他", - "时", - "来", - "用", - "们", - "生", - "到", - "作", - "地", - "于", - "出", - "就", - "分", - "对", - "成", - "会", - "可", - "主", - "发", - "年", - "动", - "同", - "工", - "也", - "能", - "下", - "过", - "子", - "说", - "产", - "种", - "面", - "而", - "方", - "后", - "多", - "定", - "行", - "学", - "法", - "所", - "民", - "得", - "经", - "十", - "三", - "之", - "进", - "着", - "等", - "部", - "度", - "家", - "电", - "力", - "里", - "如", - "水", - "化", - "高", - "自", - "二", - "理", - "起", - "小", - "物", - "现", - "实", - "加", - "量", - "都", - "两", - "体", - "制", - "机", - "当", - "使", - "点", - "从", - "业", - "本", - "去", - "把", - "性", - "好", - "应", - "开", - "它", - "合", - "还", - "因", - "由", - "其", - "些", - "然", - "前", - "外", - "天", - "政", - "四", - "日", - "那", - "社", - "义", - "事", - "平", - "形", - "相", - "全", - "表", - "间", - "样", - "与", - "关", - "各", - "重", - "新", - "线", - "内", - "数", - "正", - "心", - "反", - "你", - "明", - "看", - "原", - "又", - "么", - "利", - "比", - "或", - "但", - "质", - "气", - "第", - "向", - "道", - "命", - "此", - "变", - "条", - "只", - "没", - "结", - "解", - "问", - "意", - "建", - "月", - "公", - "无", - "系", - "军", - "很", - "情", - "者", - "最", - "立", - "代", - "想", - "已", - "通", - "并", - "提", - "直", - "题", - "党", - "程", - "展", - "五", - "果", - "料", - "象", - "员", - "革", - "位", - "入", - "常", - "文", - "总", - "次", - "品", - "式", - "活", - "设", - "及", - "管", - "特", - "件", - "长", - "求", - "老", - "头", - "基", - "资", - "边", - "流", - "路", - "级", - "少", - "图", - "山", - "统", - "接", - "知", - "较", - "将", - "组", - "见", - "计", - "别", - "她", - "手", - "角", - "期", - "根", - "论", - "运", - "农", - "指", - "几", - "九", - "区", - "强", - "放", - "决", - "西", - "被", - "干", - "做", - "必", - "战", - "先", - "回", - "则", - "任", - "取", - "据", - "处", - "队", - "南", - "给", - "色", - "光", - "门", - "即", - "保", - "治", - "北", - "造", - "百", - "规", - "热", - "领", - "七", - "海", - "口", - "东", - "导", - "器", - "压", - "志", - "世", - "金", - "增", - "争", - "济", - "阶", - "油", - "思", - "术", - "极", - "交", - "受", - "联", - "什", - "认", - "六", - "共", - "权", - "收", - "证", - "改", - "清", - "美", - "再", - "采", - "转", - "更", - "单", - "风", - "切", - "打", - "白", - "教", - "速", - "花", - "带", - "安", - "场", - "身", - "车", - "例", - "真", - "务", - "具", - "万", - "每", - "目", - "至", - "达", - "走", - "积", - "示", - "议", - "声", - "报", - "斗", - "完", - "类", - "八", - "离", - "华", - "名", - "确", - "才", - "科", - "张", - "信", - "马", - "节", - "话", - "米", - "整", - "空", - "元", - "况", - "今", - "集", - "温", - "传", - "土", - "许", - "步", - "群", - "广", - "石", - "记", - "需", - "段", - "研", - "界", - "拉", - "林", - "律", - "叫", - "且", - "究", - "观", - "越", - "织", - "装", - "影", - "算", - "低", - "持", - "音", - "众", - "书", - "布", - "复", - "容", - "儿", - "须", - "际", - "商", - "非", - "验", - "连", - "断", - "深", - "难", - "近", - "矿", - "千", - "周", - "委", - "素", - "技", - "备", - "半", - "办", - "青", - "省", - "列", - "习", - "响", - "约", - "支", - "般", - "史", - "感", - "劳", - "便", - "团", - "往", - "酸", - "历", - "市", - "克", - "何", - "除", - "消", - "构", - "府", - "称", - "太", - "准", - "精", - "值", - "号", - "率", - "族", - "维", - "划", - "选", - "标", - "写", - "存", - "候", - "毛", - "亲", - "快", - "效", - "斯", - "院", - "查", - "江", - "型", - "眼", - "王", - "按", - "格", - "养", - "易", - "置", - "派", - "层", - "片", - "始", - "却", - "专", - "状", - "育", - "厂", - "京", - "识", - "适", - "属", - "圆", - "包", - "火", - "住", - "调", - "满", - "县", - "局", - "照", - "参", - "红", - "细", - "引", - "听", - "该", - "铁", - "价", - "严", - "首", - "底", - "液", - "官", - "德", - "随", - "病", - "苏", - "失", - "尔", - "死", - "讲", - "配", - "女", - "黄", - "推", - "显", - "谈", - "罪", - "神", - "艺", - "呢", - "席", - "含", - "企", - "望", - "密", - "批", - "营", - "项", - "防", - "举", - "球", - "英", - "氧", - "势", - "告", - "李", - "台", - "落", - "木", - "帮", - "轮", - "破", - "亚", - "师", - "围", - "注", - "远", - "字", - "材", - "排", - "供", - "河", - "态", - "封", - "另", - "施", - "减", - "树", - "溶", - "怎", - "止", - "案", - "言", - "士", - "均", - "武", - "固", - "叶", - "鱼", - "波", - "视", - "仅", - "费", - "紧", - "爱", - "左", - "章", - "早", - "朝", - "害", - "续", - "轻", - "服", - "试", - "食", - "充", - "兵", - "源", - "判", - "护", - "司", - "足", - "某", - "练", - "差", - "致", - "板", - "田", - "降", - "黑", - "犯", - "负", - "击", - "范", - "继", - "兴", - "似", - "余", - "坚", - "曲", - "输", - "修", - "故", - "城", - "夫", - "够", - "送", - "笔", - "船", - "占", - "右", - "财", - "吃", - "富", - "春", - "职", - "觉", - "汉", - "画", - "功", - "巴", - "跟", - "虽", - "杂", - "飞", - "检", - "吸", - "助", - "升", - "阳", - "互", - "初", - "创", - "抗", - "考", - "投", - "坏", - "策", - "古", - "径", - "换", - "未", - "跑", - "留", - "钢", - "曾", - "端", - "责", - "站", - "简", - "述", - "钱", - "副", - "尽", - "帝", - "射", - "草", - "冲", - "承", - "独", - "令", - "限", - "阿", - "宣", - "环", - "双", - "请", - "超", - "微", - "让", - "控", - "州", - "良", - "轴", - "找", - "否", - "纪", - "益", - "依", - "优", - "顶", - "础", - "载", - "倒", - "房", - "突", - "坐", - "粉", - "敌", - "略", - "客", - "袁", - "冷", - "胜", - "绝", - "析", - "块", - "剂", - "测", - "丝", - "协", - "诉", - "念", - "陈", - "仍", - "罗", - "盐", - "友", - "洋", - "错", - "苦", - "夜", - "刑", - "移", - "频", - "逐", - "靠", - "混", - "母", - "短", - "皮", - "终", - "聚", - "汽", - "村", - "云", - "哪", - "既", - "距", - "卫", - "停", - "烈", - "央", - "察", - "烧", - "迅", - "境", - "若", - "印", - "洲", - "刻", - "括", - "激", - "孔", - "搞", - "甚", - "室", - "待", - "核", - "校", - "散", - "侵", - "吧", - "甲", - "游", - "久", - "菜", - "味", - "旧", - "模", - "湖", - "货", - "损", - "预", - "阻", - "毫", - "普", - "稳", - "乙", - "妈", - "植", - "息", - "扩", - "银", - "语", - "挥", - "酒", - "守", - "拿", - "序", - "纸", - "医", - "缺", - "雨", - "吗", - "针", - "刘", - "啊", - "急", - "唱", - "误", - "训", - "愿", - "审", - "附", - "获", - "茶", - "鲜", - "粮", - "斤", - "孩", - "脱", - "硫", - "肥", - "善", - "龙", - "演", - "父", - "渐", - "血", - "欢", - "械", - "掌", - "歌", - "沙", - "刚", - "攻", - "谓", - "盾", - "讨", - "晚", - "粒", - "乱", - "燃", - "矛", - "乎", - "杀", - "药", - "宁", - "鲁", - "贵", - "钟", - "煤", - "读", - "班", - "伯", - "香", - "介", - "迫", - "句", - "丰", - "培", - "握", - "兰", - "担", - "弦", - "蛋", - "沉", - "假", - "穿", - "执", - "答", - "乐", - "谁", - "顺", - "烟", - "缩", - "征", - "脸", - "喜", - "松", - "脚", - "困", - "异", - "免", - "背", - "星", - "福", - "买", - "染", - "井", - "概", - "慢", - "怕", - "磁", - "倍", - "祖", - "皇", - "促", - "静", - "补", - "评", - "翻", - "肉", - "践", - "尼", - "衣", - "宽", - "扬", - "棉", - "希", - "伤", - "操", - "垂", - "秋", - "宜", - "氢", - "套", - "督", - "振", - "架", - "亮", - "末", - "宪", - "庆", - "编", - "牛", - "触", - "映", - "雷", - "销", - "诗", - "座", - "居", - "抓", - "裂", - "胞", - "呼", - "娘", - "景", - "威", - "绿", - "晶", - "厚", - "盟", - "衡", - "鸡", - "孙", - "延", - "危", - "胶", - "屋", - "乡", - "临", - "陆", - "顾", - "掉", - "呀", - "灯", - "岁", - "措", - "束", - "耐", - "剧", - "玉", - "赵", - "跳", - "哥", - "季", - "课", - "凯", - "胡", - "额", - "款", - "绍", - "卷", - "齐", - "伟", - "蒸", - "殖", - "永", - "宗", - "苗", - "川", - "炉", - "岩", - "弱", - "零", - "杨", - "奏", - "沿", - "露", - "杆", - "探", - "滑", - "镇", - "饭", - "浓", - "航", - "怀", - "赶", - "库", - "夺", - "伊", - "灵", - "税", - "途", - "灭", - "赛", - "归", - "召", - "鼓", - "播", - "盘", - "裁", - "险", - "康", - "唯", - "录", - "菌", - "纯", - "借", - "糖", - "盖", - "横", - "符", - "私", - "努", - "堂", - "域", - "枪", - "润", - "幅", - "哈", - "竟", - "熟", - "虫", - "泽", - "脑", - "壤", - "碳", - "欧", - "遍", - "侧", - "寨", - "敢", - "彻", - "虑", - "斜", - "薄", - "庭", - "纳", - "弹", - "饲", - "伸", - "折", - "麦", - "湿", - "暗", - "荷", - "瓦", - "塞", - "床", - "筑", - "恶", - "户", - "访", - "塔", - "奇", - "透", - "梁", - "刀", - "旋", - "迹", - "卡", - "氯", - "遇", - "份", - "毒", - "泥", - "退", - "洗", - "摆", - "灰", - "彩", - "卖", - "耗", - "夏", - "择", - "忙", - "铜", - "献", - "硬", - "予", - "繁", - "圈", - "雪", - "函", - "亦", - "抽", - "篇", - "阵", - "阴", - "丁", - "尺", - "追", - "堆", - "雄", - "迎", - "泛", - "爸", - "楼", - "避", - "谋", - "吨", - "野", - "猪", - "旗", - "累", - "偏", - "典", - "馆", - "索", - "秦", - "脂", - "潮", - "爷", - "豆", - "忽", - "托", - "惊", - "塑", - "遗", - "愈", - "朱", - "替", - "纤", - "粗", - "倾", - "尚", - "痛", - "楚", - "谢", - "奋", - "购", - "磨", - "君", - "池", - "旁", - "碎", - "骨", - "监", - "捕", - "弟", - "暴", - "割", - "贯", - "殊", - "释", - "词", - "亡", - "壁", - "顿", - "宝", - "午", - "尘", - "闻", - "揭", - "炮", - "残", - "冬", - "桥", - "妇", - "警", - "综", - "招", - "吴", - "付", - "浮", - "遭", - "徐", - "您", - "摇", - "谷", - "赞", - "箱", - "隔", - "订", - "男", - "吹", - "园", - "纷", - "唐", - "败", - "宋", - "玻", - "巨", - "耕", - "坦", - "荣", - "闭", - "湾", - "键", - "凡", - "驻", - "锅", - "救", - "恩", - "剥", - "凝", - "碱", - "齿", - "截", - "炼", - "麻", - "纺", - "禁", - "废", - "盛", - "版", - "缓", - "净", - "睛", - "昌", - "婚", - "涉", - "筒", - "嘴", - "插", - "岸", - "朗", - "庄", - "街", - "藏", - "姑", - "贸", - "腐", - "奴", - "啦", - "惯", - "乘", - "伙", - "恢", - "匀", - "纱", - "扎", - "辩", - "耳", - "彪", - "臣", - "亿", - "璃", - "抵", - "脉", - "秀", - "萨", - "俄", - "网", - "舞", - "店", - "喷", - "纵", - "寸", - "汗", - "挂", - "洪", - "贺", - "闪", - "柬", - "爆", - "烯", - "津", - "稻", - "墙", - "软", - "勇", - "像", - "滚", - "厘", - "蒙", - "芳", - "肯", - "坡", - "柱", - "荡", - "腿", - "仪", - "旅", - "尾", - "轧", - "冰", - "贡", - "登", - "黎", - "削", - "钻", - "勒", - "逃", - "障", - "氨", - "郭", - "峰", - "币", - "港", - "伏", - "轨", - "亩", - "毕", - "擦", - "莫", - "刺", - "浪", - "秘", - "援", - "株", - "健", - "售", - "股", - "岛", - "甘", - "泡", - "睡", - "童", - "铸", - "汤", - "阀", - "休", - "汇", - "舍", - "牧", - "绕", - "炸", - "哲", - "磷", - "绩", - "朋", - "淡", - "尖", - "启", - "陷", - "柴", - "呈", - "徒", - "颜", - "泪", - "稍", - "忘", - "泵", - "蓝", - "拖", - "洞", - "授", - "镜", - "辛", - "壮", - "锋", - "贫", - "虚", - "弯", - "摩", - "泰", - "幼", - "廷", - "尊", - "窗", - "纲", - "弄", - "隶", - "疑", - "氏", - "宫", - "姐", - "震", - "瑞", - "怪", - "尤", - "琴", - "循", - "描", - "膜", - "违", - "夹", - "腰", - "缘", - "珠", - "穷", - "森", - "枝", - "竹", - "沟", - "催", - "绳", - "忆", - "邦", - "剩", - "幸", - "浆", - "栏", - "拥", - "牙", - "贮", - "礼", - "滤", - "钠", - "纹", - "罢", - "拍", - "咱", - "喊", - "袖", - "埃", - "勤", - "罚", - "焦", - "潜", - "伍", - "墨", - "欲", - "缝", - "姓", - "刊", - "饱", - "仿", - "奖", - "铝", - "鬼", - "丽", - "跨", - "默", - "挖", - "链", - "扫", - "喝", - "袋", - "炭", - "污", - "幕", - "诸", - "弧", - "励", - "梅", - "奶", - "洁", - "灾", - "舟", - "鉴", - "苯", - "讼", - "抱", - "毁", - "懂", - "寒", - "智", - "埔", - "寄", - "届", - "跃", - "渡", - "挑", - "丹", - "艰", - "贝", - "碰", - "拔", - "爹", - "戴", - "码", - "梦", - "芽", - "熔", - "赤", - "渔", - "哭", - "敬", - "颗", - "奔", - "铅", - "仲", - "虎", - "稀", - "妹", - "乏", - "珍", - "申", - "桌", - "遵", - "允", - "隆", - "螺", - "仓", - "魏", - "锐", - "晓", - "氮", - "兼", - "隐", - "碍", - "赫", - "拨", - "忠", - "肃", - "缸", - "牵", - "抢", - "博", - "巧", - "壳", - "兄", - "杜", - "讯", - "诚", - "碧", - "祥", - "柯", - "页", - "巡", - "矩", - "悲", - "灌", - "龄", - "伦", - "票", - "寻", - "桂", - "铺", - "圣", - "恐", - "恰", - "郑", - "趣", - "抬", - "荒", - "腾", - "贴", - "柔", - "滴", - "猛", - "阔", - "辆", - "妻", - "填", - "撤", - "储", - "签", - "闹", - "扰", - "紫", - "砂", - "递", - "戏", - "吊", - "陶", - "伐", - "喂", - "疗", - "瓶", - "婆", - "抚", - "臂", - "摸", - "忍", - "虾", - "蜡", - "邻", - "胸", - "巩", - "挤", - "偶", - "弃", - "槽", - "劲", - "乳", - "邓", - "吉", - "仁", - "烂", - "砖", - "租", - "乌", - "舰", - "伴", - "瓜", - "浅", - "丙", - "暂", - "燥", - "橡", - "柳", - "迷", - "暖", - "牌", - "秧", - "胆", - "详", - "簧", - "踏", - "瓷", - "谱", - "呆", - "宾", - "糊", - "洛", - "辉", - "愤", - "竞", - "隙", - "怒", - "粘", - "乃", - "绪", - "肩", - "籍", - "敏", - "涂", - "熙", - "皆", - "侦", - "悬", - "掘", - "享", - "纠", - "醒", - "狂", - "锁", - "淀", - "恨", - "牲", - "霸", - "爬", - "赏", - "逆", - "玩", - "陵", - "祝", - "秒", - "浙", - "貌", - "役", - "彼", - "悉", - "鸭", - "趋", - "凤", - "晨", - "畜", - "辈", - "秩", - "卵", - "署", - "梯", - "炎", - "滩", - "棋", - "驱", - "筛", - "峡", - "冒", - "啥", - "寿", - "译", - "浸", - "泉", - "帽", - "迟", - "硅", - "疆", - "贷", - "漏", - "稿", - "冠", - "嫩", - "胁", - "芯", - "牢", - "叛", - "蚀", - "奥", - "鸣", - "岭", - "羊", - "凭", - "串", - "塘", - "绘", - "酵", - "融", - "盆", - "锡", - "庙", - "筹", - "冻", - "辅", - "摄", - "袭", - "筋", - "拒", - "僚", - "旱", - "钾", - "鸟", - "漆", - "沈", - "眉", - "疏", - "添", - "棒", - "穗", - "硝", - "韩", - "逼", - "扭", - "侨", - "凉", - "挺", - "碗", - "栽", - "炒", - "杯", - "患", - "馏", - "劝", - "豪", - "辽", - "勃", - "鸿", - "旦", - "吏", - "拜", - "狗", - "埋", - "辊", - "掩", - "饮", - "搬", - "骂", - "辞", - "勾", - "扣", - "估", - "蒋", - "绒", - "雾", - "丈", - "朵", - "姆", - "拟", - "宇", - "辑", - "陕", - "雕", - "偿", - "蓄", - "崇", - "剪", - "倡", - "厅", - "咬", - "驶", - "薯", - "刷", - "斥", - "番", - "赋", - "奉", - "佛", - "浇", - "漫", - "曼", - "扇", - "钙", - "桃", - "扶", - "仔", - "返", - "俗", - "亏", - "腔", - "鞋", - "棱", - "覆", - "框", - "悄", - "叔", - "撞", - "骗", - "勘", - "旺", - "沸", - "孤", - "吐", - "孟", - "渠", - "屈", - "疾", - "妙", - "惜", - "仰", - "狠", - "胀", - "谐", - "抛", - "霉", - "桑", - "岗", - "嘛", - "衰", - "盗", - "渗", - "脏", - "赖", - "涌", - "甜", - "曹", - "阅", - "肌", - "哩", - "厉", - "烃", - "纬", - "毅", - "昨", - "伪", - "症", - "煮", - "叹", - "钉", - "搭", - "茎", - "笼", - "酷", - "偷", - "弓", - "锥", - "恒", - "杰", - "坑", - "鼻", - "翼", - "纶", - "叙", - "狱", - "逮", - "罐", - "络", - "棚", - "抑", - "膨", - "蔬", - "寺", - "骤", - "穆", - "冶", - "枯", - "册", - "尸", - "凸", - "绅", - "坯", - "牺", - "焰", - "轰", - "欣", - "晋", - "瘦", - "御", - "锭", - "锦", - "丧", - "旬", - "锻", - "垄", - "搜", - "扑", - "邀", - "亭", - "酯", - "迈", - "舒", - "脆", - "酶", - "闲", - "忧", - "酚", - "顽", - "羽", - "涨", - "卸", - "仗", - "陪", - "辟", - "惩", - "杭", - "姚", - "肚", - "捉", - "飘", - "漂", - "昆", - "欺", - "吾", - "郎", - "烷", - "汁", - "呵", - "饰", - "萧", - "雅", - "邮", - "迁", - "燕", - "撒", - "姻", - "赴", - "宴", - "烦", - "债", - "帐", - "斑", - "铃", - "旨", - "醇", - "董", - "饼", - "雏", - "姿", - "拌", - "傅", - "腹", - "妥", - "揉", - "贤", - "拆", - "歪", - "葡", - "胺", - "丢", - "浩", - "徽", - "昂", - "垫", - "挡", - "览", - "贪", - "慰", - "缴", - "汪", - "慌", - "冯", - "诺", - "姜", - "谊", - "凶", - "劣", - "诬", - "耀", - "昏", - "躺", - "盈", - "骑", - "乔", - "溪", - "丛", - "卢", - "抹", - "闷", - "咨", - "刮", - "驾", - "缆", - "悟", - "摘", - "铒", - "掷", - "颇", - "幻", - "柄", - "惠", - "惨", - "佳", - "仇", - "腊", - "窝", - "涤", - "剑", - "瞧", - "堡", - "泼", - "葱", - "罩", - "霍", - "捞", - "胎", - "苍", - "滨", - "俩", - "捅", - "湘", - "砍", - "霞", - "邵", - "萄", - "疯", - "淮", - "遂", - "熊", - "粪", - "烘", - "宿", - "档", - "戈", - "驳", - "嫂", - "裕", - "徙", - "箭", - "捐", - "肠", - "撑", - "晒", - "辨", - "殿", - "莲", - "摊", - "搅", - "酱", - "屏", - "疫", - "哀", - "蔡", - "堵", - "沫", - "皱", - "畅", - "叠", - "阁", - "莱", - "敲", - "辖", - "钩", - "痕", - "坝", - "巷", - "饿", - "祸", - "丘", - "玄", - "溜", - "曰", - "逻", - "彭", - "尝", - "卿", - "妨", - "艇", - "吞", - "韦", - "怨", - "矮", - "歇" -]; - -},{}],52:[function(require,module,exports){ -module.exports=[ - "abandon", - "ability", - "able", - "about", - "above", - "absent", - "absorb", - "abstract", - "absurd", - "abuse", - "access", - "accident", - "account", - "accuse", - "achieve", - "acid", - "acoustic", - "acquire", - "across", - "act", - "action", - "actor", - "actress", - "actual", - "adapt", - "add", - "addict", - "address", - "adjust", - "admit", - "adult", - "advance", - "advice", - "aerobic", - "affair", - "afford", - "afraid", - "again", - "age", - "agent", - "agree", - "ahead", - "aim", - "air", - "airport", - "aisle", - "alarm", - "album", - "alcohol", - "alert", - "alien", - "all", - "alley", - "allow", - "almost", - "alone", - "alpha", - "already", - "also", - "alter", - "always", - "amateur", - "amazing", - "among", - "amount", - "amused", - "analyst", - "anchor", - "ancient", - "anger", - "angle", - "angry", - "animal", - "ankle", - "announce", - "annual", - "another", - "answer", - "antenna", - "antique", - "anxiety", - "any", - "apart", - "apology", - "appear", - "apple", - "approve", - "april", - "arch", - "arctic", - "area", - "arena", - "argue", - "arm", - "armed", - "armor", - "army", - "around", - "arrange", - "arrest", - "arrive", - "arrow", - "art", - "artefact", - "artist", - "artwork", - "ask", - "aspect", - "assault", - "asset", - "assist", - "assume", - "asthma", - "athlete", - "atom", - "attack", - "attend", - "attitude", - "attract", - "auction", - "audit", - "august", - "aunt", - "author", - "auto", - "autumn", - "average", - "avocado", - "avoid", - "awake", - "aware", - "away", - "awesome", - "awful", - "awkward", - "axis", - "baby", - "bachelor", - "bacon", - "badge", - "bag", - "balance", - "balcony", - "ball", - "bamboo", - "banana", - "banner", - "bar", - "barely", - "bargain", - "barrel", - "base", - "basic", - "basket", - "battle", - "beach", - "bean", - "beauty", - "because", - "become", - "beef", - "before", - "begin", - "behave", - "behind", - "believe", - "below", - "belt", - "bench", - "benefit", - "best", - "betray", - "better", - "between", - "beyond", - "bicycle", - "bid", - "bike", - "bind", - "biology", - "bird", - "birth", - "bitter", - "black", - "blade", - "blame", - "blanket", - "blast", - "bleak", - "bless", - "blind", - "blood", - "blossom", - "blouse", - "blue", - "blur", - "blush", - "board", - "boat", - "body", - "boil", - "bomb", - "bone", - "bonus", - "book", - "boost", - "border", - "boring", - "borrow", - "boss", - "bottom", - "bounce", - "box", - "boy", - "bracket", - "brain", - "brand", - "brass", - "brave", - "bread", - "breeze", - "brick", - "bridge", - "brief", - "bright", - "bring", - "brisk", - "broccoli", - "broken", - "bronze", - "broom", - "brother", - "brown", - "brush", - "bubble", - "buddy", - "budget", - "buffalo", - "build", - "bulb", - "bulk", - "bullet", - "bundle", - "bunker", - "burden", - "burger", - "burst", - "bus", - "business", - "busy", - "butter", - "buyer", - "buzz", - "cabbage", - "cabin", - "cable", - "cactus", - "cage", - "cake", - "call", - "calm", - "camera", - "camp", - "can", - "canal", - "cancel", - "candy", - "cannon", - "canoe", - "canvas", - "canyon", - "capable", - "capital", - "captain", - "car", - "carbon", - "card", - "cargo", - "carpet", - "carry", - "cart", - "case", - "cash", - "casino", - "castle", - "casual", - "cat", - "catalog", - "catch", - "category", - "cattle", - "caught", - "cause", - "caution", - "cave", - "ceiling", - "celery", - "cement", - "census", - "century", - "cereal", - "certain", - "chair", - "chalk", - "champion", - "change", - "chaos", - "chapter", - "charge", - "chase", - "chat", - "cheap", - "check", - "cheese", - "chef", - "cherry", - "chest", - "chicken", - "chief", - "child", - "chimney", - "choice", - "choose", - "chronic", - "chuckle", - "chunk", - "churn", - "cigar", - "cinnamon", - "circle", - "citizen", - "city", - "civil", - "claim", - "clap", - "clarify", - "claw", - "clay", - "clean", - "clerk", - "clever", - "click", - "client", - "cliff", - "climb", - "clinic", - "clip", - "clock", - "clog", - "close", - "cloth", - "cloud", - "clown", - "club", - "clump", - "cluster", - "clutch", - "coach", - "coast", - "coconut", - "code", - "coffee", - "coil", - "coin", - "collect", - "color", - "column", - "combine", - "come", - "comfort", - "comic", - "common", - "company", - "concert", - "conduct", - "confirm", - "congress", - "connect", - "consider", - "control", - "convince", - "cook", - "cool", - "copper", - "copy", - "coral", - "core", - "corn", - "correct", - "cost", - "cotton", - "couch", - "country", - "couple", - "course", - "cousin", - "cover", - "coyote", - "crack", - "cradle", - "craft", - "cram", - "crane", - "crash", - "crater", - "crawl", - "crazy", - "cream", - "credit", - "creek", - "crew", - "cricket", - "crime", - "crisp", - "critic", - "crop", - "cross", - "crouch", - "crowd", - "crucial", - "cruel", - "cruise", - "crumble", - "crunch", - "crush", - "cry", - "crystal", - "cube", - "culture", - "cup", - "cupboard", - "curious", - "current", - "curtain", - "curve", - "cushion", - "custom", - "cute", - "cycle", - "dad", - "damage", - "damp", - "dance", - "danger", - "daring", - "dash", - "daughter", - "dawn", - "day", - "deal", - "debate", - "debris", - "decade", - "december", - "decide", - "decline", - "decorate", - "decrease", - "deer", - "defense", - "define", - "defy", - "degree", - "delay", - "deliver", - "demand", - "demise", - "denial", - "dentist", - "deny", - "depart", - "depend", - "deposit", - "depth", - "deputy", - "derive", - "describe", - "desert", - "design", - "desk", - "despair", - "destroy", - "detail", - "detect", - "develop", - "device", - "devote", - "diagram", - "dial", - "diamond", - "diary", - "dice", - "diesel", - "diet", - "differ", - "digital", - "dignity", - "dilemma", - "dinner", - "dinosaur", - "direct", - "dirt", - "disagree", - "discover", - "disease", - "dish", - "dismiss", - "disorder", - "display", - "distance", - "divert", - "divide", - "divorce", - "dizzy", - "doctor", - "document", - "dog", - "doll", - "dolphin", - "domain", - "donate", - "donkey", - "donor", - "door", - "dose", - "double", - "dove", - "draft", - "dragon", - "drama", - "drastic", - "draw", - "dream", - "dress", - "drift", - "drill", - "drink", - "drip", - "drive", - "drop", - "drum", - "dry", - "duck", - "dumb", - "dune", - "during", - "dust", - "dutch", - "duty", - "dwarf", - "dynamic", - "eager", - "eagle", - "early", - "earn", - "earth", - "easily", - "east", - "easy", - "echo", - "ecology", - "economy", - "edge", - "edit", - "educate", - "effort", - "egg", - "eight", - "either", - "elbow", - "elder", - "electric", - "elegant", - "element", - "elephant", - "elevator", - "elite", - "else", - "embark", - "embody", - "embrace", - "emerge", - "emotion", - "employ", - "empower", - "empty", - "enable", - "enact", - "end", - "endless", - "endorse", - "enemy", - "energy", - "enforce", - "engage", - "engine", - "enhance", - "enjoy", - "enlist", - "enough", - "enrich", - "enroll", - "ensure", - "enter", - "entire", - "entry", - "envelope", - "episode", - "equal", - "equip", - "era", - "erase", - "erode", - "erosion", - "error", - "erupt", - "escape", - "essay", - "essence", - "estate", - "eternal", - "ethics", - "evidence", - "evil", - "evoke", - "evolve", - "exact", - "example", - "excess", - "exchange", - "excite", - "exclude", - "excuse", - "execute", - "exercise", - "exhaust", - "exhibit", - "exile", - "exist", - "exit", - "exotic", - "expand", - "expect", - "expire", - "explain", - "expose", - "express", - "extend", - "extra", - "eye", - "eyebrow", - "fabric", - "face", - "faculty", - "fade", - "faint", - "faith", - "fall", - "false", - "fame", - "family", - "famous", - "fan", - "fancy", - "fantasy", - "farm", - "fashion", - "fat", - "fatal", - "father", - "fatigue", - "fault", - "favorite", - "feature", - "february", - "federal", - "fee", - "feed", - "feel", - "female", - "fence", - "festival", - "fetch", - "fever", - "few", - "fiber", - "fiction", - "field", - "figure", - "file", - "film", - "filter", - "final", - "find", - "fine", - "finger", - "finish", - "fire", - "firm", - "first", - "fiscal", - "fish", - "fit", - "fitness", - "fix", - "flag", - "flame", - "flash", - "flat", - "flavor", - "flee", - "flight", - "flip", - "float", - "flock", - "floor", - "flower", - "fluid", - "flush", - "fly", - "foam", - "focus", - "fog", - "foil", - "fold", - "follow", - "food", - "foot", - "force", - "forest", - "forget", - "fork", - "fortune", - "forum", - "forward", - "fossil", - "foster", - "found", - "fox", - "fragile", - "frame", - "frequent", - "fresh", - "friend", - "fringe", - "frog", - "front", - "frost", - "frown", - "frozen", - "fruit", - "fuel", - "fun", - "funny", - "furnace", - "fury", - "future", - "gadget", - "gain", - "galaxy", - "gallery", - "game", - "gap", - "garage", - "garbage", - "garden", - "garlic", - "garment", - "gas", - "gasp", - "gate", - "gather", - "gauge", - "gaze", - "general", - "genius", - "genre", - "gentle", - "genuine", - "gesture", - "ghost", - "giant", - "gift", - "giggle", - "ginger", - "giraffe", - "girl", - "give", - "glad", - "glance", - "glare", - "glass", - "glide", - "glimpse", - "globe", - "gloom", - "glory", - "glove", - "glow", - "glue", - "goat", - "goddess", - "gold", - "good", - "goose", - "gorilla", - "gospel", - "gossip", - "govern", - "gown", - "grab", - "grace", - "grain", - "grant", - "grape", - "grass", - "gravity", - "great", - "green", - "grid", - "grief", - "grit", - "grocery", - "group", - "grow", - "grunt", - "guard", - "guess", - "guide", - "guilt", - "guitar", - "gun", - "gym", - "habit", - "hair", - "half", - "hammer", - "hamster", - "hand", - "happy", - "harbor", - "hard", - "harsh", - "harvest", - "hat", - "have", - "hawk", - "hazard", - "head", - "health", - "heart", - "heavy", - "hedgehog", - "height", - "hello", - "helmet", - "help", - "hen", - "hero", - "hidden", - "high", - "hill", - "hint", - "hip", - "hire", - "history", - "hobby", - "hockey", - "hold", - "hole", - "holiday", - "hollow", - "home", - "honey", - "hood", - "hope", - "horn", - "horror", - "horse", - "hospital", - "host", - "hotel", - "hour", - "hover", - "hub", - "huge", - "human", - "humble", - "humor", - "hundred", - "hungry", - "hunt", - "hurdle", - "hurry", - "hurt", - "husband", - "hybrid", - "ice", - "icon", - "idea", - "identify", - "idle", - "ignore", - "ill", - "illegal", - "illness", - "image", - "imitate", - "immense", - "immune", - "impact", - "impose", - "improve", - "impulse", - "inch", - "include", - "income", - "increase", - "index", - "indicate", - "indoor", - "industry", - "infant", - "inflict", - "inform", - "inhale", - "inherit", - "initial", - "inject", - "injury", - "inmate", - "inner", - "innocent", - "input", - "inquiry", - "insane", - "insect", - "inside", - "inspire", - "install", - "intact", - "interest", - "into", - "invest", - "invite", - "involve", - "iron", - "island", - "isolate", - "issue", - "item", - "ivory", - "jacket", - "jaguar", - "jar", - "jazz", - "jealous", - "jeans", - "jelly", - "jewel", - "job", - "join", - "joke", - "journey", - "joy", - "judge", - "juice", - "jump", - "jungle", - "junior", - "junk", - "just", - "kangaroo", - "keen", - "keep", - "ketchup", - "key", - "kick", - "kid", - "kidney", - "kind", - "kingdom", - "kiss", - "kit", - "kitchen", - "kite", - "kitten", - "kiwi", - "knee", - "knife", - "knock", - "know", - "lab", - "label", - "labor", - "ladder", - "lady", - "lake", - "lamp", - "language", - "laptop", - "large", - "later", - "latin", - "laugh", - "laundry", - "lava", - "law", - "lawn", - "lawsuit", - "layer", - "lazy", - "leader", - "leaf", - "learn", - "leave", - "lecture", - "left", - "leg", - "legal", - "legend", - "leisure", - "lemon", - "lend", - "length", - "lens", - "leopard", - "lesson", - "letter", - "level", - "liar", - "liberty", - "library", - "license", - "life", - "lift", - "light", - "like", - "limb", - "limit", - "link", - "lion", - "liquid", - "list", - "little", - "live", - "lizard", - "load", - "loan", - "lobster", - "local", - "lock", - "logic", - "lonely", - "long", - "loop", - "lottery", - "loud", - "lounge", - "love", - "loyal", - "lucky", - "luggage", - "lumber", - "lunar", - "lunch", - "luxury", - "lyrics", - "machine", - "mad", - "magic", - "magnet", - "maid", - "mail", - "main", - "major", - "make", - "mammal", - "man", - "manage", - "mandate", - "mango", - "mansion", - "manual", - "maple", - "marble", - "march", - "margin", - "marine", - "market", - "marriage", - "mask", - "mass", - "master", - "match", - "material", - "math", - "matrix", - "matter", - "maximum", - "maze", - "meadow", - "mean", - "measure", - "meat", - "mechanic", - "medal", - "media", - "melody", - "melt", - "member", - "memory", - "mention", - "menu", - "mercy", - "merge", - "merit", - "merry", - "mesh", - "message", - "metal", - "method", - "middle", - "midnight", - "milk", - "million", - "mimic", - "mind", - "minimum", - "minor", - "minute", - "miracle", - "mirror", - "misery", - "miss", - "mistake", - "mix", - "mixed", - "mixture", - "mobile", - "model", - "modify", - "mom", - "moment", - "monitor", - "monkey", - "monster", - "month", - "moon", - "moral", - "more", - "morning", - "mosquito", - "mother", - "motion", - "motor", - "mountain", - "mouse", - "move", - "movie", - "much", - "muffin", - "mule", - "multiply", - "muscle", - "museum", - "mushroom", - "music", - "must", - "mutual", - "myself", - "mystery", - "myth", - "naive", - "name", - "napkin", - "narrow", - "nasty", - "nation", - "nature", - "near", - "neck", - "need", - "negative", - "neglect", - "neither", - "nephew", - "nerve", - "nest", - "net", - "network", - "neutral", - "never", - "news", - "next", - "nice", - "night", - "noble", - "noise", - "nominee", - "noodle", - "normal", - "north", - "nose", - "notable", - "note", - "nothing", - "notice", - "novel", - "now", - "nuclear", - "number", - "nurse", - "nut", - "oak", - "obey", - "object", - "oblige", - "obscure", - "observe", - "obtain", - "obvious", - "occur", - "ocean", - "october", - "odor", - "off", - "offer", - "office", - "often", - "oil", - "okay", - "old", - "olive", - "olympic", - "omit", - "once", - "one", - "onion", - "online", - "only", - "open", - "opera", - "opinion", - "oppose", - "option", - "orange", - "orbit", - "orchard", - "order", - "ordinary", - "organ", - "orient", - "original", - "orphan", - "ostrich", - "other", - "outdoor", - "outer", - "output", - "outside", - "oval", - "oven", - "over", - "own", - "owner", - "oxygen", - "oyster", - "ozone", - "pact", - "paddle", - "page", - "pair", - "palace", - "palm", - "panda", - "panel", - "panic", - "panther", - "paper", - "parade", - "parent", - "park", - "parrot", - "party", - "pass", - "patch", - "path", - "patient", - "patrol", - "pattern", - "pause", - "pave", - "payment", - "peace", - "peanut", - "pear", - "peasant", - "pelican", - "pen", - "penalty", - "pencil", - "people", - "pepper", - "perfect", - "permit", - "person", - "pet", - "phone", - "photo", - "phrase", - "physical", - "piano", - "picnic", - "picture", - "piece", - "pig", - "pigeon", - "pill", - "pilot", - "pink", - "pioneer", - "pipe", - "pistol", - "pitch", - "pizza", - "place", - "planet", - "plastic", - "plate", - "play", - "please", - "pledge", - "pluck", - "plug", - "plunge", - "poem", - "poet", - "point", - "polar", - "pole", - "police", - "pond", - "pony", - "pool", - "popular", - "portion", - "position", - "possible", - "post", - "potato", - "pottery", - "poverty", - "powder", - "power", - "practice", - "praise", - "predict", - "prefer", - "prepare", - "present", - "pretty", - "prevent", - "price", - "pride", - "primary", - "print", - "priority", - "prison", - "private", - "prize", - "problem", - "process", - "produce", - "profit", - "program", - "project", - "promote", - "proof", - "property", - "prosper", - "protect", - "proud", - "provide", - "public", - "pudding", - "pull", - "pulp", - "pulse", - "pumpkin", - "punch", - "pupil", - "puppy", - "purchase", - "purity", - "purpose", - "purse", - "push", - "put", - "puzzle", - "pyramid", - "quality", - "quantum", - "quarter", - "question", - "quick", - "quit", - "quiz", - "quote", - "rabbit", - "raccoon", - "race", - "rack", - "radar", - "radio", - "rail", - "rain", - "raise", - "rally", - "ramp", - "ranch", - "random", - "range", - "rapid", - "rare", - "rate", - "rather", - "raven", - "raw", - "razor", - "ready", - "real", - "reason", - "rebel", - "rebuild", - "recall", - "receive", - "recipe", - "record", - "recycle", - "reduce", - "reflect", - "reform", - "refuse", - "region", - "regret", - "regular", - "reject", - "relax", - "release", - "relief", - "rely", - "remain", - "remember", - "remind", - "remove", - "render", - "renew", - "rent", - "reopen", - "repair", - "repeat", - "replace", - "report", - "require", - "rescue", - "resemble", - "resist", - "resource", - "response", - "result", - "retire", - "retreat", - "return", - "reunion", - "reveal", - "review", - "reward", - "rhythm", - "rib", - "ribbon", - "rice", - "rich", - "ride", - "ridge", - "rifle", - "right", - "rigid", - "ring", - "riot", - "ripple", - "risk", - "ritual", - "rival", - "river", - "road", - "roast", - "robot", - "robust", - "rocket", - "romance", - "roof", - "rookie", - "room", - "rose", - "rotate", - "rough", - "round", - "route", - "royal", - "rubber", - "rude", - "rug", - "rule", - "run", - "runway", - "rural", - "sad", - "saddle", - "sadness", - "safe", - "sail", - "salad", - "salmon", - "salon", - "salt", - "salute", - "same", - "sample", - "sand", - "satisfy", - "satoshi", - "sauce", - "sausage", - "save", - "say", - "scale", - "scan", - "scare", - "scatter", - "scene", - "scheme", - "school", - "science", - "scissors", - "scorpion", - "scout", - "scrap", - "screen", - "script", - "scrub", - "sea", - "search", - "season", - "seat", - "second", - "secret", - "section", - "security", - "seed", - "seek", - "segment", - "select", - "sell", - "seminar", - "senior", - "sense", - "sentence", - "series", - "service", - "session", - "settle", - "setup", - "seven", - "shadow", - "shaft", - "shallow", - "share", - "shed", - "shell", - "sheriff", - "shield", - "shift", - "shine", - "ship", - "shiver", - "shock", - "shoe", - "shoot", - "shop", - "short", - "shoulder", - "shove", - "shrimp", - "shrug", - "shuffle", - "shy", - "sibling", - "sick", - "side", - "siege", - "sight", - "sign", - "silent", - "silk", - "silly", - "silver", - "similar", - "simple", - "since", - "sing", - "siren", - "sister", - "situate", - "six", - "size", - "skate", - "sketch", - "ski", - "skill", - "skin", - "skirt", - "skull", - "slab", - "slam", - "sleep", - "slender", - "slice", - "slide", - "slight", - "slim", - "slogan", - "slot", - "slow", - "slush", - "small", - "smart", - "smile", - "smoke", - "smooth", - "snack", - "snake", - "snap", - "sniff", - "snow", - "soap", - "soccer", - "social", - "sock", - "soda", - "soft", - "solar", - "soldier", - "solid", - "solution", - "solve", - "someone", - "song", - "soon", - "sorry", - "sort", - "soul", - "sound", - "soup", - "source", - "south", - "space", - "spare", - "spatial", - "spawn", - "speak", - "special", - "speed", - "spell", - "spend", - "sphere", - "spice", - "spider", - "spike", - "spin", - "spirit", - "split", - "spoil", - "sponsor", - "spoon", - "sport", - "spot", - "spray", - "spread", - "spring", - "spy", - "square", - "squeeze", - "squirrel", - "stable", - "stadium", - "staff", - "stage", - "stairs", - "stamp", - "stand", - "start", - "state", - "stay", - "steak", - "steel", - "stem", - "step", - "stereo", - "stick", - "still", - "sting", - "stock", - "stomach", - "stone", - "stool", - "story", - "stove", - "strategy", - "street", - "strike", - "strong", - "struggle", - "student", - "stuff", - "stumble", - "style", - "subject", - "submit", - "subway", - "success", - "such", - "sudden", - "suffer", - "sugar", - "suggest", - "suit", - "summer", - "sun", - "sunny", - "sunset", - "super", - "supply", - "supreme", - "sure", - "surface", - "surge", - "surprise", - "surround", - "survey", - "suspect", - "sustain", - "swallow", - "swamp", - "swap", - "swarm", - "swear", - "sweet", - "swift", - "swim", - "swing", - "switch", - "sword", - "symbol", - "symptom", - "syrup", - "system", - "table", - "tackle", - "tag", - "tail", - "talent", - "talk", - "tank", - "tape", - "target", - "task", - "taste", - "tattoo", - "taxi", - "teach", - "team", - "tell", - "ten", - "tenant", - "tennis", - "tent", - "term", - "test", - "text", - "thank", - "that", - "theme", - "then", - "theory", - "there", - "they", - "thing", - "this", - "thought", - "three", - "thrive", - "throw", - "thumb", - "thunder", - "ticket", - "tide", - "tiger", - "tilt", - "timber", - "time", - "tiny", - "tip", - "tired", - "tissue", - "title", - "toast", - "tobacco", - "today", - "toddler", - "toe", - "together", - "toilet", - "token", - "tomato", - "tomorrow", - "tone", - "tongue", - "tonight", - "tool", - "tooth", - "top", - "topic", - "topple", - "torch", - "tornado", - "tortoise", - "toss", - "total", - "tourist", - "toward", - "tower", - "town", - "toy", - "track", - "trade", - "traffic", - "tragic", - "train", - "transfer", - "trap", - "trash", - "travel", - "tray", - "treat", - "tree", - "trend", - "trial", - "tribe", - "trick", - "trigger", - "trim", - "trip", - "trophy", - "trouble", - "truck", - "true", - "truly", - "trumpet", - "trust", - "truth", - "try", - "tube", - "tuition", - "tumble", - "tuna", - "tunnel", - "turkey", - "turn", - "turtle", - "twelve", - "twenty", - "twice", - "twin", - "twist", - "two", - "type", - "typical", - "ugly", - "umbrella", - "unable", - "unaware", - "uncle", - "uncover", - "under", - "undo", - "unfair", - "unfold", - "unhappy", - "uniform", - "unique", - "unit", - "universe", - "unknown", - "unlock", - "until", - "unusual", - "unveil", - "update", - "upgrade", - "uphold", - "upon", - "upper", - "upset", - "urban", - "urge", - "usage", - "use", - "used", - "useful", - "useless", - "usual", - "utility", - "vacant", - "vacuum", - "vague", - "valid", - "valley", - "valve", - "van", - "vanish", - "vapor", - "various", - "vast", - "vault", - "vehicle", - "velvet", - "vendor", - "venture", - "venue", - "verb", - "verify", - "version", - "very", - "vessel", - "veteran", - "viable", - "vibrant", - "vicious", - "victory", - "video", - "view", - "village", - "vintage", - "violin", - "virtual", - "virus", - "visa", - "visit", - "visual", - "vital", - "vivid", - "vocal", - "voice", - "void", - "volcano", - "volume", - "vote", - "voyage", - "wage", - "wagon", - "wait", - "walk", - "wall", - "walnut", - "want", - "warfare", - "warm", - "warrior", - "wash", - "wasp", - "waste", - "water", - "wave", - "way", - "wealth", - "weapon", - "wear", - "weasel", - "weather", - "web", - "wedding", - "weekend", - "weird", - "welcome", - "west", - "wet", - "whale", - "what", - "wheat", - "wheel", - "when", - "where", - "whip", - "whisper", - "wide", - "width", - "wife", - "wild", - "will", - "win", - "window", - "wine", - "wing", - "wink", - "winner", - "winter", - "wire", - "wisdom", - "wise", - "wish", - "witness", - "wolf", - "woman", - "wonder", - "wood", - "wool", - "word", - "work", - "world", - "worry", - "worth", - "wrap", - "wreck", - "wrestle", - "wrist", - "write", - "wrong", - "yard", - "year", - "yellow", - "you", - "young", - "youth", - "zebra", - "zero", - "zone", - "zoo" -]; - -},{}],53:[function(require,module,exports){ -module.exports=[ - "あいこくしん", - "あいさつ", - "あいだ", - "あおぞら", - "あかちゃん", - "あきる", - "あけがた", - "あける", - "あこがれる", - "あさい", - "あさひ", - "あしあと", - "あじわう", - "あずかる", - "あずき", - "あそぶ", - "あたえる", - "あたためる", - "あたりまえ", - "あたる", - "あつい", - "あつかう", - "あっしゅく", - "あつまり", - "あつめる", - "あてな", - "あてはまる", - "あひる", - "あぶら", - "あぶる", - "あふれる", - "あまい", - "あまど", - "あまやかす", - "あまり", - "あみもの", - "あめりか", - "あやまる", - "あゆむ", - "あらいぐま", - "あらし", - "あらすじ", - "あらためる", - "あらゆる", - "あらわす", - "ありがとう", - "あわせる", - "あわてる", - "あんい", - "あんがい", - "あんこ", - "あんぜん", - "あんてい", - "あんない", - "あんまり", - "いいだす", - "いおん", - "いがい", - "いがく", - "いきおい", - "いきなり", - "いきもの", - "いきる", - "いくじ", - "いくぶん", - "いけばな", - "いけん", - "いこう", - "いこく", - "いこつ", - "いさましい", - "いさん", - "いしき", - "いじゅう", - "いじょう", - "いじわる", - "いずみ", - "いずれ", - "いせい", - "いせえび", - "いせかい", - "いせき", - "いぜん", - "いそうろう", - "いそがしい", - "いだい", - "いだく", - "いたずら", - "いたみ", - "いたりあ", - "いちおう", - "いちじ", - "いちど", - "いちば", - "いちぶ", - "いちりゅう", - "いつか", - "いっしゅん", - "いっせい", - "いっそう", - "いったん", - "いっち", - "いってい", - "いっぽう", - "いてざ", - "いてん", - "いどう", - "いとこ", - "いない", - "いなか", - "いねむり", - "いのち", - "いのる", - "いはつ", - "いばる", - "いはん", - "いびき", - "いひん", - "いふく", - "いへん", - "いほう", - "いみん", - "いもうと", - "いもたれ", - "いもり", - "いやがる", - "いやす", - "いよかん", - "いよく", - "いらい", - "いらすと", - "いりぐち", - "いりょう", - "いれい", - "いれもの", - "いれる", - "いろえんぴつ", - "いわい", - "いわう", - "いわかん", - "いわば", - "いわゆる", - "いんげんまめ", - "いんさつ", - "いんしょう", - "いんよう", - "うえき", - "うえる", - "うおざ", - "うがい", - "うかぶ", - "うかべる", - "うきわ", - "うくらいな", - "うくれれ", - "うけたまわる", - "うけつけ", - "うけとる", - "うけもつ", - "うける", - "うごかす", - "うごく", - "うこん", - "うさぎ", - "うしなう", - "うしろがみ", - "うすい", - "うすぎ", - "うすぐらい", - "うすめる", - "うせつ", - "うちあわせ", - "うちがわ", - "うちき", - "うちゅう", - "うっかり", - "うつくしい", - "うったえる", - "うつる", - "うどん", - "うなぎ", - "うなじ", - "うなずく", - "うなる", - "うねる", - "うのう", - "うぶげ", - "うぶごえ", - "うまれる", - "うめる", - "うもう", - "うやまう", - "うよく", - "うらがえす", - "うらぐち", - "うらない", - "うりあげ", - "うりきれ", - "うるさい", - "うれしい", - "うれゆき", - "うれる", - "うろこ", - "うわき", - "うわさ", - "うんこう", - "うんちん", - "うんてん", - "うんどう", - "えいえん", - "えいが", - "えいきょう", - "えいご", - "えいせい", - "えいぶん", - "えいよう", - "えいわ", - "えおり", - "えがお", - "えがく", - "えきたい", - "えくせる", - "えしゃく", - "えすて", - "えつらん", - "えのぐ", - "えほうまき", - "えほん", - "えまき", - "えもじ", - "えもの", - "えらい", - "えらぶ", - "えりあ", - "えんえん", - "えんかい", - "えんぎ", - "えんげき", - "えんしゅう", - "えんぜつ", - "えんそく", - "えんちょう", - "えんとつ", - "おいかける", - "おいこす", - "おいしい", - "おいつく", - "おうえん", - "おうさま", - "おうじ", - "おうせつ", - "おうたい", - "おうふく", - "おうべい", - "おうよう", - "おえる", - "おおい", - "おおう", - "おおどおり", - "おおや", - "おおよそ", - "おかえり", - "おかず", - "おがむ", - "おかわり", - "おぎなう", - "おきる", - "おくさま", - "おくじょう", - "おくりがな", - "おくる", - "おくれる", - "おこす", - "おこなう", - "おこる", - "おさえる", - "おさない", - "おさめる", - "おしいれ", - "おしえる", - "おじぎ", - "おじさん", - "おしゃれ", - "おそらく", - "おそわる", - "おたがい", - "おたく", - "おだやか", - "おちつく", - "おっと", - "おつり", - "おでかけ", - "おとしもの", - "おとなしい", - "おどり", - "おどろかす", - "おばさん", - "おまいり", - "おめでとう", - "おもいで", - "おもう", - "おもたい", - "おもちゃ", - "おやつ", - "おやゆび", - "およぼす", - "おらんだ", - "おろす", - "おんがく", - "おんけい", - "おんしゃ", - "おんせん", - "おんだん", - "おんちゅう", - "おんどけい", - "かあつ", - "かいが", - "がいき", - "がいけん", - "がいこう", - "かいさつ", - "かいしゃ", - "かいすいよく", - "かいぜん", - "かいぞうど", - "かいつう", - "かいてん", - "かいとう", - "かいふく", - "がいへき", - "かいほう", - "かいよう", - "がいらい", - "かいわ", - "かえる", - "かおり", - "かかえる", - "かがく", - "かがし", - "かがみ", - "かくご", - "かくとく", - "かざる", - "がぞう", - "かたい", - "かたち", - "がちょう", - "がっきゅう", - "がっこう", - "がっさん", - "がっしょう", - "かなざわし", - "かのう", - "がはく", - "かぶか", - "かほう", - "かほご", - "かまう", - "かまぼこ", - "かめれおん", - "かゆい", - "かようび", - "からい", - "かるい", - "かろう", - "かわく", - "かわら", - "がんか", - "かんけい", - "かんこう", - "かんしゃ", - "かんそう", - "かんたん", - "かんち", - "がんばる", - "きあい", - "きあつ", - "きいろ", - "ぎいん", - "きうい", - "きうん", - "きえる", - "きおう", - "きおく", - "きおち", - "きおん", - "きかい", - "きかく", - "きかんしゃ", - "ききて", - "きくばり", - "きくらげ", - "きけんせい", - "きこう", - "きこえる", - "きこく", - "きさい", - "きさく", - "きさま", - "きさらぎ", - "ぎじかがく", - "ぎしき", - "ぎじたいけん", - "ぎじにってい", - "ぎじゅつしゃ", - "きすう", - "きせい", - "きせき", - "きせつ", - "きそう", - "きぞく", - "きぞん", - "きたえる", - "きちょう", - "きつえん", - "ぎっちり", - "きつつき", - "きつね", - "きてい", - "きどう", - "きどく", - "きない", - "きなが", - "きなこ", - "きぬごし", - "きねん", - "きのう", - "きのした", - "きはく", - "きびしい", - "きひん", - "きふく", - "きぶん", - "きぼう", - "きほん", - "きまる", - "きみつ", - "きむずかしい", - "きめる", - "きもだめし", - "きもち", - "きもの", - "きゃく", - "きやく", - "ぎゅうにく", - "きよう", - "きょうりゅう", - "きらい", - "きらく", - "きりん", - "きれい", - "きれつ", - "きろく", - "ぎろん", - "きわめる", - "ぎんいろ", - "きんかくじ", - "きんじょ", - "きんようび", - "ぐあい", - "くいず", - "くうかん", - "くうき", - "くうぐん", - "くうこう", - "ぐうせい", - "くうそう", - "ぐうたら", - "くうふく", - "くうぼ", - "くかん", - "くきょう", - "くげん", - "ぐこう", - "くさい", - "くさき", - "くさばな", - "くさる", - "くしゃみ", - "くしょう", - "くすのき", - "くすりゆび", - "くせげ", - "くせん", - "ぐたいてき", - "くださる", - "くたびれる", - "くちこみ", - "くちさき", - "くつした", - "ぐっすり", - "くつろぐ", - "くとうてん", - "くどく", - "くなん", - "くねくね", - "くのう", - "くふう", - "くみあわせ", - "くみたてる", - "くめる", - "くやくしょ", - "くらす", - "くらべる", - "くるま", - "くれる", - "くろう", - "くわしい", - "ぐんかん", - "ぐんしょく", - "ぐんたい", - "ぐんて", - "けあな", - "けいかく", - "けいけん", - "けいこ", - "けいさつ", - "げいじゅつ", - "けいたい", - "げいのうじん", - "けいれき", - "けいろ", - "けおとす", - "けおりもの", - "げきか", - "げきげん", - "げきだん", - "げきちん", - "げきとつ", - "げきは", - "げきやく", - "げこう", - "げこくじょう", - "げざい", - "けさき", - "げざん", - "けしき", - "けしごむ", - "けしょう", - "げすと", - "けたば", - "けちゃっぷ", - "けちらす", - "けつあつ", - "けつい", - "けつえき", - "けっこん", - "けつじょ", - "けっせき", - "けってい", - "けつまつ", - "げつようび", - "げつれい", - "けつろん", - "げどく", - "けとばす", - "けとる", - "けなげ", - "けなす", - "けなみ", - "けぬき", - "げねつ", - "けねん", - "けはい", - "げひん", - "けぶかい", - "げぼく", - "けまり", - "けみかる", - "けむし", - "けむり", - "けもの", - "けらい", - "けろけろ", - "けわしい", - "けんい", - "けんえつ", - "けんお", - "けんか", - "げんき", - "けんげん", - "けんこう", - "けんさく", - "けんしゅう", - "けんすう", - "げんそう", - "けんちく", - "けんてい", - "けんとう", - "けんない", - "けんにん", - "げんぶつ", - "けんま", - "けんみん", - "けんめい", - "けんらん", - "けんり", - "こあくま", - "こいぬ", - "こいびと", - "ごうい", - "こうえん", - "こうおん", - "こうかん", - "ごうきゅう", - "ごうけい", - "こうこう", - "こうさい", - "こうじ", - "こうすい", - "ごうせい", - "こうそく", - "こうたい", - "こうちゃ", - "こうつう", - "こうてい", - "こうどう", - "こうない", - "こうはい", - "ごうほう", - "ごうまん", - "こうもく", - "こうりつ", - "こえる", - "こおり", - "ごかい", - "ごがつ", - "ごかん", - "こくご", - "こくさい", - "こくとう", - "こくない", - "こくはく", - "こぐま", - "こけい", - "こける", - "ここのか", - "こころ", - "こさめ", - "こしつ", - "こすう", - "こせい", - "こせき", - "こぜん", - "こそだて", - "こたい", - "こたえる", - "こたつ", - "こちょう", - "こっか", - "こつこつ", - "こつばん", - "こつぶ", - "こてい", - "こてん", - "ことがら", - "ことし", - "ことば", - "ことり", - "こなごな", - "こねこね", - "このまま", - "このみ", - "このよ", - "ごはん", - "こひつじ", - "こふう", - "こふん", - "こぼれる", - "ごまあぶら", - "こまかい", - "ごますり", - "こまつな", - "こまる", - "こむぎこ", - "こもじ", - "こもち", - "こもの", - "こもん", - "こやく", - "こやま", - "こゆう", - "こゆび", - "こよい", - "こよう", - "こりる", - "これくしょん", - "ころっけ", - "こわもて", - "こわれる", - "こんいん", - "こんかい", - "こんき", - "こんしゅう", - "こんすい", - "こんだて", - "こんとん", - "こんなん", - "こんびに", - "こんぽん", - "こんまけ", - "こんや", - "こんれい", - "こんわく", - "ざいえき", - "さいかい", - "さいきん", - "ざいげん", - "ざいこ", - "さいしょ", - "さいせい", - "ざいたく", - "ざいちゅう", - "さいてき", - "ざいりょう", - "さうな", - "さかいし", - "さがす", - "さかな", - "さかみち", - "さがる", - "さぎょう", - "さくし", - "さくひん", - "さくら", - "さこく", - "さこつ", - "さずかる", - "ざせき", - "さたん", - "さつえい", - "ざつおん", - "ざっか", - "ざつがく", - "さっきょく", - "ざっし", - "さつじん", - "ざっそう", - "さつたば", - "さつまいも", - "さてい", - "さといも", - "さとう", - "さとおや", - "さとし", - "さとる", - "さのう", - "さばく", - "さびしい", - "さべつ", - "さほう", - "さほど", - "さます", - "さみしい", - "さみだれ", - "さむけ", - "さめる", - "さやえんどう", - "さゆう", - "さよう", - "さよく", - "さらだ", - "ざるそば", - "さわやか", - "さわる", - "さんいん", - "さんか", - "さんきゃく", - "さんこう", - "さんさい", - "ざんしょ", - "さんすう", - "さんせい", - "さんそ", - "さんち", - "さんま", - "さんみ", - "さんらん", - "しあい", - "しあげ", - "しあさって", - "しあわせ", - "しいく", - "しいん", - "しうち", - "しえい", - "しおけ", - "しかい", - "しかく", - "じかん", - "しごと", - "しすう", - "じだい", - "したうけ", - "したぎ", - "したて", - "したみ", - "しちょう", - "しちりん", - "しっかり", - "しつじ", - "しつもん", - "してい", - "してき", - "してつ", - "じてん", - "じどう", - "しなぎれ", - "しなもの", - "しなん", - "しねま", - "しねん", - "しのぐ", - "しのぶ", - "しはい", - "しばかり", - "しはつ", - "しはらい", - "しはん", - "しひょう", - "しふく", - "じぶん", - "しへい", - "しほう", - "しほん", - "しまう", - "しまる", - "しみん", - "しむける", - "じむしょ", - "しめい", - "しめる", - "しもん", - "しゃいん", - "しゃうん", - "しゃおん", - "じゃがいも", - "しやくしょ", - "しゃくほう", - "しゃけん", - "しゃこ", - "しゃざい", - "しゃしん", - "しゃせん", - "しゃそう", - "しゃたい", - "しゃちょう", - "しゃっきん", - "じゃま", - "しゃりん", - "しゃれい", - "じゆう", - "じゅうしょ", - "しゅくはく", - "じゅしん", - "しゅっせき", - "しゅみ", - "しゅらば", - "じゅんばん", - "しょうかい", - "しょくたく", - "しょっけん", - "しょどう", - "しょもつ", - "しらせる", - "しらべる", - "しんか", - "しんこう", - "じんじゃ", - "しんせいじ", - "しんちく", - "しんりん", - "すあげ", - "すあし", - "すあな", - "ずあん", - "すいえい", - "すいか", - "すいとう", - "ずいぶん", - "すいようび", - "すうがく", - "すうじつ", - "すうせん", - "すおどり", - "すきま", - "すくう", - "すくない", - "すける", - "すごい", - "すこし", - "ずさん", - "すずしい", - "すすむ", - "すすめる", - "すっかり", - "ずっしり", - "ずっと", - "すてき", - "すてる", - "すねる", - "すのこ", - "すはだ", - "すばらしい", - "ずひょう", - "ずぶぬれ", - "すぶり", - "すふれ", - "すべて", - "すべる", - "ずほう", - "すぼん", - "すまい", - "すめし", - "すもう", - "すやき", - "すらすら", - "するめ", - "すれちがう", - "すろっと", - "すわる", - "すんぜん", - "すんぽう", - "せあぶら", - "せいかつ", - "せいげん", - "せいじ", - "せいよう", - "せおう", - "せかいかん", - "せきにん", - "せきむ", - "せきゆ", - "せきらんうん", - "せけん", - "せこう", - "せすじ", - "せたい", - "せたけ", - "せっかく", - "せっきゃく", - "ぜっく", - "せっけん", - "せっこつ", - "せっさたくま", - "せつぞく", - "せつだん", - "せつでん", - "せっぱん", - "せつび", - "せつぶん", - "せつめい", - "せつりつ", - "せなか", - "せのび", - "せはば", - "せびろ", - "せぼね", - "せまい", - "せまる", - "せめる", - "せもたれ", - "せりふ", - "ぜんあく", - "せんい", - "せんえい", - "せんか", - "せんきょ", - "せんく", - "せんげん", - "ぜんご", - "せんさい", - "せんしゅ", - "せんすい", - "せんせい", - "せんぞ", - "せんたく", - "せんちょう", - "せんてい", - "せんとう", - "せんぬき", - "せんねん", - "せんぱい", - "ぜんぶ", - "ぜんぽう", - "せんむ", - "せんめんじょ", - "せんもん", - "せんやく", - "せんゆう", - "せんよう", - "ぜんら", - "ぜんりゃく", - "せんれい", - "せんろ", - "そあく", - "そいとげる", - "そいね", - "そうがんきょう", - "そうき", - "そうご", - "そうしん", - "そうだん", - "そうなん", - "そうび", - "そうめん", - "そうり", - "そえもの", - "そえん", - "そがい", - "そげき", - "そこう", - "そこそこ", - "そざい", - "そしな", - "そせい", - "そせん", - "そそぐ", - "そだてる", - "そつう", - "そつえん", - "そっかん", - "そつぎょう", - "そっけつ", - "そっこう", - "そっせん", - "そっと", - "そとがわ", - "そとづら", - "そなえる", - "そなた", - "そふぼ", - "そぼく", - "そぼろ", - "そまつ", - "そまる", - "そむく", - "そむりえ", - "そめる", - "そもそも", - "そよかぜ", - "そらまめ", - "そろう", - "そんかい", - "そんけい", - "そんざい", - "そんしつ", - "そんぞく", - "そんちょう", - "ぞんび", - "ぞんぶん", - "そんみん", - "たあい", - "たいいん", - "たいうん", - "たいえき", - "たいおう", - "だいがく", - "たいき", - "たいぐう", - "たいけん", - "たいこ", - "たいざい", - "だいじょうぶ", - "だいすき", - "たいせつ", - "たいそう", - "だいたい", - "たいちょう", - "たいてい", - "だいどころ", - "たいない", - "たいねつ", - "たいのう", - "たいはん", - "だいひょう", - "たいふう", - "たいへん", - "たいほ", - "たいまつばな", - "たいみんぐ", - "たいむ", - "たいめん", - "たいやき", - "たいよう", - "たいら", - "たいりょく", - "たいる", - "たいわん", - "たうえ", - "たえる", - "たおす", - "たおる", - "たおれる", - "たかい", - "たかね", - "たきび", - "たくさん", - "たこく", - "たこやき", - "たさい", - "たしざん", - "だじゃれ", - "たすける", - "たずさわる", - "たそがれ", - "たたかう", - "たたく", - "ただしい", - "たたみ", - "たちばな", - "だっかい", - "だっきゃく", - "だっこ", - "だっしゅつ", - "だったい", - "たてる", - "たとえる", - "たなばた", - "たにん", - "たぬき", - "たのしみ", - "たはつ", - "たぶん", - "たべる", - "たぼう", - "たまご", - "たまる", - "だむる", - "ためいき", - "ためす", - "ためる", - "たもつ", - "たやすい", - "たよる", - "たらす", - "たりきほんがん", - "たりょう", - "たりる", - "たると", - "たれる", - "たれんと", - "たろっと", - "たわむれる", - "だんあつ", - "たんい", - "たんおん", - "たんか", - "たんき", - "たんけん", - "たんご", - "たんさん", - "たんじょうび", - "だんせい", - "たんそく", - "たんたい", - "だんち", - "たんてい", - "たんとう", - "だんな", - "たんにん", - "だんねつ", - "たんのう", - "たんぴん", - "だんぼう", - "たんまつ", - "たんめい", - "だんれつ", - "だんろ", - "だんわ", - "ちあい", - "ちあん", - "ちいき", - "ちいさい", - "ちえん", - "ちかい", - "ちから", - "ちきゅう", - "ちきん", - "ちけいず", - "ちけん", - "ちこく", - "ちさい", - "ちしき", - "ちしりょう", - "ちせい", - "ちそう", - "ちたい", - "ちたん", - "ちちおや", - "ちつじょ", - "ちてき", - "ちてん", - "ちぬき", - "ちぬり", - "ちのう", - "ちひょう", - "ちへいせん", - "ちほう", - "ちまた", - "ちみつ", - "ちみどろ", - "ちめいど", - "ちゃんこなべ", - "ちゅうい", - "ちゆりょく", - "ちょうし", - "ちょさくけん", - "ちらし", - "ちらみ", - "ちりがみ", - "ちりょう", - "ちるど", - "ちわわ", - "ちんたい", - "ちんもく", - "ついか", - "ついたち", - "つうか", - "つうじょう", - "つうはん", - "つうわ", - "つかう", - "つかれる", - "つくね", - "つくる", - "つけね", - "つける", - "つごう", - "つたえる", - "つづく", - "つつじ", - "つつむ", - "つとめる", - "つながる", - "つなみ", - "つねづね", - "つのる", - "つぶす", - "つまらない", - "つまる", - "つみき", - "つめたい", - "つもり", - "つもる", - "つよい", - "つるぼ", - "つるみく", - "つわもの", - "つわり", - "てあし", - "てあて", - "てあみ", - "ていおん", - "ていか", - "ていき", - "ていけい", - "ていこく", - "ていさつ", - "ていし", - "ていせい", - "ていたい", - "ていど", - "ていねい", - "ていひょう", - "ていへん", - "ていぼう", - "てうち", - "ておくれ", - "てきとう", - "てくび", - "でこぼこ", - "てさぎょう", - "てさげ", - "てすり", - "てそう", - "てちがい", - "てちょう", - "てつがく", - "てつづき", - "でっぱ", - "てつぼう", - "てつや", - "でぬかえ", - "てぬき", - "てぬぐい", - "てのひら", - "てはい", - "てぶくろ", - "てふだ", - "てほどき", - "てほん", - "てまえ", - "てまきずし", - "てみじか", - "てみやげ", - "てらす", - "てれび", - "てわけ", - "てわたし", - "でんあつ", - "てんいん", - "てんかい", - "てんき", - "てんぐ", - "てんけん", - "てんごく", - "てんさい", - "てんし", - "てんすう", - "でんち", - "てんてき", - "てんとう", - "てんない", - "てんぷら", - "てんぼうだい", - "てんめつ", - "てんらんかい", - "でんりょく", - "でんわ", - "どあい", - "といれ", - "どうかん", - "とうきゅう", - "どうぐ", - "とうし", - "とうむぎ", - "とおい", - "とおか", - "とおく", - "とおす", - "とおる", - "とかい", - "とかす", - "ときおり", - "ときどき", - "とくい", - "とくしゅう", - "とくてん", - "とくに", - "とくべつ", - "とけい", - "とける", - "とこや", - "とさか", - "としょかん", - "とそう", - "とたん", - "とちゅう", - "とっきゅう", - "とっくん", - "とつぜん", - "とつにゅう", - "とどける", - "ととのえる", - "とない", - "となえる", - "となり", - "とのさま", - "とばす", - "どぶがわ", - "とほう", - "とまる", - "とめる", - "ともだち", - "ともる", - "どようび", - "とらえる", - "とんかつ", - "どんぶり", - "ないかく", - "ないこう", - "ないしょ", - "ないす", - "ないせん", - "ないそう", - "なおす", - "ながい", - "なくす", - "なげる", - "なこうど", - "なさけ", - "なたでここ", - "なっとう", - "なつやすみ", - "ななおし", - "なにごと", - "なにもの", - "なにわ", - "なのか", - "なふだ", - "なまいき", - "なまえ", - "なまみ", - "なみだ", - "なめらか", - "なめる", - "なやむ", - "ならう", - "ならび", - "ならぶ", - "なれる", - "なわとび", - "なわばり", - "にあう", - "にいがた", - "にうけ", - "におい", - "にかい", - "にがて", - "にきび", - "にくしみ", - "にくまん", - "にげる", - "にさんかたんそ", - "にしき", - "にせもの", - "にちじょう", - "にちようび", - "にっか", - "にっき", - "にっけい", - "にっこう", - "にっさん", - "にっしょく", - "にっすう", - "にっせき", - "にってい", - "になう", - "にほん", - "にまめ", - "にもつ", - "にやり", - "にゅういん", - "にりんしゃ", - "にわとり", - "にんい", - "にんか", - "にんき", - "にんげん", - "にんしき", - "にんずう", - "にんそう", - "にんたい", - "にんち", - "にんてい", - "にんにく", - "にんぷ", - "にんまり", - "にんむ", - "にんめい", - "にんよう", - "ぬいくぎ", - "ぬかす", - "ぬぐいとる", - "ぬぐう", - "ぬくもり", - "ぬすむ", - "ぬまえび", - "ぬめり", - "ぬらす", - "ぬんちゃく", - "ねあげ", - "ねいき", - "ねいる", - "ねいろ", - "ねぐせ", - "ねくたい", - "ねくら", - "ねこぜ", - "ねこむ", - "ねさげ", - "ねすごす", - "ねそべる", - "ねだん", - "ねつい", - "ねっしん", - "ねつぞう", - "ねったいぎょ", - "ねぶそく", - "ねふだ", - "ねぼう", - "ねほりはほり", - "ねまき", - "ねまわし", - "ねみみ", - "ねむい", - "ねむたい", - "ねもと", - "ねらう", - "ねわざ", - "ねんいり", - "ねんおし", - "ねんかん", - "ねんきん", - "ねんぐ", - "ねんざ", - "ねんし", - "ねんちゃく", - "ねんど", - "ねんぴ", - "ねんぶつ", - "ねんまつ", - "ねんりょう", - "ねんれい", - "のいず", - "のおづま", - "のがす", - "のきなみ", - "のこぎり", - "のこす", - "のこる", - "のせる", - "のぞく", - "のぞむ", - "のたまう", - "のちほど", - "のっく", - "のばす", - "のはら", - "のべる", - "のぼる", - "のみもの", - "のやま", - "のらいぬ", - "のらねこ", - "のりもの", - "のりゆき", - "のれん", - "のんき", - "ばあい", - "はあく", - "ばあさん", - "ばいか", - "ばいく", - "はいけん", - "はいご", - "はいしん", - "はいすい", - "はいせん", - "はいそう", - "はいち", - "ばいばい", - "はいれつ", - "はえる", - "はおる", - "はかい", - "ばかり", - "はかる", - "はくしゅ", - "はけん", - "はこぶ", - "はさみ", - "はさん", - "はしご", - "ばしょ", - "はしる", - "はせる", - "ぱそこん", - "はそん", - "はたん", - "はちみつ", - "はつおん", - "はっかく", - "はづき", - "はっきり", - "はっくつ", - "はっけん", - "はっこう", - "はっさん", - "はっしん", - "はったつ", - "はっちゅう", - "はってん", - "はっぴょう", - "はっぽう", - "はなす", - "はなび", - "はにかむ", - "はぶらし", - "はみがき", - "はむかう", - "はめつ", - "はやい", - "はやし", - "はらう", - "はろうぃん", - "はわい", - "はんい", - "はんえい", - "はんおん", - "はんかく", - "はんきょう", - "ばんぐみ", - "はんこ", - "はんしゃ", - "はんすう", - "はんだん", - "ぱんち", - "ぱんつ", - "はんてい", - "はんとし", - "はんのう", - "はんぱ", - "はんぶん", - "はんぺん", - "はんぼうき", - "はんめい", - "はんらん", - "はんろん", - "ひいき", - "ひうん", - "ひえる", - "ひかく", - "ひかり", - "ひかる", - "ひかん", - "ひくい", - "ひけつ", - "ひこうき", - "ひこく", - "ひさい", - "ひさしぶり", - "ひさん", - "びじゅつかん", - "ひしょ", - "ひそか", - "ひそむ", - "ひたむき", - "ひだり", - "ひたる", - "ひつぎ", - "ひっこし", - "ひっし", - "ひつじゅひん", - "ひっす", - "ひつぜん", - "ぴったり", - "ぴっちり", - "ひつよう", - "ひてい", - "ひとごみ", - "ひなまつり", - "ひなん", - "ひねる", - "ひはん", - "ひびく", - "ひひょう", - "ひほう", - "ひまわり", - "ひまん", - "ひみつ", - "ひめい", - "ひめじし", - "ひやけ", - "ひやす", - "ひよう", - "びょうき", - "ひらがな", - "ひらく", - "ひりつ", - "ひりょう", - "ひるま", - "ひるやすみ", - "ひれい", - "ひろい", - "ひろう", - "ひろき", - "ひろゆき", - "ひんかく", - "ひんけつ", - "ひんこん", - "ひんしゅ", - "ひんそう", - "ぴんち", - "ひんぱん", - "びんぼう", - "ふあん", - "ふいうち", - "ふうけい", - "ふうせん", - "ぷうたろう", - "ふうとう", - "ふうふ", - "ふえる", - "ふおん", - "ふかい", - "ふきん", - "ふくざつ", - "ふくぶくろ", - "ふこう", - "ふさい", - "ふしぎ", - "ふじみ", - "ふすま", - "ふせい", - "ふせぐ", - "ふそく", - "ぶたにく", - "ふたん", - "ふちょう", - "ふつう", - "ふつか", - "ふっかつ", - "ふっき", - "ふっこく", - "ぶどう", - "ふとる", - "ふとん", - "ふのう", - "ふはい", - "ふひょう", - "ふへん", - "ふまん", - "ふみん", - "ふめつ", - "ふめん", - "ふよう", - "ふりこ", - "ふりる", - "ふるい", - "ふんいき", - "ぶんがく", - "ぶんぐ", - "ふんしつ", - "ぶんせき", - "ふんそう", - "ぶんぽう", - "へいあん", - "へいおん", - "へいがい", - "へいき", - "へいげん", - "へいこう", - "へいさ", - "へいしゃ", - "へいせつ", - "へいそ", - "へいたく", - "へいてん", - "へいねつ", - "へいわ", - "へきが", - "へこむ", - "べにいろ", - "べにしょうが", - "へらす", - "へんかん", - "べんきょう", - "べんごし", - "へんさい", - "へんたい", - "べんり", - "ほあん", - "ほいく", - "ぼうぎょ", - "ほうこく", - "ほうそう", - "ほうほう", - "ほうもん", - "ほうりつ", - "ほえる", - "ほおん", - "ほかん", - "ほきょう", - "ぼきん", - "ほくろ", - "ほけつ", - "ほけん", - "ほこう", - "ほこる", - "ほしい", - "ほしつ", - "ほしゅ", - "ほしょう", - "ほせい", - "ほそい", - "ほそく", - "ほたて", - "ほたる", - "ぽちぶくろ", - "ほっきょく", - "ほっさ", - "ほったん", - "ほとんど", - "ほめる", - "ほんい", - "ほんき", - "ほんけ", - "ほんしつ", - "ほんやく", - "まいにち", - "まかい", - "まかせる", - "まがる", - "まける", - "まこと", - "まさつ", - "まじめ", - "ますく", - "まぜる", - "まつり", - "まとめ", - "まなぶ", - "まぬけ", - "まねく", - "まほう", - "まもる", - "まゆげ", - "まよう", - "まろやか", - "まわす", - "まわり", - "まわる", - "まんが", - "まんきつ", - "まんぞく", - "まんなか", - "みいら", - "みうち", - "みえる", - "みがく", - "みかた", - "みかん", - "みけん", - "みこん", - "みじかい", - "みすい", - "みすえる", - "みせる", - "みっか", - "みつかる", - "みつける", - "みてい", - "みとめる", - "みなと", - "みなみかさい", - "みねらる", - "みのう", - "みのがす", - "みほん", - "みもと", - "みやげ", - "みらい", - "みりょく", - "みわく", - "みんか", - "みんぞく", - "むいか", - "むえき", - "むえん", - "むかい", - "むかう", - "むかえ", - "むかし", - "むぎちゃ", - "むける", - "むげん", - "むさぼる", - "むしあつい", - "むしば", - "むじゅん", - "むしろ", - "むすう", - "むすこ", - "むすぶ", - "むすめ", - "むせる", - "むせん", - "むちゅう", - "むなしい", - "むのう", - "むやみ", - "むよう", - "むらさき", - "むりょう", - "むろん", - "めいあん", - "めいうん", - "めいえん", - "めいかく", - "めいきょく", - "めいさい", - "めいし", - "めいそう", - "めいぶつ", - "めいれい", - "めいわく", - "めぐまれる", - "めざす", - "めした", - "めずらしい", - "めだつ", - "めまい", - "めやす", - "めんきょ", - "めんせき", - "めんどう", - "もうしあげる", - "もうどうけん", - "もえる", - "もくし", - "もくてき", - "もくようび", - "もちろん", - "もどる", - "もらう", - "もんく", - "もんだい", - "やおや", - "やける", - "やさい", - "やさしい", - "やすい", - "やすたろう", - "やすみ", - "やせる", - "やそう", - "やたい", - "やちん", - "やっと", - "やっぱり", - "やぶる", - "やめる", - "ややこしい", - "やよい", - "やわらかい", - "ゆうき", - "ゆうびんきょく", - "ゆうべ", - "ゆうめい", - "ゆけつ", - "ゆしゅつ", - "ゆせん", - "ゆそう", - "ゆたか", - "ゆちゃく", - "ゆでる", - "ゆにゅう", - "ゆびわ", - "ゆらい", - "ゆれる", - "ようい", - "ようか", - "ようきゅう", - "ようじ", - "ようす", - "ようちえん", - "よかぜ", - "よかん", - "よきん", - "よくせい", - "よくぼう", - "よけい", - "よごれる", - "よさん", - "よしゅう", - "よそう", - "よそく", - "よっか", - "よてい", - "よどがわく", - "よねつ", - "よやく", - "よゆう", - "よろこぶ", - "よろしい", - "らいう", - "らくがき", - "らくご", - "らくさつ", - "らくだ", - "らしんばん", - "らせん", - "らぞく", - "らたい", - "らっか", - "られつ", - "りえき", - "りかい", - "りきさく", - "りきせつ", - "りくぐん", - "りくつ", - "りけん", - "りこう", - "りせい", - "りそう", - "りそく", - "りてん", - "りねん", - "りゆう", - "りゅうがく", - "りよう", - "りょうり", - "りょかん", - "りょくちゃ", - "りょこう", - "りりく", - "りれき", - "りろん", - "りんご", - "るいけい", - "るいさい", - "るいじ", - "るいせき", - "るすばん", - "るりがわら", - "れいかん", - "れいぎ", - "れいせい", - "れいぞうこ", - "れいとう", - "れいぼう", - "れきし", - "れきだい", - "れんあい", - "れんけい", - "れんこん", - "れんさい", - "れんしゅう", - "れんぞく", - "れんらく", - "ろうか", - "ろうご", - "ろうじん", - "ろうそく", - "ろくが", - "ろこつ", - "ろじうら", - "ろしゅつ", - "ろせん", - "ろてん", - "ろめん", - "ろれつ", - "ろんぎ", - "ろんぱ", - "ろんぶん", - "ろんり", - "わかす", - "わかめ", - "わかやま", - "わかれる", - "わしつ", - "わじまし", - "わすれもの", - "わらう", - "われる" -]; - -},{}],54:[function(require,module,exports){ -module.exports=[ - "abacate", - "abaixo", - "abalar", - "abater", - "abduzir", - "abelha", - "aberto", - "abismo", - "abotoar", - "abranger", - "abreviar", - "abrigar", - "abrupto", - "absinto", - "absoluto", - "absurdo", - "abutre", - "acabado", - "acalmar", - "acampar", - "acanhar", - "acaso", - "aceitar", - "acelerar", - "acenar", - "acervo", - "acessar", - "acetona", - "achatar", - "acidez", - "acima", - "acionado", - "acirrar", - "aclamar", - "aclive", - "acolhida", - "acomodar", - "acoplar", - "acordar", - "acumular", - "acusador", - "adaptar", - "adega", - "adentro", - "adepto", - "adequar", - "aderente", - "adesivo", - "adeus", - "adiante", - "aditivo", - "adjetivo", - "adjunto", - "admirar", - "adorar", - "adquirir", - "adubo", - "adverso", - "advogado", - "aeronave", - "afastar", - "aferir", - "afetivo", - "afinador", - "afivelar", - "aflito", - "afluente", - "afrontar", - "agachar", - "agarrar", - "agasalho", - "agenciar", - "agilizar", - "agiota", - "agitado", - "agora", - "agradar", - "agreste", - "agrupar", - "aguardar", - "agulha", - "ajoelhar", - "ajudar", - "ajustar", - "alameda", - "alarme", - "alastrar", - "alavanca", - "albergue", - "albino", - "alcatra", - "aldeia", - "alecrim", - "alegria", - "alertar", - "alface", - "alfinete", - "algum", - "alheio", - "aliar", - "alicate", - "alienar", - "alinhar", - "aliviar", - "almofada", - "alocar", - "alpiste", - "alterar", - "altitude", - "alucinar", - "alugar", - "aluno", - "alusivo", - "alvo", - "amaciar", - "amador", - "amarelo", - "amassar", - "ambas", - "ambiente", - "ameixa", - "amenizar", - "amido", - "amistoso", - "amizade", - "amolador", - "amontoar", - "amoroso", - "amostra", - "amparar", - "ampliar", - "ampola", - "anagrama", - "analisar", - "anarquia", - "anatomia", - "andaime", - "anel", - "anexo", - "angular", - "animar", - "anjo", - "anomalia", - "anotado", - "ansioso", - "anterior", - "anuidade", - "anunciar", - "anzol", - "apagador", - "apalpar", - "apanhado", - "apego", - "apelido", - "apertada", - "apesar", - "apetite", - "apito", - "aplauso", - "aplicada", - "apoio", - "apontar", - "aposta", - "aprendiz", - "aprovar", - "aquecer", - "arame", - "aranha", - "arara", - "arcada", - "ardente", - "areia", - "arejar", - "arenito", - "aresta", - "argiloso", - "argola", - "arma", - "arquivo", - "arraial", - "arrebate", - "arriscar", - "arroba", - "arrumar", - "arsenal", - "arterial", - "artigo", - "arvoredo", - "asfaltar", - "asilado", - "aspirar", - "assador", - "assinar", - "assoalho", - "assunto", - "astral", - "atacado", - "atadura", - "atalho", - "atarefar", - "atear", - "atender", - "aterro", - "ateu", - "atingir", - "atirador", - "ativo", - "atoleiro", - "atracar", - "atrevido", - "atriz", - "atual", - "atum", - "auditor", - "aumentar", - "aura", - "aurora", - "autismo", - "autoria", - "autuar", - "avaliar", - "avante", - "avaria", - "avental", - "avesso", - "aviador", - "avisar", - "avulso", - "axila", - "azarar", - "azedo", - "azeite", - "azulejo", - "babar", - "babosa", - "bacalhau", - "bacharel", - "bacia", - "bagagem", - "baiano", - "bailar", - "baioneta", - "bairro", - "baixista", - "bajular", - "baleia", - "baliza", - "balsa", - "banal", - "bandeira", - "banho", - "banir", - "banquete", - "barato", - "barbado", - "baronesa", - "barraca", - "barulho", - "baseado", - "bastante", - "batata", - "batedor", - "batida", - "batom", - "batucar", - "baunilha", - "beber", - "beijo", - "beirada", - "beisebol", - "beldade", - "beleza", - "belga", - "beliscar", - "bendito", - "bengala", - "benzer", - "berimbau", - "berlinda", - "berro", - "besouro", - "bexiga", - "bezerro", - "bico", - "bicudo", - "bienal", - "bifocal", - "bifurcar", - "bigorna", - "bilhete", - "bimestre", - "bimotor", - "biologia", - "biombo", - "biosfera", - "bipolar", - "birrento", - "biscoito", - "bisneto", - "bispo", - "bissexto", - "bitola", - "bizarro", - "blindado", - "bloco", - "bloquear", - "boato", - "bobagem", - "bocado", - "bocejo", - "bochecha", - "boicotar", - "bolada", - "boletim", - "bolha", - "bolo", - "bombeiro", - "bonde", - "boneco", - "bonita", - "borbulha", - "borda", - "boreal", - "borracha", - "bovino", - "boxeador", - "branco", - "brasa", - "braveza", - "breu", - "briga", - "brilho", - "brincar", - "broa", - "brochura", - "bronzear", - "broto", - "bruxo", - "bucha", - "budismo", - "bufar", - "bule", - "buraco", - "busca", - "busto", - "buzina", - "cabana", - "cabelo", - "cabide", - "cabo", - "cabrito", - "cacau", - "cacetada", - "cachorro", - "cacique", - "cadastro", - "cadeado", - "cafezal", - "caiaque", - "caipira", - "caixote", - "cajado", - "caju", - "calafrio", - "calcular", - "caldeira", - "calibrar", - "calmante", - "calota", - "camada", - "cambista", - "camisa", - "camomila", - "campanha", - "camuflar", - "canavial", - "cancelar", - "caneta", - "canguru", - "canhoto", - "canivete", - "canoa", - "cansado", - "cantar", - "canudo", - "capacho", - "capela", - "capinar", - "capotar", - "capricho", - "captador", - "capuz", - "caracol", - "carbono", - "cardeal", - "careca", - "carimbar", - "carneiro", - "carpete", - "carreira", - "cartaz", - "carvalho", - "casaco", - "casca", - "casebre", - "castelo", - "casulo", - "catarata", - "cativar", - "caule", - "causador", - "cautelar", - "cavalo", - "caverna", - "cebola", - "cedilha", - "cegonha", - "celebrar", - "celular", - "cenoura", - "censo", - "centeio", - "cercar", - "cerrado", - "certeiro", - "cerveja", - "cetim", - "cevada", - "chacota", - "chaleira", - "chamado", - "chapada", - "charme", - "chatice", - "chave", - "chefe", - "chegada", - "cheiro", - "cheque", - "chicote", - "chifre", - "chinelo", - "chocalho", - "chover", - "chumbo", - "chutar", - "chuva", - "cicatriz", - "ciclone", - "cidade", - "cidreira", - "ciente", - "cigana", - "cimento", - "cinto", - "cinza", - "ciranda", - "circuito", - "cirurgia", - "citar", - "clareza", - "clero", - "clicar", - "clone", - "clube", - "coado", - "coagir", - "cobaia", - "cobertor", - "cobrar", - "cocada", - "coelho", - "coentro", - "coeso", - "cogumelo", - "coibir", - "coifa", - "coiote", - "colar", - "coleira", - "colher", - "colidir", - "colmeia", - "colono", - "coluna", - "comando", - "combinar", - "comentar", - "comitiva", - "comover", - "complexo", - "comum", - "concha", - "condor", - "conectar", - "confuso", - "congelar", - "conhecer", - "conjugar", - "consumir", - "contrato", - "convite", - "cooperar", - "copeiro", - "copiador", - "copo", - "coquetel", - "coragem", - "cordial", - "corneta", - "coronha", - "corporal", - "correio", - "cortejo", - "coruja", - "corvo", - "cosseno", - "costela", - "cotonete", - "couro", - "couve", - "covil", - "cozinha", - "cratera", - "cravo", - "creche", - "credor", - "creme", - "crer", - "crespo", - "criada", - "criminal", - "crioulo", - "crise", - "criticar", - "crosta", - "crua", - "cruzeiro", - "cubano", - "cueca", - "cuidado", - "cujo", - "culatra", - "culminar", - "culpar", - "cultura", - "cumprir", - "cunhado", - "cupido", - "curativo", - "curral", - "cursar", - "curto", - "cuspir", - "custear", - "cutelo", - "damasco", - "datar", - "debater", - "debitar", - "deboche", - "debulhar", - "decalque", - "decimal", - "declive", - "decote", - "decretar", - "dedal", - "dedicado", - "deduzir", - "defesa", - "defumar", - "degelo", - "degrau", - "degustar", - "deitado", - "deixar", - "delator", - "delegado", - "delinear", - "delonga", - "demanda", - "demitir", - "demolido", - "dentista", - "depenado", - "depilar", - "depois", - "depressa", - "depurar", - "deriva", - "derramar", - "desafio", - "desbotar", - "descanso", - "desenho", - "desfiado", - "desgaste", - "desigual", - "deslize", - "desmamar", - "desova", - "despesa", - "destaque", - "desviar", - "detalhar", - "detentor", - "detonar", - "detrito", - "deusa", - "dever", - "devido", - "devotado", - "dezena", - "diagrama", - "dialeto", - "didata", - "difuso", - "digitar", - "dilatado", - "diluente", - "diminuir", - "dinastia", - "dinheiro", - "diocese", - "direto", - "discreta", - "disfarce", - "disparo", - "disquete", - "dissipar", - "distante", - "ditador", - "diurno", - "diverso", - "divisor", - "divulgar", - "dizer", - "dobrador", - "dolorido", - "domador", - "dominado", - "donativo", - "donzela", - "dormente", - "dorsal", - "dosagem", - "dourado", - "doutor", - "drenagem", - "drible", - "drogaria", - "duelar", - "duende", - "dueto", - "duplo", - "duquesa", - "durante", - "duvidoso", - "eclodir", - "ecoar", - "ecologia", - "edificar", - "edital", - "educado", - "efeito", - "efetivar", - "ejetar", - "elaborar", - "eleger", - "eleitor", - "elenco", - "elevador", - "eliminar", - "elogiar", - "embargo", - "embolado", - "embrulho", - "embutido", - "emenda", - "emergir", - "emissor", - "empatia", - "empenho", - "empinado", - "empolgar", - "emprego", - "empurrar", - "emulador", - "encaixe", - "encenado", - "enchente", - "encontro", - "endeusar", - "endossar", - "enfaixar", - "enfeite", - "enfim", - "engajado", - "engenho", - "englobar", - "engomado", - "engraxar", - "enguia", - "enjoar", - "enlatar", - "enquanto", - "enraizar", - "enrolado", - "enrugar", - "ensaio", - "enseada", - "ensino", - "ensopado", - "entanto", - "enteado", - "entidade", - "entortar", - "entrada", - "entulho", - "envergar", - "enviado", - "envolver", - "enxame", - "enxerto", - "enxofre", - "enxuto", - "epiderme", - "equipar", - "ereto", - "erguido", - "errata", - "erva", - "ervilha", - "esbanjar", - "esbelto", - "escama", - "escola", - "escrita", - "escuta", - "esfinge", - "esfolar", - "esfregar", - "esfumado", - "esgrima", - "esmalte", - "espanto", - "espelho", - "espiga", - "esponja", - "espreita", - "espumar", - "esquerda", - "estaca", - "esteira", - "esticar", - "estofado", - "estrela", - "estudo", - "esvaziar", - "etanol", - "etiqueta", - "euforia", - "europeu", - "evacuar", - "evaporar", - "evasivo", - "eventual", - "evidente", - "evoluir", - "exagero", - "exalar", - "examinar", - "exato", - "exausto", - "excesso", - "excitar", - "exclamar", - "executar", - "exemplo", - "exibir", - "exigente", - "exonerar", - "expandir", - "expelir", - "expirar", - "explanar", - "exposto", - "expresso", - "expulsar", - "externo", - "extinto", - "extrato", - "fabricar", - "fabuloso", - "faceta", - "facial", - "fada", - "fadiga", - "faixa", - "falar", - "falta", - "familiar", - "fandango", - "fanfarra", - "fantoche", - "fardado", - "farelo", - "farinha", - "farofa", - "farpa", - "fartura", - "fatia", - "fator", - "favorita", - "faxina", - "fazenda", - "fechado", - "feijoada", - "feirante", - "felino", - "feminino", - "fenda", - "feno", - "fera", - "feriado", - "ferrugem", - "ferver", - "festejar", - "fetal", - "feudal", - "fiapo", - "fibrose", - "ficar", - "ficheiro", - "figurado", - "fileira", - "filho", - "filme", - "filtrar", - "firmeza", - "fisgada", - "fissura", - "fita", - "fivela", - "fixador", - "fixo", - "flacidez", - "flamingo", - "flanela", - "flechada", - "flora", - "flutuar", - "fluxo", - "focal", - "focinho", - "fofocar", - "fogo", - "foguete", - "foice", - "folgado", - "folheto", - "forjar", - "formiga", - "forno", - "forte", - "fosco", - "fossa", - "fragata", - "fralda", - "frango", - "frasco", - "fraterno", - "freira", - "frente", - "fretar", - "frieza", - "friso", - "fritura", - "fronha", - "frustrar", - "fruteira", - "fugir", - "fulano", - "fuligem", - "fundar", - "fungo", - "funil", - "furador", - "furioso", - "futebol", - "gabarito", - "gabinete", - "gado", - "gaiato", - "gaiola", - "gaivota", - "galega", - "galho", - "galinha", - "galocha", - "ganhar", - "garagem", - "garfo", - "gargalo", - "garimpo", - "garoupa", - "garrafa", - "gasoduto", - "gasto", - "gata", - "gatilho", - "gaveta", - "gazela", - "gelado", - "geleia", - "gelo", - "gemada", - "gemer", - "gemido", - "generoso", - "gengiva", - "genial", - "genoma", - "genro", - "geologia", - "gerador", - "germinar", - "gesso", - "gestor", - "ginasta", - "gincana", - "gingado", - "girafa", - "girino", - "glacial", - "glicose", - "global", - "glorioso", - "goela", - "goiaba", - "golfe", - "golpear", - "gordura", - "gorjeta", - "gorro", - "gostoso", - "goteira", - "governar", - "gracejo", - "gradual", - "grafite", - "gralha", - "grampo", - "granada", - "gratuito", - "graveto", - "graxa", - "grego", - "grelhar", - "greve", - "grilo", - "grisalho", - "gritaria", - "grosso", - "grotesco", - "grudado", - "grunhido", - "gruta", - "guache", - "guarani", - "guaxinim", - "guerrear", - "guiar", - "guincho", - "guisado", - "gula", - "guloso", - "guru", - "habitar", - "harmonia", - "haste", - "haver", - "hectare", - "herdar", - "heresia", - "hesitar", - "hiato", - "hibernar", - "hidratar", - "hiena", - "hino", - "hipismo", - "hipnose", - "hipoteca", - "hoje", - "holofote", - "homem", - "honesto", - "honrado", - "hormonal", - "hospedar", - "humorado", - "iate", - "ideia", - "idoso", - "ignorado", - "igreja", - "iguana", - "ileso", - "ilha", - "iludido", - "iluminar", - "ilustrar", - "imagem", - "imediato", - "imenso", - "imersivo", - "iminente", - "imitador", - "imortal", - "impacto", - "impedir", - "implante", - "impor", - "imprensa", - "impune", - "imunizar", - "inalador", - "inapto", - "inativo", - "incenso", - "inchar", - "incidir", - "incluir", - "incolor", - "indeciso", - "indireto", - "indutor", - "ineficaz", - "inerente", - "infantil", - "infestar", - "infinito", - "inflamar", - "informal", - "infrator", - "ingerir", - "inibido", - "inicial", - "inimigo", - "injetar", - "inocente", - "inodoro", - "inovador", - "inox", - "inquieto", - "inscrito", - "inseto", - "insistir", - "inspetor", - "instalar", - "insulto", - "intacto", - "integral", - "intimar", - "intocado", - "intriga", - "invasor", - "inverno", - "invicto", - "invocar", - "iogurte", - "iraniano", - "ironizar", - "irreal", - "irritado", - "isca", - "isento", - "isolado", - "isqueiro", - "italiano", - "janeiro", - "jangada", - "janta", - "jararaca", - "jardim", - "jarro", - "jasmim", - "jato", - "javali", - "jazida", - "jejum", - "joaninha", - "joelhada", - "jogador", - "joia", - "jornal", - "jorrar", - "jovem", - "juba", - "judeu", - "judoca", - "juiz", - "julgador", - "julho", - "jurado", - "jurista", - "juro", - "justa", - "labareda", - "laboral", - "lacre", - "lactante", - "ladrilho", - "lagarta", - "lagoa", - "laje", - "lamber", - "lamentar", - "laminar", - "lampejo", - "lanche", - "lapidar", - "lapso", - "laranja", - "lareira", - "largura", - "lasanha", - "lastro", - "lateral", - "latido", - "lavanda", - "lavoura", - "lavrador", - "laxante", - "lazer", - "lealdade", - "lebre", - "legado", - "legendar", - "legista", - "leigo", - "leiloar", - "leitura", - "lembrete", - "leme", - "lenhador", - "lentilha", - "leoa", - "lesma", - "leste", - "letivo", - "letreiro", - "levar", - "leveza", - "levitar", - "liberal", - "libido", - "liderar", - "ligar", - "ligeiro", - "limitar", - "limoeiro", - "limpador", - "linda", - "linear", - "linhagem", - "liquidez", - "listagem", - "lisura", - "litoral", - "livro", - "lixa", - "lixeira", - "locador", - "locutor", - "lojista", - "lombo", - "lona", - "longe", - "lontra", - "lorde", - "lotado", - "loteria", - "loucura", - "lousa", - "louvar", - "luar", - "lucidez", - "lucro", - "luneta", - "lustre", - "lutador", - "luva", - "macaco", - "macete", - "machado", - "macio", - "madeira", - "madrinha", - "magnata", - "magreza", - "maior", - "mais", - "malandro", - "malha", - "malote", - "maluco", - "mamilo", - "mamoeiro", - "mamute", - "manada", - "mancha", - "mandato", - "manequim", - "manhoso", - "manivela", - "manobrar", - "mansa", - "manter", - "manusear", - "mapeado", - "maquinar", - "marcador", - "maresia", - "marfim", - "margem", - "marinho", - "marmita", - "maroto", - "marquise", - "marreco", - "martelo", - "marujo", - "mascote", - "masmorra", - "massagem", - "mastigar", - "matagal", - "materno", - "matinal", - "matutar", - "maxilar", - "medalha", - "medida", - "medusa", - "megafone", - "meiga", - "melancia", - "melhor", - "membro", - "memorial", - "menino", - "menos", - "mensagem", - "mental", - "merecer", - "mergulho", - "mesada", - "mesclar", - "mesmo", - "mesquita", - "mestre", - "metade", - "meteoro", - "metragem", - "mexer", - "mexicano", - "micro", - "migalha", - "migrar", - "milagre", - "milenar", - "milhar", - "mimado", - "minerar", - "minhoca", - "ministro", - "minoria", - "miolo", - "mirante", - "mirtilo", - "misturar", - "mocidade", - "moderno", - "modular", - "moeda", - "moer", - "moinho", - "moita", - "moldura", - "moleza", - "molho", - "molinete", - "molusco", - "montanha", - "moqueca", - "morango", - "morcego", - "mordomo", - "morena", - "mosaico", - "mosquete", - "mostarda", - "motel", - "motim", - "moto", - "motriz", - "muda", - "muito", - "mulata", - "mulher", - "multar", - "mundial", - "munido", - "muralha", - "murcho", - "muscular", - "museu", - "musical", - "nacional", - "nadador", - "naja", - "namoro", - "narina", - "narrado", - "nascer", - "nativa", - "natureza", - "navalha", - "navegar", - "navio", - "neblina", - "nebuloso", - "negativa", - "negociar", - "negrito", - "nervoso", - "neta", - "neural", - "nevasca", - "nevoeiro", - "ninar", - "ninho", - "nitidez", - "nivelar", - "nobreza", - "noite", - "noiva", - "nomear", - "nominal", - "nordeste", - "nortear", - "notar", - "noticiar", - "noturno", - "novelo", - "novilho", - "novo", - "nublado", - "nudez", - "numeral", - "nupcial", - "nutrir", - "nuvem", - "obcecado", - "obedecer", - "objetivo", - "obrigado", - "obscuro", - "obstetra", - "obter", - "obturar", - "ocidente", - "ocioso", - "ocorrer", - "oculista", - "ocupado", - "ofegante", - "ofensiva", - "oferenda", - "oficina", - "ofuscado", - "ogiva", - "olaria", - "oleoso", - "olhar", - "oliveira", - "ombro", - "omelete", - "omisso", - "omitir", - "ondulado", - "oneroso", - "ontem", - "opcional", - "operador", - "oponente", - "oportuno", - "oposto", - "orar", - "orbitar", - "ordem", - "ordinal", - "orfanato", - "orgasmo", - "orgulho", - "oriental", - "origem", - "oriundo", - "orla", - "ortodoxo", - "orvalho", - "oscilar", - "ossada", - "osso", - "ostentar", - "otimismo", - "ousadia", - "outono", - "outubro", - "ouvido", - "ovelha", - "ovular", - "oxidar", - "oxigenar", - "pacato", - "paciente", - "pacote", - "pactuar", - "padaria", - "padrinho", - "pagar", - "pagode", - "painel", - "pairar", - "paisagem", - "palavra", - "palestra", - "palheta", - "palito", - "palmada", - "palpitar", - "pancada", - "panela", - "panfleto", - "panqueca", - "pantanal", - "papagaio", - "papelada", - "papiro", - "parafina", - "parcial", - "pardal", - "parede", - "partida", - "pasmo", - "passado", - "pastel", - "patamar", - "patente", - "patinar", - "patrono", - "paulada", - "pausar", - "peculiar", - "pedalar", - "pedestre", - "pediatra", - "pedra", - "pegada", - "peitoral", - "peixe", - "pele", - "pelicano", - "penca", - "pendurar", - "peneira", - "penhasco", - "pensador", - "pente", - "perceber", - "perfeito", - "pergunta", - "perito", - "permitir", - "perna", - "perplexo", - "persiana", - "pertence", - "peruca", - "pescado", - "pesquisa", - "pessoa", - "petiscar", - "piada", - "picado", - "piedade", - "pigmento", - "pilastra", - "pilhado", - "pilotar", - "pimenta", - "pincel", - "pinguim", - "pinha", - "pinote", - "pintar", - "pioneiro", - "pipoca", - "piquete", - "piranha", - "pires", - "pirueta", - "piscar", - "pistola", - "pitanga", - "pivete", - "planta", - "plaqueta", - "platina", - "plebeu", - "plumagem", - "pluvial", - "pneu", - "poda", - "poeira", - "poetisa", - "polegada", - "policiar", - "poluente", - "polvilho", - "pomar", - "pomba", - "ponderar", - "pontaria", - "populoso", - "porta", - "possuir", - "postal", - "pote", - "poupar", - "pouso", - "povoar", - "praia", - "prancha", - "prato", - "praxe", - "prece", - "predador", - "prefeito", - "premiar", - "prensar", - "preparar", - "presilha", - "pretexto", - "prevenir", - "prezar", - "primata", - "princesa", - "prisma", - "privado", - "processo", - "produto", - "profeta", - "proibido", - "projeto", - "prometer", - "propagar", - "prosa", - "protetor", - "provador", - "publicar", - "pudim", - "pular", - "pulmonar", - "pulseira", - "punhal", - "punir", - "pupilo", - "pureza", - "puxador", - "quadra", - "quantia", - "quarto", - "quase", - "quebrar", - "queda", - "queijo", - "quente", - "querido", - "quimono", - "quina", - "quiosque", - "rabanada", - "rabisco", - "rachar", - "racionar", - "radial", - "raiar", - "rainha", - "raio", - "raiva", - "rajada", - "ralado", - "ramal", - "ranger", - "ranhura", - "rapadura", - "rapel", - "rapidez", - "raposa", - "raquete", - "raridade", - "rasante", - "rascunho", - "rasgar", - "raspador", - "rasteira", - "rasurar", - "ratazana", - "ratoeira", - "realeza", - "reanimar", - "reaver", - "rebaixar", - "rebelde", - "rebolar", - "recado", - "recente", - "recheio", - "recibo", - "recordar", - "recrutar", - "recuar", - "rede", - "redimir", - "redonda", - "reduzida", - "reenvio", - "refinar", - "refletir", - "refogar", - "refresco", - "refugiar", - "regalia", - "regime", - "regra", - "reinado", - "reitor", - "rejeitar", - "relativo", - "remador", - "remendo", - "remorso", - "renovado", - "reparo", - "repelir", - "repleto", - "repolho", - "represa", - "repudiar", - "requerer", - "resenha", - "resfriar", - "resgatar", - "residir", - "resolver", - "respeito", - "ressaca", - "restante", - "resumir", - "retalho", - "reter", - "retirar", - "retomada", - "retratar", - "revelar", - "revisor", - "revolta", - "riacho", - "rica", - "rigidez", - "rigoroso", - "rimar", - "ringue", - "risada", - "risco", - "risonho", - "robalo", - "rochedo", - "rodada", - "rodeio", - "rodovia", - "roedor", - "roleta", - "romano", - "roncar", - "rosado", - "roseira", - "rosto", - "rota", - "roteiro", - "rotina", - "rotular", - "rouco", - "roupa", - "roxo", - "rubro", - "rugido", - "rugoso", - "ruivo", - "rumo", - "rupestre", - "russo", - "sabor", - "saciar", - "sacola", - "sacudir", - "sadio", - "safira", - "saga", - "sagrada", - "saibro", - "salada", - "saleiro", - "salgado", - "saliva", - "salpicar", - "salsicha", - "saltar", - "salvador", - "sambar", - "samurai", - "sanar", - "sanfona", - "sangue", - "sanidade", - "sapato", - "sarda", - "sargento", - "sarjeta", - "saturar", - "saudade", - "saxofone", - "sazonal", - "secar", - "secular", - "seda", - "sedento", - "sediado", - "sedoso", - "sedutor", - "segmento", - "segredo", - "segundo", - "seiva", - "seleto", - "selvagem", - "semanal", - "semente", - "senador", - "senhor", - "sensual", - "sentado", - "separado", - "sereia", - "seringa", - "serra", - "servo", - "setembro", - "setor", - "sigilo", - "silhueta", - "silicone", - "simetria", - "simpatia", - "simular", - "sinal", - "sincero", - "singular", - "sinopse", - "sintonia", - "sirene", - "siri", - "situado", - "soberano", - "sobra", - "socorro", - "sogro", - "soja", - "solda", - "soletrar", - "solteiro", - "sombrio", - "sonata", - "sondar", - "sonegar", - "sonhador", - "sono", - "soprano", - "soquete", - "sorrir", - "sorteio", - "sossego", - "sotaque", - "soterrar", - "sovado", - "sozinho", - "suavizar", - "subida", - "submerso", - "subsolo", - "subtrair", - "sucata", - "sucesso", - "suco", - "sudeste", - "sufixo", - "sugador", - "sugerir", - "sujeito", - "sulfato", - "sumir", - "suor", - "superior", - "suplicar", - "suposto", - "suprimir", - "surdina", - "surfista", - "surpresa", - "surreal", - "surtir", - "suspiro", - "sustento", - "tabela", - "tablete", - "tabuada", - "tacho", - "tagarela", - "talher", - "talo", - "talvez", - "tamanho", - "tamborim", - "tampa", - "tangente", - "tanto", - "tapar", - "tapioca", - "tardio", - "tarefa", - "tarja", - "tarraxa", - "tatuagem", - "taurino", - "taxativo", - "taxista", - "teatral", - "tecer", - "tecido", - "teclado", - "tedioso", - "teia", - "teimar", - "telefone", - "telhado", - "tempero", - "tenente", - "tensor", - "tentar", - "termal", - "terno", - "terreno", - "tese", - "tesoura", - "testado", - "teto", - "textura", - "texugo", - "tiara", - "tigela", - "tijolo", - "timbrar", - "timidez", - "tingido", - "tinteiro", - "tiragem", - "titular", - "toalha", - "tocha", - "tolerar", - "tolice", - "tomada", - "tomilho", - "tonel", - "tontura", - "topete", - "tora", - "torcido", - "torneio", - "torque", - "torrada", - "torto", - "tostar", - "touca", - "toupeira", - "toxina", - "trabalho", - "tracejar", - "tradutor", - "trafegar", - "trajeto", - "trama", - "trancar", - "trapo", - "traseiro", - "tratador", - "travar", - "treino", - "tremer", - "trepidar", - "trevo", - "triagem", - "tribo", - "triciclo", - "tridente", - "trilogia", - "trindade", - "triplo", - "triturar", - "triunfal", - "trocar", - "trombeta", - "trova", - "trunfo", - "truque", - "tubular", - "tucano", - "tudo", - "tulipa", - "tupi", - "turbo", - "turma", - "turquesa", - "tutelar", - "tutorial", - "uivar", - "umbigo", - "unha", - "unidade", - "uniforme", - "urologia", - "urso", - "urtiga", - "urubu", - "usado", - "usina", - "usufruir", - "vacina", - "vadiar", - "vagaroso", - "vaidoso", - "vala", - "valente", - "validade", - "valores", - "vantagem", - "vaqueiro", - "varanda", - "vareta", - "varrer", - "vascular", - "vasilha", - "vassoura", - "vazar", - "vazio", - "veado", - "vedar", - "vegetar", - "veicular", - "veleiro", - "velhice", - "veludo", - "vencedor", - "vendaval", - "venerar", - "ventre", - "verbal", - "verdade", - "vereador", - "vergonha", - "vermelho", - "verniz", - "versar", - "vertente", - "vespa", - "vestido", - "vetorial", - "viaduto", - "viagem", - "viajar", - "viatura", - "vibrador", - "videira", - "vidraria", - "viela", - "viga", - "vigente", - "vigiar", - "vigorar", - "vilarejo", - "vinco", - "vinheta", - "vinil", - "violeta", - "virada", - "virtude", - "visitar", - "visto", - "vitral", - "viveiro", - "vizinho", - "voador", - "voar", - "vogal", - "volante", - "voleibol", - "voltagem", - "volumoso", - "vontade", - "vulto", - "vuvuzela", - "xadrez", - "xarope", - "xeque", - "xeretar", - "xerife", - "xingar", - "zangado", - "zarpar", - "zebu", - "zelador", - "zombar", - "zoologia", - "zumbido" -]; - -},{}]},{},[50])(50) -}); -}(bip39_browser)); - -var global$1 = (typeof global$1 !== "undefined" ? global$1 : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - -var lookup$1 = []; -var revLookup$1 = []; -var Arr$1 = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; -var inited = false; -function init () { - inited = true; - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for (var i = 0, len = code.length; i < len; ++i) { - lookup$1[i] = code[i]; - revLookup$1[code.charCodeAt(i)] = i; - } - - revLookup$1['-'.charCodeAt(0)] = 62; - revLookup$1['_'.charCodeAt(0)] = 63; -} - -function toByteArray$1 (b64) { - if (!inited) { - init(); - } - var i, j, l, tmp, placeHolders, arr; - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr$1(len * 3 / 4 - placeHolders); - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len; - - var L = 0; - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup$1[b64.charCodeAt(i)] << 18) | (revLookup$1[b64.charCodeAt(i + 1)] << 12) | (revLookup$1[b64.charCodeAt(i + 2)] << 6) | revLookup$1[b64.charCodeAt(i + 3)]; - arr[L++] = (tmp >> 16) & 0xFF; - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - if (placeHolders === 2) { - tmp = (revLookup$1[b64.charCodeAt(i)] << 2) | (revLookup$1[b64.charCodeAt(i + 1)] >> 4); - arr[L++] = tmp & 0xFF; - } else if (placeHolders === 1) { - tmp = (revLookup$1[b64.charCodeAt(i)] << 10) | (revLookup$1[b64.charCodeAt(i + 1)] << 4) | (revLookup$1[b64.charCodeAt(i + 2)] >> 2); - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - return arr -} - -function tripletToBase64$1 (num) { - return lookup$1[num >> 18 & 0x3F] + lookup$1[num >> 12 & 0x3F] + lookup$1[num >> 6 & 0x3F] + lookup$1[num & 0x3F] -} - -function encodeChunk$1 (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); - output.push(tripletToBase64$1(tmp)); - } - return output.join('') -} - -function fromByteArray$1 (uint8) { - if (!inited) { - init(); - } - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var output = ''; - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk$1(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - output += lookup$1[tmp >> 2]; - output += lookup$1[(tmp << 4) & 0x3F]; - output += '=='; - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); - output += lookup$1[tmp >> 10]; - output += lookup$1[(tmp >> 4) & 0x3F]; - output += lookup$1[(tmp << 2) & 0x3F]; - output += '='; - } - - parts.push(output); - - return parts.join('') -} - -function read (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -function write (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -} - -var toString = {}.toString; - -var isArray = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -var INSPECT_MAX_BYTES = 50; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer$i.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined - ? global$1.TYPED_ARRAY_SUPPORT - : true; - -function kMaxLength () { - return Buffer$i.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length); - that.__proto__ = Buffer$i.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer$i(length); - } - that.length = length; - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer$i (arg, encodingOrOffset, length) { - if (!Buffer$i.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$i)) { - return new Buffer$i(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from$1(this, arg, encodingOrOffset, length) -} - -Buffer$i.poolSize = 8192; // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer$i._augment = function (arr) { - arr.__proto__ = Buffer$i.prototype; - return arr -}; - -function from$1 (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer$i.from = function (value, encodingOrOffset, length) { - return from$1(null, value, encodingOrOffset, length) -}; - -if (Buffer$i.TYPED_ARRAY_SUPPORT) { - Buffer$i.prototype.__proto__ = Uint8Array.prototype; - Buffer$i.__proto__ = Uint8Array; -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer$i.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -}; - -function allocUnsafe (that, size) { - assertSize(size); - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); - if (!Buffer$i.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0; - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer$i.allocUnsafe = function (size) { - return allocUnsafe(null, size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer$i.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -}; - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer$i.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength$1(string, encoding) | 0; - that = createBuffer(that, length); - - var actual = that.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual); - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - that = createBuffer(that, length); - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255; - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength; // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array); - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset); - } else { - array = new Uint8Array(array, byteOffset, length); - } - - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array; - that.__proto__ = Buffer$i.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array); - } - return that -} - -function fromObject (that, obj) { - if (internalIsBuffer(obj)) { - var len = checked(obj.length) | 0; - that = createBuffer(that, len); - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len); - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} -Buffer$i.isBuffer = isBuffer; -function internalIsBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer$i.compare = function compare (a, b) { - if (!internalIsBuffer(a) || !internalIsBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer$i.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer$i.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer$i.alloc(0) - } - - var i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer$i.allocUnsafe(length); - var pos = 0; - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - if (!internalIsBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer -}; - -function byteLength$1 (string, encoding) { - if (internalIsBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string; - } - - var len = string.length; - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer$i.byteLength = byteLength$1; - -function slowToString (encoding, start, end) { - var loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer$i.prototype._isBuffer = true; - -function swap (b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer$i.prototype.swap16 = function swap16 () { - var len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer$i.prototype.swap32 = function swap32 () { - var len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer$i.prototype.swap64 = function swap64 () { - var len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer$i.prototype.toString = function toString () { - var length = this.length | 0; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer$i.prototype.equals = function equals (b) { - if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer$i.compare(this, b) === 0 -}; - -Buffer$i.prototype.inspect = function inspect () { - var str = ''; - var max = INSPECT_MAX_BYTES; - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); - if (this.length > max) str += ' ... '; - } - return '' -}; - -Buffer$i.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!internalIsBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer$i.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (internalIsBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (Buffer$i.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i; - if (dir) { - var foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - var found = true; - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer$i.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer$i.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer$i.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer$i.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0; - if (isFinite(length)) { - length = length | 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer$i.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return fromByteArray$1(buf) - } else { - return fromByteArray$1(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - - var i = start; - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = ''; - var i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - return res -} - -Buffer$i.prototype.slice = function slice (start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - var newBuf; - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end); - newBuf.__proto__ = Buffer$i.prototype; - } else { - var sliceLen = end - start; - newBuf = new Buffer$i(sliceLen, undefined); - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start]; - } - } - - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer$i.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer$i.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer$i.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer$i.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer$i.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer$i.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer$i.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer$i.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer$i.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer$i.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer$i.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer$i.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer$i.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer$i.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer$i.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, true, 23, 4) -}; - -Buffer$i.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, false, 23, 4) -}; - -Buffer$i.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, true, 52, 8) -}; - -Buffer$i.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer$i.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer$i.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer$i.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - if (!Buffer$i.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - this[offset] = (value & 0xff); - return offset + 1 -}; - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8; - } -} - -Buffer$i.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer$i.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; - } -} - -Buffer$i.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer$i.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -Buffer$i.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer$i.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer$i.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (!Buffer$i.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer$i.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer$i.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -Buffer$i.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer$i.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - if (Buffer$i.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer$i.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer$i.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer$i.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer$i.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer$i.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - var i; - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else if (len < 1000 || !Buffer$i.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer$i.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (val.length === 1) { - var code = val.charCodeAt(0); - if (code < 256) { - val = code; - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer$i.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255; - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - var i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = internalIsBuffer(val) - ? val - : utf8ToBytes(new Buffer$i(val, encoding).toString()); - var len = bytes.length; - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo; - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - - -function base64ToBytes (str) { - return toByteArray$1(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} - - -// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -function isBuffer(obj) { - return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) -} - -function isFastBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) -} - -var dist = {}; - -var inherits_browser$1 = {exports: {}}; - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - inherits_browser$1.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - inherits_browser$1.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - }; -} - -var safeBuffer$1 = {exports: {}}; - -var buffer = {}; - -var base64Js = {}; - -base64Js.byteLength = byteLength; -base64Js.toByteArray = toByteArray; -base64Js.fromByteArray = fromByteArray; - -var lookup = []; -var revLookup = []; -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62; -revLookup['_'.charCodeAt(0)] = 63; - -function getLens (b64) { - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('='); - if (validLen === -1) validLen = len; - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4); - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp; - var lens = getLens(b64); - var validLen = lens[0]; - var placeHoldersLen = lens[1]; - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); - - var curByte = 0; - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen; - - var i; - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)]; - arr[curByte++] = (tmp >> 16) & 0xFF; - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[curByte++] = tmp & 0xFF; - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[curByte++] = (tmp >> 8) & 0xFF; - arr[curByte++] = tmp & 0xFF; - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF); - output.push(tripletToBase64(tmp)); - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ); - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1]; - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ); - } - - return parts.join('') -} - -var ieee754 = {}; - -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ - -ieee754.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -}; - -ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = (nBytes * 8) - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -}; - +var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=a),a.prototype=Object.create(i.prototype),o(i,a),a.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},a.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:3}],10:[function(e,t,r){t.exports=i;var n=e("events").EventEmitter;function i(){n.call(this)}e("inherits")(i,n),i.Readable=e("readable-stream/lib/_stream_readable.js"),i.Writable=e("readable-stream/lib/_stream_writable.js"),i.Duplex=e("readable-stream/lib/_stream_duplex.js"),i.Transform=e("readable-stream/lib/_stream_transform.js"),i.PassThrough=e("readable-stream/lib/_stream_passthrough.js"),i.finished=e("readable-stream/lib/internal/streams/end-of-stream.js"),i.pipeline=e("readable-stream/lib/internal/streams/pipeline.js"),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",u));var a=!1;function s(){a||(a=!0,e.end())}function u(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function h(e){if(l(),0===n.listenerCount(this,"error"))throw e}function l(){r.removeListener("data",i),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",u),r.removeListener("error",h),e.removeListener("error",h),r.removeListener("end",l),r.removeListener("close",l),e.removeListener("close",l)}return r.on("error",h),e.on("error",h),r.on("end",l),r.on("close",l),e.on("close",l),e.emit("pipe",r),e}},{events:4,inherits:6,"readable-stream/lib/_stream_duplex.js":12,"readable-stream/lib/_stream_passthrough.js":13,"readable-stream/lib/_stream_readable.js":14,"readable-stream/lib/_stream_transform.js":15,"readable-stream/lib/_stream_writable.js":16,"readable-stream/lib/internal/streams/end-of-stream.js":20,"readable-stream/lib/internal/streams/pipeline.js":22}],11:[function(e,t,r){function n(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var i={};function o(e,t,r){function o(e,r,n){return"string"==typeof t?t:t(e,r,n)}r||(r=Error);var a=function(e){function t(t,r,n){return e.call(this,o(t,r,n))||this}return n(t,e),t}(r);a.prototype.name=r.name,a.prototype.code=e,i[e]=a}function a(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}function s(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function u(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function h(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}o("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),o("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i;if("string"==typeof t&&s(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be",u(e," argument"))i="The ".concat(e," ").concat(n," ").concat(a(t,"type"));else{var o=h(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(o," ").concat(n," ").concat(a(t,"type"))}return i+=". Received type ".concat(typeof r)}),TypeError),o("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),o("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),o("ERR_STREAM_PREMATURE_CLOSE","Premature close"),o("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),o("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),o("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),o("ERR_STREAM_WRITE_AFTER_END","write after end"),o("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),o("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),o("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=i},{}],12:[function(e,t,r){(function(r){(function(){var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=h;var i=e("./_stream_readable"),o=e("./_stream_writable");e("inherits")(h,i);for(var a=n(o.prototype),s=0;s0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===s.prototype||(t=h(t)),n)a.endEmitted?k(e,new S):O(e,a,t,!0);else if(a.ended)k(e,new _);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?O(e,a,t,!1):P(e,a)):O(e,a,t,!1)}else n||(a.reading=!1,P(e,a));return!a.ended&&(a.length=L?e=L:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function U(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=j(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e,t){if(f("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?C(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,N(e)))}}function C(t){var r=t._readableState;f("emitReadable",r.needReadable,r.emittedReadable),r.needReadable=!1,r.emittedReadable||(f("emitReadable",r.flowing),r.emittedReadable=!0,e.nextTick(N,t))}function N(e){var t=e._readableState;f("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Y(e)}function P(t,r){r.readingMore||(r.readingMore=!0,e.nextTick(D,t,r))}function D(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function W(e){f("readable nexttick read 0"),e.read(0)}function F(t,r){r.resumeScheduled||(r.resumeScheduled=!0,e.nextTick(K,t,r))}function K(e,t){f("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Y(e),t.flowing&&!t.reading&&e.read(0)}function Y(e){var t=e._readableState;for(f("flow",t.flowing);t.flowing&&null!==e.read(););}function H(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function $(t){var r=t._readableState;f("endReadable",r.endEmitted),r.endEmitted||(r.ended=!0,e.nextTick(V,r,t))}function V(e,t){if(f("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function G(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return f("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?$(this):C(this),null;if(0===(e=U(e,t))&&t.ended)return 0===t.length&&$(this),null;var n,i=t.needReadable;return f("need readable",i),(0===t.length||t.length-e0?H(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&$(this)),null!==n&&this.emit("data",n),n},T.prototype._read=function(e){k(this,new E("_read()"))},T.prototype.pipe=function(t,r){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,f("pipe count=%d opts=%j",i.pipesCount,r);var a=r&&!1===r.end||t===e.stdout||t===e.stderr?b:u;function s(e,t){f("onunpipe"),e===n&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,c())}function u(){f("onend"),t.end()}i.endEmitted?e.nextTick(a):n.once("end",a),t.on("unpipe",s);var h=z(n);t.on("drain",h);var l=!1;function c(){f("cleanup"),t.removeListener("close",g),t.removeListener("finish",y),t.removeListener("drain",h),t.removeListener("error",p),t.removeListener("unpipe",s),n.removeListener("end",u),n.removeListener("end",b),n.removeListener("data",d),l=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||h()}function d(e){f("ondata");var r=t.write(e);f("dest.write",r),!1===r&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==G(i.pipes,t))&&!l&&(f("false write response, pause",i.awaitDrain),i.awaitDrain++),n.pause())}function p(e){f("onerror",e),b(),t.removeListener("error",p),0===o(t,"error")&&k(t,e)}function g(){t.removeListener("finish",y),b()}function y(){f("onfinish"),t.removeListener("close",g),b()}function b(){f("unpipe"),n.unpipe(t)}return n.on("data",d),R(t,"error",p),t.once("close",g),t.once("finish",y),t.emit("pipe",n),i.flowing||(f("pipe resume"),n.resume()),t},T.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,f("on readable",i.length,i.reading),i.length?C(this):i.reading||e.nextTick(W,this))),n},T.prototype.addListener=T.prototype.on,T.prototype.removeListener=function(t,r){var n=a.prototype.removeListener.call(this,t,r);return"readable"===t&&e.nextTick(q,this),n},T.prototype.removeAllListeners=function(t){var r=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||e.nextTick(q,this),r},T.prototype.resume=function(){var e=this._readableState;return e.flowing||(f("resume"),e.flowing=!e.readableListening,F(this,e)),e.paused=!1,this},T.prototype.pause=function(){return f("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(f("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},T.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(f("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){f("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o-1))throw new S(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(A.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(e,t,r){r(new b("_write()"))},A.prototype._writev=null,A.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||F(this,n,r),this},Object.defineProperty(A.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),A.prototype.destroy=d.destroy,A.prototype._undestroy=d.undestroy,A.prototype._destroy=function(e,t){t(e)}}).call(this)}).call(this,t("_process"),void 0!==e?e:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../errors":11,"./_stream_duplex":12,"./internal/streams/destroy":19,"./internal/streams/state":23,"./internal/streams/stream":24,_process:8,buffer:3,inherits:6,"util-deprecate":26}],17:[function(e,t,r){(function(r){(function(){var n;function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=e("./end-of-stream"),a=Symbol("lastResolve"),s=Symbol("lastReject"),u=Symbol("error"),h=Symbol("ended"),l=Symbol("lastPromise"),f=Symbol("handlePromise"),c=Symbol("stream");function d(e,t){return{value:e,done:t}}function p(e){var t=e[a];if(null!==t){var r=e[c].read();null!==r&&(e[l]=null,e[a]=null,e[s]=null,t(d(r,!1)))}}function g(e){r.nextTick(p,e)}function y(e,t){return function(r,n){e.then((function(){t[h]?r(d(void 0,!0)):t[f](r,n)}),n)}}var b=Object.getPrototypeOf((function(){})),m=Object.setPrototypeOf((i(n={get stream(){return this[c]},next:function(){var e=this,t=this[u];if(null!==t)return Promise.reject(t);if(this[h])return Promise.resolve(d(void 0,!0));if(this[c].destroyed)return new Promise((function(t,n){r.nextTick((function(){e[u]?n(e[u]):t(d(void 0,!0))}))}));var n,i=this[l];if(i)n=new Promise(y(i,this));else{var o=this[c].read();if(null!==o)return Promise.resolve(d(o,!1));n=new Promise(this[f])}return this[l]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,"return",(function(){var e=this;return new Promise((function(t,r){e[c].destroy(null,(function(e){e?r(e):t(d(void 0,!0))}))}))})),n),b),v=function(e){var t,r=Object.create(m,(i(t={},c,{value:e,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,s,{value:null,writable:!0}),i(t,u,{value:null,writable:!0}),i(t,h,{value:e._readableState.endEmitted,writable:!0}),i(t,f,{value:function(e,t){var n=r[c].read();n?(r[l]=null,r[a]=null,r[s]=null,e(d(n,!1))):(r[a]=e,r[s]=t)},writable:!0}),t));return r[l]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];return null!==t&&(r[l]=null,r[a]=null,r[s]=null,t(e)),void(r[u]=e)}var n=r[a];null!==n&&(r[l]=null,r[a]=null,r[s]=null,n(d(void 0,!0))),r[h]=!0})),e.on("readable",g.bind(null,r)),r};t.exports=v}).call(this)}).call(this,e("_process"))},{"./end-of-stream":20,_process:8}],18:[function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return h.alloc(0);for(var t=h.allocUnsafe(e>>>0),r=this.head,n=0;r;)c(r.data,t,n),n+=r.data.length,r=r.next;return t}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=h.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:f,value:function(e,t){return l(this,i({},t,{depth:0,customInspect:!1}))}}]),e}()},{buffer:3,util:2}],19:[function(e,t,r){(function(e){(function(){function r(t,r){var o=this,s=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return s||u?(r?r(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(a,this,t)):e.nextTick(a,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!r&&t?o._writableState?o._writableState.errorEmitted?e.nextTick(i,o):(o._writableState.errorEmitted=!0,e.nextTick(n,o,t)):e.nextTick(n,o,t):r?(e.nextTick(i,o),r(t)):e.nextTick(i,o)})),this)}function n(e,t){a(e,t),i(e)}function i(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function o(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function a(e,t){e.emit("error",t)}function s(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}t.exports={destroy:r,undestroy:o,errorOrDestroy:s}}).call(this)}).call(this,e("_process"))},{_process:8}],20:[function(e,t,r){var n=e("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function i(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0,(function(e){n||(n=e),e&&o.forEach(f),a||(o.forEach(f),i(n))}))}));return t.reduce(c)}t.exports=p},{"../../../errors":11,"./end-of-stream":20}],23:[function(e,t,r){var n=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;function i(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}function o(e,t,r,o){var a=i(t,o,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new n(o?r:"highWaterMark",a);return Math.floor(a)}return e.objectMode?16:16384}t.exports={getHighWaterMark:o}},{"../../../errors":11}],24:[function(e,t,r){t.exports=e("events").EventEmitter},{events:4}],25:[function(e,t,r){var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function a(e){var t=o(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}function s(e){var t;switch(this.encoding=a(e),this.encoding){case"utf16le":this.text=p,this.end=g,t=4;break;case"utf8":this.fillLast=f,t=4;break;case"base64":this.text=y,this.end=b,t=3;break;default:return this.write=m,void(this.end=v)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function u(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function h(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}function l(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}function f(e){var t=this.lastTotal-this.lastNeed,r=l(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){var r=h(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t}function p(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function g(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function y(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function b(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function m(e){return e.toString(this.encoding)}function v(e){return e&&e.length?this.write(e):""}r.StringDecoder=s,s.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=this._blockSize;){for(var a=this._blockOffset;a0;++s)this._length[s]+=u,(u=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*u);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},a.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=a},{inherits:31,"safe-buffer":40,stream:10}],31:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],32:[function(e,t,r){var n=e("inherits"),i=e("hash-base"),o=e("safe-buffer").Buffer,a=new Array(16);function s(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(e,t){return e<>>32-t}function h(e,t,r,n,i,o,a){return u(e+(t&r|~t&n)+i+o|0,a)+t|0}function l(e,t,r,n,i,o,a){return u(e+(t&n|r&~n)+i+o|0,a)+t|0}function f(e,t,r,n,i,o,a){return u(e+(t^r^n)+i+o|0,a)+t|0}function c(e,t,r,n,i,o,a){return u(e+(r^(t|~n))+i+o|0,a)+t|0}n(s,i),s.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=h(r,n,i,o,e[0],3614090360,7),o=h(o,r,n,i,e[1],3905402710,12),i=h(i,o,r,n,e[2],606105819,17),n=h(n,i,o,r,e[3],3250441966,22),r=h(r,n,i,o,e[4],4118548399,7),o=h(o,r,n,i,e[5],1200080426,12),i=h(i,o,r,n,e[6],2821735955,17),n=h(n,i,o,r,e[7],4249261313,22),r=h(r,n,i,o,e[8],1770035416,7),o=h(o,r,n,i,e[9],2336552879,12),i=h(i,o,r,n,e[10],4294925233,17),n=h(n,i,o,r,e[11],2304563134,22),r=h(r,n,i,o,e[12],1804603682,7),o=h(o,r,n,i,e[13],4254626195,12),i=h(i,o,r,n,e[14],2792965006,17),r=l(r,n=h(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=l(o,r,n,i,e[6],3225465664,9),i=l(i,o,r,n,e[11],643717713,14),n=l(n,i,o,r,e[0],3921069994,20),r=l(r,n,i,o,e[5],3593408605,5),o=l(o,r,n,i,e[10],38016083,9),i=l(i,o,r,n,e[15],3634488961,14),n=l(n,i,o,r,e[4],3889429448,20),r=l(r,n,i,o,e[9],568446438,5),o=l(o,r,n,i,e[14],3275163606,9),i=l(i,o,r,n,e[3],4107603335,14),n=l(n,i,o,r,e[8],1163531501,20),r=l(r,n,i,o,e[13],2850285829,5),o=l(o,r,n,i,e[2],4243563512,9),i=l(i,o,r,n,e[7],1735328473,14),r=f(r,n=l(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=f(o,r,n,i,e[8],2272392833,11),i=f(i,o,r,n,e[11],1839030562,16),n=f(n,i,o,r,e[14],4259657740,23),r=f(r,n,i,o,e[1],2763975236,4),o=f(o,r,n,i,e[4],1272893353,11),i=f(i,o,r,n,e[7],4139469664,16),n=f(n,i,o,r,e[10],3200236656,23),r=f(r,n,i,o,e[13],681279174,4),o=f(o,r,n,i,e[0],3936430074,11),i=f(i,o,r,n,e[3],3572445317,16),n=f(n,i,o,r,e[6],76029189,23),r=f(r,n,i,o,e[9],3654602809,4),o=f(o,r,n,i,e[12],3873151461,11),i=f(i,o,r,n,e[15],530742520,16),r=c(r,n=f(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=c(o,r,n,i,e[7],1126891415,10),i=c(i,o,r,n,e[14],2878612391,15),n=c(n,i,o,r,e[5],4237533241,21),r=c(r,n,i,o,e[12],1700485571,6),o=c(o,r,n,i,e[3],2399980690,10),i=c(i,o,r,n,e[10],4293915773,15),n=c(n,i,o,r,e[1],2240044497,21),r=c(r,n,i,o,e[8],1873313359,6),o=c(o,r,n,i,e[15],4264355552,10),i=c(i,o,r,n,e[6],2734768916,15),n=c(n,i,o,r,e[13],1309151649,21),r=c(r,n,i,o,e[4],4149444226,6),o=c(o,r,n,i,e[11],3174756917,10),i=c(i,o,r,n,e[2],718787259,15),n=c(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=o.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},t.exports=s},{"hash-base":30,inherits:31,"safe-buffer":40}],33:[function(e,t,r){r.pbkdf2=e("./lib/async"),r.pbkdf2Sync=e("./lib/sync")},{"./lib/async":34,"./lib/sync":37}],34:[function(t,r,n){(function(e,n){(function(){var i,o=t("./precondition"),a=t("./default-encoding"),s=t("./sync"),u=t("safe-buffer").Buffer,h=n.crypto&&n.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},f=[];function c(e){if(n.process&&!n.process.browser)return Promise.resolve(!1);if(!h||!h.importKey||!h.deriveBits)return Promise.resolve(!1);if(void 0!==f[e])return f[e];var t=d(i=i||u.alloc(8),i,10,128,e).then((function(){return!0})).catch((function(){return!1}));return f[e]=t,t}function d(e,t,r,n,i){return h.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return h.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:{name:i}},e,n<<3)})).then((function(e){return u.from(e)}))}function p(t,r){t.then((function(t){e.nextTick((function(){r(null,t)}))}),(function(t){e.nextTick((function(){r(t)}))}))}r.exports=function(t,r,i,h,f,g){"function"==typeof f&&(g=f,f=void 0);var y=l[(f=f||"sha1").toLowerCase()];if(!y||"function"!=typeof n.Promise)return e.nextTick((function(){var e;try{e=s(t,r,i,h,f)}catch(e){return g(e)}g(null,e)}));if(o(t,r,i,h),"function"!=typeof g)throw new Error("No callback provided to pbkdf2");u.isBuffer(t)||(t=u.from(t,a)),u.isBuffer(r)||(r=u.from(r,a)),p(c(y).then((function(e){return e?d(t,r,i,h,y):s(t,r,i,h,f)})),g)}}).call(this)}).call(this,t("_process"),void 0!==e?e:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./default-encoding":35,"./precondition":36,"./sync":37,_process:8,"safe-buffer":40}],35:[function(e,t,r){(function(e){(function(){var r;r=e.browser||parseInt(e.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary",t.exports=r}).call(this)}).call(this,e("_process"))},{_process:8}],36:[function(e,t,r){(function(e){(function(){var r=Math.pow(2,30)-1;function n(t,r){if("string"!=typeof t&&!e.isBuffer(t))throw new TypeError(r+" must be a buffer or string")}t.exports=function(e,t,i,o){if(n(e,"Password"),n(t,"Salt"),"number"!=typeof i)throw new TypeError("Iterations not a number");if(i<0)throw new TypeError("Bad iterations");if("number"!=typeof o)throw new TypeError("Key length not a number");if(o<0||o>r||o!=o)throw new TypeError("Bad key length")}}).call(this)}).call(this,{isBuffer:e("../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js")})},{"../../../../../../AppData/Roaming/npm/node_modules/browserify/node_modules/is-buffer/index.js":7}],37:[function(e,t,r){var n=e("create-hash/md5"),i=e("ripemd160"),o=e("sha.js"),a=e("./precondition"),s=e("./default-encoding"),u=e("safe-buffer").Buffer,h=u.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function f(e,t,r){var n=c(e),i="sha512"===e||"sha384"===e?128:64;t.length>i?t=n(t):t.lengtho)throw new RangeError("requested too many random bytes");var n=s.allocUnsafe(t);if(t>0)if(t>i)for(var a=0;a>>32-t}function g(e,t,r,n,i,o,a,s){return p(e+(t^r^n)+o+a|0,s)+i|0}function y(e,t,r,n,i,o,a,s){return p(e+(t&r|~t&n)+o+a|0,s)+i|0}function b(e,t,r,n,i,o,a,s){return p(e+((t|~r)^n)+o+a|0,s)+i|0}function m(e,t,r,n,i,o,a,s){return p(e+(t&n|r&~n)+o+a|0,s)+i|0}function v(e,t,r,n,i,o,a,s){return p(e+(t^(r|~n))+o+a|0,s)+i|0}i(d,o),d.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,d=0|this._e,w=0|this._a,_=0|this._b,E=0|this._c,S=0|this._d,k=0|this._e,x=0;x<80;x+=1){var R,A;x<16?(R=g(r,n,i,o,d,e[s[x]],f[0],h[x]),A=v(w,_,E,S,k,e[u[x]],c[0],l[x])):x<32?(R=y(r,n,i,o,d,e[s[x]],f[1],h[x]),A=m(w,_,E,S,k,e[u[x]],c[1],l[x])):x<48?(R=b(r,n,i,o,d,e[s[x]],f[2],h[x]),A=b(w,_,E,S,k,e[u[x]],c[2],l[x])):x<64?(R=m(r,n,i,o,d,e[s[x]],f[3],h[x]),A=y(w,_,E,S,k,e[u[x]],c[3],l[x])):(R=v(r,n,i,o,d,e[s[x]],f[4],h[x]),A=g(w,_,E,S,k,e[u[x]],c[4],l[x])),r=d,d=o,o=p(i,10),i=n,n=R,w=k,k=S,S=p(E,10),E=_,_=A}var T=this._b+i+S|0;this._b=this._c+o+k|0,this._c=this._d+d+w|0,this._d=this._e+r+_|0,this._e=this._a+n+E|0,this._a=T},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},t.exports=d},{buffer:3,"hash-base":30,inherits:31}],40:[function(e,t,r){var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=a),o(i,a),a.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},a.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:3}],41:[function(e,t,r){var n=e("safe-buffer").Buffer;function i(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}i.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=n.from(e,t));for(var r=this._block,i=this._blockSize,o=e.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},i.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=i},{"safe-buffer":40}],42:[function(e,t,r){(r=t.exports=function(e){e=e.toLowerCase();var t=r[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t}).sha=e("./sha"),r.sha1=e("./sha1"),r.sha224=e("./sha224"),r.sha256=e("./sha256"),r.sha384=e("./sha384"),r.sha512=e("./sha512")},{"./sha":43,"./sha1":44,"./sha224":45,"./sha256":46,"./sha384":47,"./sha512":48}],43:[function(e,t,r){var n=e("inherits"),i=e("./hash"),o=e("safe-buffer").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,i.call(this,64,56)}function h(e){return e<<5|e>>>27}function l(e){return e<<30|e>>>2}function f(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0;u<16;++u)t[u]=e.readInt32BE(4*u);for(;u<80;++u)t[u]=t[u-3]^t[u-8]^t[u-14]^t[u-16];for(var c=0;c<80;++c){var d=~~(c/20),p=h(r)+f(d,n,i,o)+s+t[c]+a[d]|0;s=o,o=i,i=l(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0},u.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=u},{"./hash":41,inherits:31,"safe-buffer":40}],44:[function(e,t,r){var n=e("inherits"),i=e("./hash"),o=e("safe-buffer").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,i.call(this,64,56)}function h(e){return e<<1|e>>>31}function l(e){return e<<5|e>>>27}function f(e){return e<<30|e>>>2}function c(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0;u<16;++u)t[u]=e.readInt32BE(4*u);for(;u<80;++u)t[u]=h(t[u-3]^t[u-8]^t[u-14]^t[u-16]);for(var d=0;d<80;++d){var p=~~(d/20),g=l(r)+c(p,n,i,o)+s+t[d]+a[p]|0;s=o,o=i,i=f(n),n=r,r=g}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0},u.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=u},{"./hash":41,inherits:31,"safe-buffer":40}],45:[function(e,t,r){var n=e("inherits"),i=e("./sha256"),o=e("./hash"),a=e("safe-buffer").Buffer,s=new Array(64);function u(){this.init(),this._w=s,o.call(this,64,56)}n(u,i),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=a.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},t.exports=u},{"./hash":41,"./sha256":46,inherits:31,"safe-buffer":40}],46:[function(e,t,r){var n=e("inherits"),i=e("./hash"),o=e("safe-buffer").Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,i.call(this,64,56)}function h(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function f(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function c(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function p(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}n(u,i),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0|this._f,g=0|this._g,y=0|this._h,b=0;b<16;++b)t[b]=e.readInt32BE(4*b);for(;b<64;++b)t[b]=p(t[b-2])+t[b-7]+d(t[b-15])+t[b-16]|0;for(var m=0;m<64;++m){var v=y+c(s)+h(s,u,g)+a[m]+t[m]|0,w=f(r)+l(r,n,i)|0;y=g,g=u,u=s,s=o+v|0,o=i,i=n,n=r,r=v+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=g+this._g|0,this._h=y+this._h|0},u.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},t.exports=u},{"./hash":41,inherits:31,"safe-buffer":40}],47:[function(e,t,r){var n=e("inherits"),i=e("./sha512"),o=e("./hash"),a=e("safe-buffer").Buffer,s=new Array(160);function u(){this.init(),this._w=s,o.call(this,128,112)}n(u,i),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=a.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},t.exports=u},{"./hash":41,"./sha512":48,inherits:31,"safe-buffer":40}],48:[function(e,t,r){var n=e("inherits"),i=e("./hash"),o=e("safe-buffer").Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function u(){this.init(),this._w=s,i.call(this,128,112)}function h(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function f(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function c(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function y(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function b(e,t){return e>>>0>>0?1:0}n(u,i),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,s=0|this._eh,u=0|this._fh,m=0|this._gh,v=0|this._hh,w=0|this._al,_=0|this._bl,E=0|this._cl,S=0|this._dl,k=0|this._el,x=0|this._fl,R=0|this._gl,A=0|this._hl,T=0;T<32;T+=2)t[T]=e.readInt32BE(4*T),t[T+1]=e.readInt32BE(4*T+4);for(;T<160;T+=2){var B=t[T-30],O=t[T-30+1],M=d(B,O),L=p(O,B),j=g(B=t[T-4],O=t[T-4+1]),U=y(O,B),I=t[T-14],C=t[T-14+1],N=t[T-32],P=t[T-32+1],D=L+C|0,z=M+I+b(D,L)|0;z=(z=z+j+b(D=D+U|0,U)|0)+N+b(D=D+P|0,P)|0,t[T]=z,t[T+1]=D}for(var q=0;q<160;q+=2){z=t[q],D=t[q+1];var W=l(r,n,i),F=l(w,_,E),K=f(r,w),Y=f(w,r),H=c(s,k),$=c(k,s),V=a[q],G=a[q+1],J=h(s,u,m),X=h(k,x,R),Z=A+$|0,Q=v+H+b(Z,A)|0;Q=(Q=(Q=Q+J+b(Z=Z+X|0,X)|0)+V+b(Z=Z+G|0,G)|0)+z+b(Z=Z+D|0,D)|0;var ee=Y+F|0,te=K+W+b(ee,Y)|0;v=m,A=R,m=u,R=x,u=s,x=k,s=o+Q+b(k=S+Z|0,S)|0,o=i,S=E,i=n,E=_,n=r,_=w,r=Q+te+b(w=Z+ee|0,Z)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+E|0,this._dl=this._dl+S|0,this._el=this._el+k|0,this._fl=this._fl+x|0,this._gl=this._gl+R|0,this._hl=this._hl+A|0,this._ah=this._ah+r+b(this._al,w)|0,this._bh=this._bh+n+b(this._bl,_)|0,this._ch=this._ch+i+b(this._cl,E)|0,this._dh=this._dh+o+b(this._dl,S)|0,this._eh=this._eh+s+b(this._el,k)|0,this._fh=this._fh+u+b(this._fl,x)|0,this._gh=this._gh+m+b(this._gl,R)|0,this._hh=this._hh+v+b(this._hl,A)|0},u.prototype._hash=function(){var e=o.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},t.exports=u},{"./hash":41,inherits:31,"safe-buffer":40}],49:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0});const n={};let i;r.wordlists=n,r._default=i;try{r._default=i=e("./wordlists/czech.json"),n.czech=i}catch(e){}try{r._default=i=e("./wordlists/chinese_simplified.json"),n.chinese_simplified=i}catch(e){}try{r._default=i=e("./wordlists/chinese_traditional.json"),n.chinese_traditional=i}catch(e){}try{r._default=i=e("./wordlists/korean.json"),n.korean=i}catch(e){}try{r._default=i=e("./wordlists/french.json"),n.french=i}catch(e){}try{r._default=i=e("./wordlists/italian.json"),n.italian=i}catch(e){}try{r._default=i=e("./wordlists/spanish.json"),n.spanish=i}catch(e){}try{r._default=i=e("./wordlists/japanese.json"),n.japanese=i,n.JA=i}catch(e){}try{r._default=i=e("./wordlists/portuguese.json"),n.portuguese=i}catch(e){}try{r._default=i=e("./wordlists/english.json"),n.english=i,n.EN=i}catch(e){}},{"./wordlists/chinese_simplified.json":51,"./wordlists/chinese_traditional.json":void 0,"./wordlists/czech.json":void 0,"./wordlists/english.json":52,"./wordlists/french.json":void 0,"./wordlists/italian.json":void 0,"./wordlists/japanese.json":53,"./wordlists/korean.json":void 0,"./wordlists/portuguese.json":54,"./wordlists/spanish.json":void 0}],50:[function(e,t,r){(function(t){(function(){Object.defineProperty(r,"__esModule",{value:!0});const n=e("create-hash"),i=e("pbkdf2"),o=e("randombytes"),a=e("./_wordlists");let s=a._default;const u="Invalid mnemonic",h="Invalid entropy",l="Invalid mnemonic checksum",f="A wordlist is required but a default could not be found.\nPlease pass a 2048 word array explicitly.";function c(e,t,r,n,o){return Promise.resolve().then((()=>new Promise(((a,s)=>{const u=(e,t)=>e?s(e):a(t);i.pbkdf2(e,t,r,n,o,u)}))))}function d(e){return(e||"").normalize("NFKD")}function p(e,t,r){for(;e.lengthp(e.toString(2),"0",8))).join("")}function b(e){const t=8*e.length/32,r=n("sha256").update(e).digest();return y(Array.from(r)).slice(0,t)}function m(e){return"mnemonic"+(e||"")}function v(e,r){const n=t.from(d(e),"utf8"),o=t.from(m(d(r)),"utf8");return i.pbkdf2Sync(n,o,2048,64,"sha512")}function w(e,r){return Promise.resolve().then((()=>c(t.from(d(e),"utf8"),t.from(m(d(r)),"utf8"),2048,64,"sha512")))}function _(e,r){if(!(r=r||s))throw new Error(f);const n=d(e).split(" ");if(n.length%3!=0)throw new Error(u);const i=n.map((e=>{const t=r.indexOf(e);if(-1===t)throw new Error(u);return p(t.toString(2),"0",11)})).join(""),o=32*Math.floor(i.length/33),a=i.slice(0,o),c=i.slice(o),y=a.match(/(.{1,8})/g).map(g);if(y.length<16)throw new Error(h);if(y.length>32)throw new Error(h);if(y.length%4!=0)throw new Error(h);const m=t.from(y);if(b(m)!==c)throw new Error(l);return m.toString("hex")}function E(e,r){if(t.isBuffer(e)||(e=t.from(e,"hex")),!(r=r||s))throw new Error(f);if(e.length<16)throw new TypeError(h);if(e.length>32)throw new TypeError(h);if(e.length%4!=0)throw new TypeError(h);const n=(y(Array.from(e))+b(e)).match(/(.{1,11})/g).map((e=>{const t=g(e);return r[t]}));return"あいこくしん"===r[0]?n.join(" "):n.join(" ")}function S(e,t,r){if((e=e||128)%32!=0)throw new TypeError(h);return E((t=t||o)(e/8),r)}function k(e,t){try{_(e,t)}catch(e){return!1}return!0}function x(e){const t=a.wordlists[e];if(!t)throw new Error('Could not find wordlist for language "'+e+'"');s=t}function R(){if(!s)throw new Error("No Default Wordlist set");return Object.keys(a.wordlists).filter((e=>"JA"!==e&&"EN"!==e&&a.wordlists[e].every(((e,t)=>e===s[t]))))[0]}r.mnemonicToSeedSync=v,r.mnemonicToSeed=w,r.mnemonicToEntropy=_,r.entropyToMnemonic=E,r.generateMnemonic=S,r.validateMnemonic=k,r.setDefaultWordlist=x,r.getDefaultWordlist=R;var A=e("./_wordlists");r.wordlists=A.wordlists}).call(this)}).call(this,e("buffer").Buffer)},{"./_wordlists":49,buffer:3,"create-hash":28,pbkdf2:33,randombytes:38}],51:[function(e,t,r){t.exports=["的","一","是","在","不","了","有","和","人","这","中","大","为","上","个","国","我","以","要","他","时","来","用","们","生","到","作","地","于","出","就","分","对","成","会","可","主","发","年","动","同","工","也","能","下","过","子","说","产","种","面","而","方","后","多","定","行","学","法","所","民","得","经","十","三","之","进","着","等","部","度","家","电","力","里","如","水","化","高","自","二","理","起","小","物","现","实","加","量","都","两","体","制","机","当","使","点","从","业","本","去","把","性","好","应","开","它","合","还","因","由","其","些","然","前","外","天","政","四","日","那","社","义","事","平","形","相","全","表","间","样","与","关","各","重","新","线","内","数","正","心","反","你","明","看","原","又","么","利","比","或","但","质","气","第","向","道","命","此","变","条","只","没","结","解","问","意","建","月","公","无","系","军","很","情","者","最","立","代","想","已","通","并","提","直","题","党","程","展","五","果","料","象","员","革","位","入","常","文","总","次","品","式","活","设","及","管","特","件","长","求","老","头","基","资","边","流","路","级","少","图","山","统","接","知","较","将","组","见","计","别","她","手","角","期","根","论","运","农","指","几","九","区","强","放","决","西","被","干","做","必","战","先","回","则","任","取","据","处","队","南","给","色","光","门","即","保","治","北","造","百","规","热","领","七","海","口","东","导","器","压","志","世","金","增","争","济","阶","油","思","术","极","交","受","联","什","认","六","共","权","收","证","改","清","美","再","采","转","更","单","风","切","打","白","教","速","花","带","安","场","身","车","例","真","务","具","万","每","目","至","达","走","积","示","议","声","报","斗","完","类","八","离","华","名","确","才","科","张","信","马","节","话","米","整","空","元","况","今","集","温","传","土","许","步","群","广","石","记","需","段","研","界","拉","林","律","叫","且","究","观","越","织","装","影","算","低","持","音","众","书","布","复","容","儿","须","际","商","非","验","连","断","深","难","近","矿","千","周","委","素","技","备","半","办","青","省","列","习","响","约","支","般","史","感","劳","便","团","往","酸","历","市","克","何","除","消","构","府","称","太","准","精","值","号","率","族","维","划","选","标","写","存","候","毛","亲","快","效","斯","院","查","江","型","眼","王","按","格","养","易","置","派","层","片","始","却","专","状","育","厂","京","识","适","属","圆","包","火","住","调","满","县","局","照","参","红","细","引","听","该","铁","价","严","首","底","液","官","德","随","病","苏","失","尔","死","讲","配","女","黄","推","显","谈","罪","神","艺","呢","席","含","企","望","密","批","营","项","防","举","球","英","氧","势","告","李","台","落","木","帮","轮","破","亚","师","围","注","远","字","材","排","供","河","态","封","另","施","减","树","溶","怎","止","案","言","士","均","武","固","叶","鱼","波","视","仅","费","紧","爱","左","章","早","朝","害","续","轻","服","试","食","充","兵","源","判","护","司","足","某","练","差","致","板","田","降","黑","犯","负","击","范","继","兴","似","余","坚","曲","输","修","故","城","夫","够","送","笔","船","占","右","财","吃","富","春","职","觉","汉","画","功","巴","跟","虽","杂","飞","检","吸","助","升","阳","互","初","创","抗","考","投","坏","策","古","径","换","未","跑","留","钢","曾","端","责","站","简","述","钱","副","尽","帝","射","草","冲","承","独","令","限","阿","宣","环","双","请","超","微","让","控","州","良","轴","找","否","纪","益","依","优","顶","础","载","倒","房","突","坐","粉","敌","略","客","袁","冷","胜","绝","析","块","剂","测","丝","协","诉","念","陈","仍","罗","盐","友","洋","错","苦","夜","刑","移","频","逐","靠","混","母","短","皮","终","聚","汽","村","云","哪","既","距","卫","停","烈","央","察","烧","迅","境","若","印","洲","刻","括","激","孔","搞","甚","室","待","核","校","散","侵","吧","甲","游","久","菜","味","旧","模","湖","货","损","预","阻","毫","普","稳","乙","妈","植","息","扩","银","语","挥","酒","守","拿","序","纸","医","缺","雨","吗","针","刘","啊","急","唱","误","训","愿","审","附","获","茶","鲜","粮","斤","孩","脱","硫","肥","善","龙","演","父","渐","血","欢","械","掌","歌","沙","刚","攻","谓","盾","讨","晚","粒","乱","燃","矛","乎","杀","药","宁","鲁","贵","钟","煤","读","班","伯","香","介","迫","句","丰","培","握","兰","担","弦","蛋","沉","假","穿","执","答","乐","谁","顺","烟","缩","征","脸","喜","松","脚","困","异","免","背","星","福","买","染","井","概","慢","怕","磁","倍","祖","皇","促","静","补","评","翻","肉","践","尼","衣","宽","扬","棉","希","伤","操","垂","秋","宜","氢","套","督","振","架","亮","末","宪","庆","编","牛","触","映","雷","销","诗","座","居","抓","裂","胞","呼","娘","景","威","绿","晶","厚","盟","衡","鸡","孙","延","危","胶","屋","乡","临","陆","顾","掉","呀","灯","岁","措","束","耐","剧","玉","赵","跳","哥","季","课","凯","胡","额","款","绍","卷","齐","伟","蒸","殖","永","宗","苗","川","炉","岩","弱","零","杨","奏","沿","露","杆","探","滑","镇","饭","浓","航","怀","赶","库","夺","伊","灵","税","途","灭","赛","归","召","鼓","播","盘","裁","险","康","唯","录","菌","纯","借","糖","盖","横","符","私","努","堂","域","枪","润","幅","哈","竟","熟","虫","泽","脑","壤","碳","欧","遍","侧","寨","敢","彻","虑","斜","薄","庭","纳","弹","饲","伸","折","麦","湿","暗","荷","瓦","塞","床","筑","恶","户","访","塔","奇","透","梁","刀","旋","迹","卡","氯","遇","份","毒","泥","退","洗","摆","灰","彩","卖","耗","夏","择","忙","铜","献","硬","予","繁","圈","雪","函","亦","抽","篇","阵","阴","丁","尺","追","堆","雄","迎","泛","爸","楼","避","谋","吨","野","猪","旗","累","偏","典","馆","索","秦","脂","潮","爷","豆","忽","托","惊","塑","遗","愈","朱","替","纤","粗","倾","尚","痛","楚","谢","奋","购","磨","君","池","旁","碎","骨","监","捕","弟","暴","割","贯","殊","释","词","亡","壁","顿","宝","午","尘","闻","揭","炮","残","冬","桥","妇","警","综","招","吴","付","浮","遭","徐","您","摇","谷","赞","箱","隔","订","男","吹","园","纷","唐","败","宋","玻","巨","耕","坦","荣","闭","湾","键","凡","驻","锅","救","恩","剥","凝","碱","齿","截","炼","麻","纺","禁","废","盛","版","缓","净","睛","昌","婚","涉","筒","嘴","插","岸","朗","庄","街","藏","姑","贸","腐","奴","啦","惯","乘","伙","恢","匀","纱","扎","辩","耳","彪","臣","亿","璃","抵","脉","秀","萨","俄","网","舞","店","喷","纵","寸","汗","挂","洪","贺","闪","柬","爆","烯","津","稻","墙","软","勇","像","滚","厘","蒙","芳","肯","坡","柱","荡","腿","仪","旅","尾","轧","冰","贡","登","黎","削","钻","勒","逃","障","氨","郭","峰","币","港","伏","轨","亩","毕","擦","莫","刺","浪","秘","援","株","健","售","股","岛","甘","泡","睡","童","铸","汤","阀","休","汇","舍","牧","绕","炸","哲","磷","绩","朋","淡","尖","启","陷","柴","呈","徒","颜","泪","稍","忘","泵","蓝","拖","洞","授","镜","辛","壮","锋","贫","虚","弯","摩","泰","幼","廷","尊","窗","纲","弄","隶","疑","氏","宫","姐","震","瑞","怪","尤","琴","循","描","膜","违","夹","腰","缘","珠","穷","森","枝","竹","沟","催","绳","忆","邦","剩","幸","浆","栏","拥","牙","贮","礼","滤","钠","纹","罢","拍","咱","喊","袖","埃","勤","罚","焦","潜","伍","墨","欲","缝","姓","刊","饱","仿","奖","铝","鬼","丽","跨","默","挖","链","扫","喝","袋","炭","污","幕","诸","弧","励","梅","奶","洁","灾","舟","鉴","苯","讼","抱","毁","懂","寒","智","埔","寄","届","跃","渡","挑","丹","艰","贝","碰","拔","爹","戴","码","梦","芽","熔","赤","渔","哭","敬","颗","奔","铅","仲","虎","稀","妹","乏","珍","申","桌","遵","允","隆","螺","仓","魏","锐","晓","氮","兼","隐","碍","赫","拨","忠","肃","缸","牵","抢","博","巧","壳","兄","杜","讯","诚","碧","祥","柯","页","巡","矩","悲","灌","龄","伦","票","寻","桂","铺","圣","恐","恰","郑","趣","抬","荒","腾","贴","柔","滴","猛","阔","辆","妻","填","撤","储","签","闹","扰","紫","砂","递","戏","吊","陶","伐","喂","疗","瓶","婆","抚","臂","摸","忍","虾","蜡","邻","胸","巩","挤","偶","弃","槽","劲","乳","邓","吉","仁","烂","砖","租","乌","舰","伴","瓜","浅","丙","暂","燥","橡","柳","迷","暖","牌","秧","胆","详","簧","踏","瓷","谱","呆","宾","糊","洛","辉","愤","竞","隙","怒","粘","乃","绪","肩","籍","敏","涂","熙","皆","侦","悬","掘","享","纠","醒","狂","锁","淀","恨","牲","霸","爬","赏","逆","玩","陵","祝","秒","浙","貌","役","彼","悉","鸭","趋","凤","晨","畜","辈","秩","卵","署","梯","炎","滩","棋","驱","筛","峡","冒","啥","寿","译","浸","泉","帽","迟","硅","疆","贷","漏","稿","冠","嫩","胁","芯","牢","叛","蚀","奥","鸣","岭","羊","凭","串","塘","绘","酵","融","盆","锡","庙","筹","冻","辅","摄","袭","筋","拒","僚","旱","钾","鸟","漆","沈","眉","疏","添","棒","穗","硝","韩","逼","扭","侨","凉","挺","碗","栽","炒","杯","患","馏","劝","豪","辽","勃","鸿","旦","吏","拜","狗","埋","辊","掩","饮","搬","骂","辞","勾","扣","估","蒋","绒","雾","丈","朵","姆","拟","宇","辑","陕","雕","偿","蓄","崇","剪","倡","厅","咬","驶","薯","刷","斥","番","赋","奉","佛","浇","漫","曼","扇","钙","桃","扶","仔","返","俗","亏","腔","鞋","棱","覆","框","悄","叔","撞","骗","勘","旺","沸","孤","吐","孟","渠","屈","疾","妙","惜","仰","狠","胀","谐","抛","霉","桑","岗","嘛","衰","盗","渗","脏","赖","涌","甜","曹","阅","肌","哩","厉","烃","纬","毅","昨","伪","症","煮","叹","钉","搭","茎","笼","酷","偷","弓","锥","恒","杰","坑","鼻","翼","纶","叙","狱","逮","罐","络","棚","抑","膨","蔬","寺","骤","穆","冶","枯","册","尸","凸","绅","坯","牺","焰","轰","欣","晋","瘦","御","锭","锦","丧","旬","锻","垄","搜","扑","邀","亭","酯","迈","舒","脆","酶","闲","忧","酚","顽","羽","涨","卸","仗","陪","辟","惩","杭","姚","肚","捉","飘","漂","昆","欺","吾","郎","烷","汁","呵","饰","萧","雅","邮","迁","燕","撒","姻","赴","宴","烦","债","帐","斑","铃","旨","醇","董","饼","雏","姿","拌","傅","腹","妥","揉","贤","拆","歪","葡","胺","丢","浩","徽","昂","垫","挡","览","贪","慰","缴","汪","慌","冯","诺","姜","谊","凶","劣","诬","耀","昏","躺","盈","骑","乔","溪","丛","卢","抹","闷","咨","刮","驾","缆","悟","摘","铒","掷","颇","幻","柄","惠","惨","佳","仇","腊","窝","涤","剑","瞧","堡","泼","葱","罩","霍","捞","胎","苍","滨","俩","捅","湘","砍","霞","邵","萄","疯","淮","遂","熊","粪","烘","宿","档","戈","驳","嫂","裕","徙","箭","捐","肠","撑","晒","辨","殿","莲","摊","搅","酱","屏","疫","哀","蔡","堵","沫","皱","畅","叠","阁","莱","敲","辖","钩","痕","坝","巷","饿","祸","丘","玄","溜","曰","逻","彭","尝","卿","妨","艇","吞","韦","怨","矮","歇"]},{}],52:[function(e,t,r){t.exports=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"]},{}],53:[function(e,t,r){t.exports=["あいこくしん","あいさつ","あいだ","あおぞら","あかちゃん","あきる","あけがた","あける","あこがれる","あさい","あさひ","あしあと","あじわう","あずかる","あずき","あそぶ","あたえる","あたためる","あたりまえ","あたる","あつい","あつかう","あっしゅく","あつまり","あつめる","あてな","あてはまる","あひる","あぶら","あぶる","あふれる","あまい","あまど","あまやかす","あまり","あみもの","あめりか","あやまる","あゆむ","あらいぐま","あらし","あらすじ","あらためる","あらゆる","あらわす","ありがとう","あわせる","あわてる","あんい","あんがい","あんこ","あんぜん","あんてい","あんない","あんまり","いいだす","いおん","いがい","いがく","いきおい","いきなり","いきもの","いきる","いくじ","いくぶん","いけばな","いけん","いこう","いこく","いこつ","いさましい","いさん","いしき","いじゅう","いじょう","いじわる","いずみ","いずれ","いせい","いせえび","いせかい","いせき","いぜん","いそうろう","いそがしい","いだい","いだく","いたずら","いたみ","いたりあ","いちおう","いちじ","いちど","いちば","いちぶ","いちりゅう","いつか","いっしゅん","いっせい","いっそう","いったん","いっち","いってい","いっぽう","いてざ","いてん","いどう","いとこ","いない","いなか","いねむり","いのち","いのる","いはつ","いばる","いはん","いびき","いひん","いふく","いへん","いほう","いみん","いもうと","いもたれ","いもり","いやがる","いやす","いよかん","いよく","いらい","いらすと","いりぐち","いりょう","いれい","いれもの","いれる","いろえんぴつ","いわい","いわう","いわかん","いわば","いわゆる","いんげんまめ","いんさつ","いんしょう","いんよう","うえき","うえる","うおざ","うがい","うかぶ","うかべる","うきわ","うくらいな","うくれれ","うけたまわる","うけつけ","うけとる","うけもつ","うける","うごかす","うごく","うこん","うさぎ","うしなう","うしろがみ","うすい","うすぎ","うすぐらい","うすめる","うせつ","うちあわせ","うちがわ","うちき","うちゅう","うっかり","うつくしい","うったえる","うつる","うどん","うなぎ","うなじ","うなずく","うなる","うねる","うのう","うぶげ","うぶごえ","うまれる","うめる","うもう","うやまう","うよく","うらがえす","うらぐち","うらない","うりあげ","うりきれ","うるさい","うれしい","うれゆき","うれる","うろこ","うわき","うわさ","うんこう","うんちん","うんてん","うんどう","えいえん","えいが","えいきょう","えいご","えいせい","えいぶん","えいよう","えいわ","えおり","えがお","えがく","えきたい","えくせる","えしゃく","えすて","えつらん","えのぐ","えほうまき","えほん","えまき","えもじ","えもの","えらい","えらぶ","えりあ","えんえん","えんかい","えんぎ","えんげき","えんしゅう","えんぜつ","えんそく","えんちょう","えんとつ","おいかける","おいこす","おいしい","おいつく","おうえん","おうさま","おうじ","おうせつ","おうたい","おうふく","おうべい","おうよう","おえる","おおい","おおう","おおどおり","おおや","おおよそ","おかえり","おかず","おがむ","おかわり","おぎなう","おきる","おくさま","おくじょう","おくりがな","おくる","おくれる","おこす","おこなう","おこる","おさえる","おさない","おさめる","おしいれ","おしえる","おじぎ","おじさん","おしゃれ","おそらく","おそわる","おたがい","おたく","おだやか","おちつく","おっと","おつり","おでかけ","おとしもの","おとなしい","おどり","おどろかす","おばさん","おまいり","おめでとう","おもいで","おもう","おもたい","おもちゃ","おやつ","おやゆび","およぼす","おらんだ","おろす","おんがく","おんけい","おんしゃ","おんせん","おんだん","おんちゅう","おんどけい","かあつ","かいが","がいき","がいけん","がいこう","かいさつ","かいしゃ","かいすいよく","かいぜん","かいぞうど","かいつう","かいてん","かいとう","かいふく","がいへき","かいほう","かいよう","がいらい","かいわ","かえる","かおり","かかえる","かがく","かがし","かがみ","かくご","かくとく","かざる","がぞう","かたい","かたち","がちょう","がっきゅう","がっこう","がっさん","がっしょう","かなざわし","かのう","がはく","かぶか","かほう","かほご","かまう","かまぼこ","かめれおん","かゆい","かようび","からい","かるい","かろう","かわく","かわら","がんか","かんけい","かんこう","かんしゃ","かんそう","かんたん","かんち","がんばる","きあい","きあつ","きいろ","ぎいん","きうい","きうん","きえる","きおう","きおく","きおち","きおん","きかい","きかく","きかんしゃ","ききて","きくばり","きくらげ","きけんせい","きこう","きこえる","きこく","きさい","きさく","きさま","きさらぎ","ぎじかがく","ぎしき","ぎじたいけん","ぎじにってい","ぎじゅつしゃ","きすう","きせい","きせき","きせつ","きそう","きぞく","きぞん","きたえる","きちょう","きつえん","ぎっちり","きつつき","きつね","きてい","きどう","きどく","きない","きなが","きなこ","きぬごし","きねん","きのう","きのした","きはく","きびしい","きひん","きふく","きぶん","きぼう","きほん","きまる","きみつ","きむずかしい","きめる","きもだめし","きもち","きもの","きゃく","きやく","ぎゅうにく","きよう","きょうりゅう","きらい","きらく","きりん","きれい","きれつ","きろく","ぎろん","きわめる","ぎんいろ","きんかくじ","きんじょ","きんようび","ぐあい","くいず","くうかん","くうき","くうぐん","くうこう","ぐうせい","くうそう","ぐうたら","くうふく","くうぼ","くかん","くきょう","くげん","ぐこう","くさい","くさき","くさばな","くさる","くしゃみ","くしょう","くすのき","くすりゆび","くせげ","くせん","ぐたいてき","くださる","くたびれる","くちこみ","くちさき","くつした","ぐっすり","くつろぐ","くとうてん","くどく","くなん","くねくね","くのう","くふう","くみあわせ","くみたてる","くめる","くやくしょ","くらす","くらべる","くるま","くれる","くろう","くわしい","ぐんかん","ぐんしょく","ぐんたい","ぐんて","けあな","けいかく","けいけん","けいこ","けいさつ","げいじゅつ","けいたい","げいのうじん","けいれき","けいろ","けおとす","けおりもの","げきか","げきげん","げきだん","げきちん","げきとつ","げきは","げきやく","げこう","げこくじょう","げざい","けさき","げざん","けしき","けしごむ","けしょう","げすと","けたば","けちゃっぷ","けちらす","けつあつ","けつい","けつえき","けっこん","けつじょ","けっせき","けってい","けつまつ","げつようび","げつれい","けつろん","げどく","けとばす","けとる","けなげ","けなす","けなみ","けぬき","げねつ","けねん","けはい","げひん","けぶかい","げぼく","けまり","けみかる","けむし","けむり","けもの","けらい","けろけろ","けわしい","けんい","けんえつ","けんお","けんか","げんき","けんげん","けんこう","けんさく","けんしゅう","けんすう","げんそう","けんちく","けんてい","けんとう","けんない","けんにん","げんぶつ","けんま","けんみん","けんめい","けんらん","けんり","こあくま","こいぬ","こいびと","ごうい","こうえん","こうおん","こうかん","ごうきゅう","ごうけい","こうこう","こうさい","こうじ","こうすい","ごうせい","こうそく","こうたい","こうちゃ","こうつう","こうてい","こうどう","こうない","こうはい","ごうほう","ごうまん","こうもく","こうりつ","こえる","こおり","ごかい","ごがつ","ごかん","こくご","こくさい","こくとう","こくない","こくはく","こぐま","こけい","こける","ここのか","こころ","こさめ","こしつ","こすう","こせい","こせき","こぜん","こそだて","こたい","こたえる","こたつ","こちょう","こっか","こつこつ","こつばん","こつぶ","こてい","こてん","ことがら","ことし","ことば","ことり","こなごな","こねこね","このまま","このみ","このよ","ごはん","こひつじ","こふう","こふん","こぼれる","ごまあぶら","こまかい","ごますり","こまつな","こまる","こむぎこ","こもじ","こもち","こもの","こもん","こやく","こやま","こゆう","こゆび","こよい","こよう","こりる","これくしょん","ころっけ","こわもて","こわれる","こんいん","こんかい","こんき","こんしゅう","こんすい","こんだて","こんとん","こんなん","こんびに","こんぽん","こんまけ","こんや","こんれい","こんわく","ざいえき","さいかい","さいきん","ざいげん","ざいこ","さいしょ","さいせい","ざいたく","ざいちゅう","さいてき","ざいりょう","さうな","さかいし","さがす","さかな","さかみち","さがる","さぎょう","さくし","さくひん","さくら","さこく","さこつ","さずかる","ざせき","さたん","さつえい","ざつおん","ざっか","ざつがく","さっきょく","ざっし","さつじん","ざっそう","さつたば","さつまいも","さてい","さといも","さとう","さとおや","さとし","さとる","さのう","さばく","さびしい","さべつ","さほう","さほど","さます","さみしい","さみだれ","さむけ","さめる","さやえんどう","さゆう","さよう","さよく","さらだ","ざるそば","さわやか","さわる","さんいん","さんか","さんきゃく","さんこう","さんさい","ざんしょ","さんすう","さんせい","さんそ","さんち","さんま","さんみ","さんらん","しあい","しあげ","しあさって","しあわせ","しいく","しいん","しうち","しえい","しおけ","しかい","しかく","じかん","しごと","しすう","じだい","したうけ","したぎ","したて","したみ","しちょう","しちりん","しっかり","しつじ","しつもん","してい","してき","してつ","じてん","じどう","しなぎれ","しなもの","しなん","しねま","しねん","しのぐ","しのぶ","しはい","しばかり","しはつ","しはらい","しはん","しひょう","しふく","じぶん","しへい","しほう","しほん","しまう","しまる","しみん","しむける","じむしょ","しめい","しめる","しもん","しゃいん","しゃうん","しゃおん","じゃがいも","しやくしょ","しゃくほう","しゃけん","しゃこ","しゃざい","しゃしん","しゃせん","しゃそう","しゃたい","しゃちょう","しゃっきん","じゃま","しゃりん","しゃれい","じゆう","じゅうしょ","しゅくはく","じゅしん","しゅっせき","しゅみ","しゅらば","じゅんばん","しょうかい","しょくたく","しょっけん","しょどう","しょもつ","しらせる","しらべる","しんか","しんこう","じんじゃ","しんせいじ","しんちく","しんりん","すあげ","すあし","すあな","ずあん","すいえい","すいか","すいとう","ずいぶん","すいようび","すうがく","すうじつ","すうせん","すおどり","すきま","すくう","すくない","すける","すごい","すこし","ずさん","すずしい","すすむ","すすめる","すっかり","ずっしり","ずっと","すてき","すてる","すねる","すのこ","すはだ","すばらしい","ずひょう","ずぶぬれ","すぶり","すふれ","すべて","すべる","ずほう","すぼん","すまい","すめし","すもう","すやき","すらすら","するめ","すれちがう","すろっと","すわる","すんぜん","すんぽう","せあぶら","せいかつ","せいげん","せいじ","せいよう","せおう","せかいかん","せきにん","せきむ","せきゆ","せきらんうん","せけん","せこう","せすじ","せたい","せたけ","せっかく","せっきゃく","ぜっく","せっけん","せっこつ","せっさたくま","せつぞく","せつだん","せつでん","せっぱん","せつび","せつぶん","せつめい","せつりつ","せなか","せのび","せはば","せびろ","せぼね","せまい","せまる","せめる","せもたれ","せりふ","ぜんあく","せんい","せんえい","せんか","せんきょ","せんく","せんげん","ぜんご","せんさい","せんしゅ","せんすい","せんせい","せんぞ","せんたく","せんちょう","せんてい","せんとう","せんぬき","せんねん","せんぱい","ぜんぶ","ぜんぽう","せんむ","せんめんじょ","せんもん","せんやく","せんゆう","せんよう","ぜんら","ぜんりゃく","せんれい","せんろ","そあく","そいとげる","そいね","そうがんきょう","そうき","そうご","そうしん","そうだん","そうなん","そうび","そうめん","そうり","そえもの","そえん","そがい","そげき","そこう","そこそこ","そざい","そしな","そせい","そせん","そそぐ","そだてる","そつう","そつえん","そっかん","そつぎょう","そっけつ","そっこう","そっせん","そっと","そとがわ","そとづら","そなえる","そなた","そふぼ","そぼく","そぼろ","そまつ","そまる","そむく","そむりえ","そめる","そもそも","そよかぜ","そらまめ","そろう","そんかい","そんけい","そんざい","そんしつ","そんぞく","そんちょう","ぞんび","ぞんぶん","そんみん","たあい","たいいん","たいうん","たいえき","たいおう","だいがく","たいき","たいぐう","たいけん","たいこ","たいざい","だいじょうぶ","だいすき","たいせつ","たいそう","だいたい","たいちょう","たいてい","だいどころ","たいない","たいねつ","たいのう","たいはん","だいひょう","たいふう","たいへん","たいほ","たいまつばな","たいみんぐ","たいむ","たいめん","たいやき","たいよう","たいら","たいりょく","たいる","たいわん","たうえ","たえる","たおす","たおる","たおれる","たかい","たかね","たきび","たくさん","たこく","たこやき","たさい","たしざん","だじゃれ","たすける","たずさわる","たそがれ","たたかう","たたく","ただしい","たたみ","たちばな","だっかい","だっきゃく","だっこ","だっしゅつ","だったい","たてる","たとえる","たなばた","たにん","たぬき","たのしみ","たはつ","たぶん","たべる","たぼう","たまご","たまる","だむる","ためいき","ためす","ためる","たもつ","たやすい","たよる","たらす","たりきほんがん","たりょう","たりる","たると","たれる","たれんと","たろっと","たわむれる","だんあつ","たんい","たんおん","たんか","たんき","たんけん","たんご","たんさん","たんじょうび","だんせい","たんそく","たんたい","だんち","たんてい","たんとう","だんな","たんにん","だんねつ","たんのう","たんぴん","だんぼう","たんまつ","たんめい","だんれつ","だんろ","だんわ","ちあい","ちあん","ちいき","ちいさい","ちえん","ちかい","ちから","ちきゅう","ちきん","ちけいず","ちけん","ちこく","ちさい","ちしき","ちしりょう","ちせい","ちそう","ちたい","ちたん","ちちおや","ちつじょ","ちてき","ちてん","ちぬき","ちぬり","ちのう","ちひょう","ちへいせん","ちほう","ちまた","ちみつ","ちみどろ","ちめいど","ちゃんこなべ","ちゅうい","ちゆりょく","ちょうし","ちょさくけん","ちらし","ちらみ","ちりがみ","ちりょう","ちるど","ちわわ","ちんたい","ちんもく","ついか","ついたち","つうか","つうじょう","つうはん","つうわ","つかう","つかれる","つくね","つくる","つけね","つける","つごう","つたえる","つづく","つつじ","つつむ","つとめる","つながる","つなみ","つねづね","つのる","つぶす","つまらない","つまる","つみき","つめたい","つもり","つもる","つよい","つるぼ","つるみく","つわもの","つわり","てあし","てあて","てあみ","ていおん","ていか","ていき","ていけい","ていこく","ていさつ","ていし","ていせい","ていたい","ていど","ていねい","ていひょう","ていへん","ていぼう","てうち","ておくれ","てきとう","てくび","でこぼこ","てさぎょう","てさげ","てすり","てそう","てちがい","てちょう","てつがく","てつづき","でっぱ","てつぼう","てつや","でぬかえ","てぬき","てぬぐい","てのひら","てはい","てぶくろ","てふだ","てほどき","てほん","てまえ","てまきずし","てみじか","てみやげ","てらす","てれび","てわけ","てわたし","でんあつ","てんいん","てんかい","てんき","てんぐ","てんけん","てんごく","てんさい","てんし","てんすう","でんち","てんてき","てんとう","てんない","てんぷら","てんぼうだい","てんめつ","てんらんかい","でんりょく","でんわ","どあい","といれ","どうかん","とうきゅう","どうぐ","とうし","とうむぎ","とおい","とおか","とおく","とおす","とおる","とかい","とかす","ときおり","ときどき","とくい","とくしゅう","とくてん","とくに","とくべつ","とけい","とける","とこや","とさか","としょかん","とそう","とたん","とちゅう","とっきゅう","とっくん","とつぜん","とつにゅう","とどける","ととのえる","とない","となえる","となり","とのさま","とばす","どぶがわ","とほう","とまる","とめる","ともだち","ともる","どようび","とらえる","とんかつ","どんぶり","ないかく","ないこう","ないしょ","ないす","ないせん","ないそう","なおす","ながい","なくす","なげる","なこうど","なさけ","なたでここ","なっとう","なつやすみ","ななおし","なにごと","なにもの","なにわ","なのか","なふだ","なまいき","なまえ","なまみ","なみだ","なめらか","なめる","なやむ","ならう","ならび","ならぶ","なれる","なわとび","なわばり","にあう","にいがた","にうけ","におい","にかい","にがて","にきび","にくしみ","にくまん","にげる","にさんかたんそ","にしき","にせもの","にちじょう","にちようび","にっか","にっき","にっけい","にっこう","にっさん","にっしょく","にっすう","にっせき","にってい","になう","にほん","にまめ","にもつ","にやり","にゅういん","にりんしゃ","にわとり","にんい","にんか","にんき","にんげん","にんしき","にんずう","にんそう","にんたい","にんち","にんてい","にんにく","にんぷ","にんまり","にんむ","にんめい","にんよう","ぬいくぎ","ぬかす","ぬぐいとる","ぬぐう","ぬくもり","ぬすむ","ぬまえび","ぬめり","ぬらす","ぬんちゃく","ねあげ","ねいき","ねいる","ねいろ","ねぐせ","ねくたい","ねくら","ねこぜ","ねこむ","ねさげ","ねすごす","ねそべる","ねだん","ねつい","ねっしん","ねつぞう","ねったいぎょ","ねぶそく","ねふだ","ねぼう","ねほりはほり","ねまき","ねまわし","ねみみ","ねむい","ねむたい","ねもと","ねらう","ねわざ","ねんいり","ねんおし","ねんかん","ねんきん","ねんぐ","ねんざ","ねんし","ねんちゃく","ねんど","ねんぴ","ねんぶつ","ねんまつ","ねんりょう","ねんれい","のいず","のおづま","のがす","のきなみ","のこぎり","のこす","のこる","のせる","のぞく","のぞむ","のたまう","のちほど","のっく","のばす","のはら","のべる","のぼる","のみもの","のやま","のらいぬ","のらねこ","のりもの","のりゆき","のれん","のんき","ばあい","はあく","ばあさん","ばいか","ばいく","はいけん","はいご","はいしん","はいすい","はいせん","はいそう","はいち","ばいばい","はいれつ","はえる","はおる","はかい","ばかり","はかる","はくしゅ","はけん","はこぶ","はさみ","はさん","はしご","ばしょ","はしる","はせる","ぱそこん","はそん","はたん","はちみつ","はつおん","はっかく","はづき","はっきり","はっくつ","はっけん","はっこう","はっさん","はっしん","はったつ","はっちゅう","はってん","はっぴょう","はっぽう","はなす","はなび","はにかむ","はぶらし","はみがき","はむかう","はめつ","はやい","はやし","はらう","はろうぃん","はわい","はんい","はんえい","はんおん","はんかく","はんきょう","ばんぐみ","はんこ","はんしゃ","はんすう","はんだん","ぱんち","ぱんつ","はんてい","はんとし","はんのう","はんぱ","はんぶん","はんぺん","はんぼうき","はんめい","はんらん","はんろん","ひいき","ひうん","ひえる","ひかく","ひかり","ひかる","ひかん","ひくい","ひけつ","ひこうき","ひこく","ひさい","ひさしぶり","ひさん","びじゅつかん","ひしょ","ひそか","ひそむ","ひたむき","ひだり","ひたる","ひつぎ","ひっこし","ひっし","ひつじゅひん","ひっす","ひつぜん","ぴったり","ぴっちり","ひつよう","ひてい","ひとごみ","ひなまつり","ひなん","ひねる","ひはん","ひびく","ひひょう","ひほう","ひまわり","ひまん","ひみつ","ひめい","ひめじし","ひやけ","ひやす","ひよう","びょうき","ひらがな","ひらく","ひりつ","ひりょう","ひるま","ひるやすみ","ひれい","ひろい","ひろう","ひろき","ひろゆき","ひんかく","ひんけつ","ひんこん","ひんしゅ","ひんそう","ぴんち","ひんぱん","びんぼう","ふあん","ふいうち","ふうけい","ふうせん","ぷうたろう","ふうとう","ふうふ","ふえる","ふおん","ふかい","ふきん","ふくざつ","ふくぶくろ","ふこう","ふさい","ふしぎ","ふじみ","ふすま","ふせい","ふせぐ","ふそく","ぶたにく","ふたん","ふちょう","ふつう","ふつか","ふっかつ","ふっき","ふっこく","ぶどう","ふとる","ふとん","ふのう","ふはい","ふひょう","ふへん","ふまん","ふみん","ふめつ","ふめん","ふよう","ふりこ","ふりる","ふるい","ふんいき","ぶんがく","ぶんぐ","ふんしつ","ぶんせき","ふんそう","ぶんぽう","へいあん","へいおん","へいがい","へいき","へいげん","へいこう","へいさ","へいしゃ","へいせつ","へいそ","へいたく","へいてん","へいねつ","へいわ","へきが","へこむ","べにいろ","べにしょうが","へらす","へんかん","べんきょう","べんごし","へんさい","へんたい","べんり","ほあん","ほいく","ぼうぎょ","ほうこく","ほうそう","ほうほう","ほうもん","ほうりつ","ほえる","ほおん","ほかん","ほきょう","ぼきん","ほくろ","ほけつ","ほけん","ほこう","ほこる","ほしい","ほしつ","ほしゅ","ほしょう","ほせい","ほそい","ほそく","ほたて","ほたる","ぽちぶくろ","ほっきょく","ほっさ","ほったん","ほとんど","ほめる","ほんい","ほんき","ほんけ","ほんしつ","ほんやく","まいにち","まかい","まかせる","まがる","まける","まこと","まさつ","まじめ","ますく","まぜる","まつり","まとめ","まなぶ","まぬけ","まねく","まほう","まもる","まゆげ","まよう","まろやか","まわす","まわり","まわる","まんが","まんきつ","まんぞく","まんなか","みいら","みうち","みえる","みがく","みかた","みかん","みけん","みこん","みじかい","みすい","みすえる","みせる","みっか","みつかる","みつける","みてい","みとめる","みなと","みなみかさい","みねらる","みのう","みのがす","みほん","みもと","みやげ","みらい","みりょく","みわく","みんか","みんぞく","むいか","むえき","むえん","むかい","むかう","むかえ","むかし","むぎちゃ","むける","むげん","むさぼる","むしあつい","むしば","むじゅん","むしろ","むすう","むすこ","むすぶ","むすめ","むせる","むせん","むちゅう","むなしい","むのう","むやみ","むよう","むらさき","むりょう","むろん","めいあん","めいうん","めいえん","めいかく","めいきょく","めいさい","めいし","めいそう","めいぶつ","めいれい","めいわく","めぐまれる","めざす","めした","めずらしい","めだつ","めまい","めやす","めんきょ","めんせき","めんどう","もうしあげる","もうどうけん","もえる","もくし","もくてき","もくようび","もちろん","もどる","もらう","もんく","もんだい","やおや","やける","やさい","やさしい","やすい","やすたろう","やすみ","やせる","やそう","やたい","やちん","やっと","やっぱり","やぶる","やめる","ややこしい","やよい","やわらかい","ゆうき","ゆうびんきょく","ゆうべ","ゆうめい","ゆけつ","ゆしゅつ","ゆせん","ゆそう","ゆたか","ゆちゃく","ゆでる","ゆにゅう","ゆびわ","ゆらい","ゆれる","ようい","ようか","ようきゅう","ようじ","ようす","ようちえん","よかぜ","よかん","よきん","よくせい","よくぼう","よけい","よごれる","よさん","よしゅう","よそう","よそく","よっか","よてい","よどがわく","よねつ","よやく","よゆう","よろこぶ","よろしい","らいう","らくがき","らくご","らくさつ","らくだ","らしんばん","らせん","らぞく","らたい","らっか","られつ","りえき","りかい","りきさく","りきせつ","りくぐん","りくつ","りけん","りこう","りせい","りそう","りそく","りてん","りねん","りゆう","りゅうがく","りよう","りょうり","りょかん","りょくちゃ","りょこう","りりく","りれき","りろん","りんご","るいけい","るいさい","るいじ","るいせき","るすばん","るりがわら","れいかん","れいぎ","れいせい","れいぞうこ","れいとう","れいぼう","れきし","れきだい","れんあい","れんけい","れんこん","れんさい","れんしゅう","れんぞく","れんらく","ろうか","ろうご","ろうじん","ろうそく","ろくが","ろこつ","ろじうら","ろしゅつ","ろせん","ろてん","ろめん","ろれつ","ろんぎ","ろんぱ","ろんぶん","ろんり","わかす","わかめ","わかやま","わかれる","わしつ","わじまし","わすれもの","わらう","われる"]},{}],54:[function(e,t,r){t.exports=["abacate","abaixo","abalar","abater","abduzir","abelha","aberto","abismo","abotoar","abranger","abreviar","abrigar","abrupto","absinto","absoluto","absurdo","abutre","acabado","acalmar","acampar","acanhar","acaso","aceitar","acelerar","acenar","acervo","acessar","acetona","achatar","acidez","acima","acionado","acirrar","aclamar","aclive","acolhida","acomodar","acoplar","acordar","acumular","acusador","adaptar","adega","adentro","adepto","adequar","aderente","adesivo","adeus","adiante","aditivo","adjetivo","adjunto","admirar","adorar","adquirir","adubo","adverso","advogado","aeronave","afastar","aferir","afetivo","afinador","afivelar","aflito","afluente","afrontar","agachar","agarrar","agasalho","agenciar","agilizar","agiota","agitado","agora","agradar","agreste","agrupar","aguardar","agulha","ajoelhar","ajudar","ajustar","alameda","alarme","alastrar","alavanca","albergue","albino","alcatra","aldeia","alecrim","alegria","alertar","alface","alfinete","algum","alheio","aliar","alicate","alienar","alinhar","aliviar","almofada","alocar","alpiste","alterar","altitude","alucinar","alugar","aluno","alusivo","alvo","amaciar","amador","amarelo","amassar","ambas","ambiente","ameixa","amenizar","amido","amistoso","amizade","amolador","amontoar","amoroso","amostra","amparar","ampliar","ampola","anagrama","analisar","anarquia","anatomia","andaime","anel","anexo","angular","animar","anjo","anomalia","anotado","ansioso","anterior","anuidade","anunciar","anzol","apagador","apalpar","apanhado","apego","apelido","apertada","apesar","apetite","apito","aplauso","aplicada","apoio","apontar","aposta","aprendiz","aprovar","aquecer","arame","aranha","arara","arcada","ardente","areia","arejar","arenito","aresta","argiloso","argola","arma","arquivo","arraial","arrebate","arriscar","arroba","arrumar","arsenal","arterial","artigo","arvoredo","asfaltar","asilado","aspirar","assador","assinar","assoalho","assunto","astral","atacado","atadura","atalho","atarefar","atear","atender","aterro","ateu","atingir","atirador","ativo","atoleiro","atracar","atrevido","atriz","atual","atum","auditor","aumentar","aura","aurora","autismo","autoria","autuar","avaliar","avante","avaria","avental","avesso","aviador","avisar","avulso","axila","azarar","azedo","azeite","azulejo","babar","babosa","bacalhau","bacharel","bacia","bagagem","baiano","bailar","baioneta","bairro","baixista","bajular","baleia","baliza","balsa","banal","bandeira","banho","banir","banquete","barato","barbado","baronesa","barraca","barulho","baseado","bastante","batata","batedor","batida","batom","batucar","baunilha","beber","beijo","beirada","beisebol","beldade","beleza","belga","beliscar","bendito","bengala","benzer","berimbau","berlinda","berro","besouro","bexiga","bezerro","bico","bicudo","bienal","bifocal","bifurcar","bigorna","bilhete","bimestre","bimotor","biologia","biombo","biosfera","bipolar","birrento","biscoito","bisneto","bispo","bissexto","bitola","bizarro","blindado","bloco","bloquear","boato","bobagem","bocado","bocejo","bochecha","boicotar","bolada","boletim","bolha","bolo","bombeiro","bonde","boneco","bonita","borbulha","borda","boreal","borracha","bovino","boxeador","branco","brasa","braveza","breu","briga","brilho","brincar","broa","brochura","bronzear","broto","bruxo","bucha","budismo","bufar","bule","buraco","busca","busto","buzina","cabana","cabelo","cabide","cabo","cabrito","cacau","cacetada","cachorro","cacique","cadastro","cadeado","cafezal","caiaque","caipira","caixote","cajado","caju","calafrio","calcular","caldeira","calibrar","calmante","calota","camada","cambista","camisa","camomila","campanha","camuflar","canavial","cancelar","caneta","canguru","canhoto","canivete","canoa","cansado","cantar","canudo","capacho","capela","capinar","capotar","capricho","captador","capuz","caracol","carbono","cardeal","careca","carimbar","carneiro","carpete","carreira","cartaz","carvalho","casaco","casca","casebre","castelo","casulo","catarata","cativar","caule","causador","cautelar","cavalo","caverna","cebola","cedilha","cegonha","celebrar","celular","cenoura","censo","centeio","cercar","cerrado","certeiro","cerveja","cetim","cevada","chacota","chaleira","chamado","chapada","charme","chatice","chave","chefe","chegada","cheiro","cheque","chicote","chifre","chinelo","chocalho","chover","chumbo","chutar","chuva","cicatriz","ciclone","cidade","cidreira","ciente","cigana","cimento","cinto","cinza","ciranda","circuito","cirurgia","citar","clareza","clero","clicar","clone","clube","coado","coagir","cobaia","cobertor","cobrar","cocada","coelho","coentro","coeso","cogumelo","coibir","coifa","coiote","colar","coleira","colher","colidir","colmeia","colono","coluna","comando","combinar","comentar","comitiva","comover","complexo","comum","concha","condor","conectar","confuso","congelar","conhecer","conjugar","consumir","contrato","convite","cooperar","copeiro","copiador","copo","coquetel","coragem","cordial","corneta","coronha","corporal","correio","cortejo","coruja","corvo","cosseno","costela","cotonete","couro","couve","covil","cozinha","cratera","cravo","creche","credor","creme","crer","crespo","criada","criminal","crioulo","crise","criticar","crosta","crua","cruzeiro","cubano","cueca","cuidado","cujo","culatra","culminar","culpar","cultura","cumprir","cunhado","cupido","curativo","curral","cursar","curto","cuspir","custear","cutelo","damasco","datar","debater","debitar","deboche","debulhar","decalque","decimal","declive","decote","decretar","dedal","dedicado","deduzir","defesa","defumar","degelo","degrau","degustar","deitado","deixar","delator","delegado","delinear","delonga","demanda","demitir","demolido","dentista","depenado","depilar","depois","depressa","depurar","deriva","derramar","desafio","desbotar","descanso","desenho","desfiado","desgaste","desigual","deslize","desmamar","desova","despesa","destaque","desviar","detalhar","detentor","detonar","detrito","deusa","dever","devido","devotado","dezena","diagrama","dialeto","didata","difuso","digitar","dilatado","diluente","diminuir","dinastia","dinheiro","diocese","direto","discreta","disfarce","disparo","disquete","dissipar","distante","ditador","diurno","diverso","divisor","divulgar","dizer","dobrador","dolorido","domador","dominado","donativo","donzela","dormente","dorsal","dosagem","dourado","doutor","drenagem","drible","drogaria","duelar","duende","dueto","duplo","duquesa","durante","duvidoso","eclodir","ecoar","ecologia","edificar","edital","educado","efeito","efetivar","ejetar","elaborar","eleger","eleitor","elenco","elevador","eliminar","elogiar","embargo","embolado","embrulho","embutido","emenda","emergir","emissor","empatia","empenho","empinado","empolgar","emprego","empurrar","emulador","encaixe","encenado","enchente","encontro","endeusar","endossar","enfaixar","enfeite","enfim","engajado","engenho","englobar","engomado","engraxar","enguia","enjoar","enlatar","enquanto","enraizar","enrolado","enrugar","ensaio","enseada","ensino","ensopado","entanto","enteado","entidade","entortar","entrada","entulho","envergar","enviado","envolver","enxame","enxerto","enxofre","enxuto","epiderme","equipar","ereto","erguido","errata","erva","ervilha","esbanjar","esbelto","escama","escola","escrita","escuta","esfinge","esfolar","esfregar","esfumado","esgrima","esmalte","espanto","espelho","espiga","esponja","espreita","espumar","esquerda","estaca","esteira","esticar","estofado","estrela","estudo","esvaziar","etanol","etiqueta","euforia","europeu","evacuar","evaporar","evasivo","eventual","evidente","evoluir","exagero","exalar","examinar","exato","exausto","excesso","excitar","exclamar","executar","exemplo","exibir","exigente","exonerar","expandir","expelir","expirar","explanar","exposto","expresso","expulsar","externo","extinto","extrato","fabricar","fabuloso","faceta","facial","fada","fadiga","faixa","falar","falta","familiar","fandango","fanfarra","fantoche","fardado","farelo","farinha","farofa","farpa","fartura","fatia","fator","favorita","faxina","fazenda","fechado","feijoada","feirante","felino","feminino","fenda","feno","fera","feriado","ferrugem","ferver","festejar","fetal","feudal","fiapo","fibrose","ficar","ficheiro","figurado","fileira","filho","filme","filtrar","firmeza","fisgada","fissura","fita","fivela","fixador","fixo","flacidez","flamingo","flanela","flechada","flora","flutuar","fluxo","focal","focinho","fofocar","fogo","foguete","foice","folgado","folheto","forjar","formiga","forno","forte","fosco","fossa","fragata","fralda","frango","frasco","fraterno","freira","frente","fretar","frieza","friso","fritura","fronha","frustrar","fruteira","fugir","fulano","fuligem","fundar","fungo","funil","furador","furioso","futebol","gabarito","gabinete","gado","gaiato","gaiola","gaivota","galega","galho","galinha","galocha","ganhar","garagem","garfo","gargalo","garimpo","garoupa","garrafa","gasoduto","gasto","gata","gatilho","gaveta","gazela","gelado","geleia","gelo","gemada","gemer","gemido","generoso","gengiva","genial","genoma","genro","geologia","gerador","germinar","gesso","gestor","ginasta","gincana","gingado","girafa","girino","glacial","glicose","global","glorioso","goela","goiaba","golfe","golpear","gordura","gorjeta","gorro","gostoso","goteira","governar","gracejo","gradual","grafite","gralha","grampo","granada","gratuito","graveto","graxa","grego","grelhar","greve","grilo","grisalho","gritaria","grosso","grotesco","grudado","grunhido","gruta","guache","guarani","guaxinim","guerrear","guiar","guincho","guisado","gula","guloso","guru","habitar","harmonia","haste","haver","hectare","herdar","heresia","hesitar","hiato","hibernar","hidratar","hiena","hino","hipismo","hipnose","hipoteca","hoje","holofote","homem","honesto","honrado","hormonal","hospedar","humorado","iate","ideia","idoso","ignorado","igreja","iguana","ileso","ilha","iludido","iluminar","ilustrar","imagem","imediato","imenso","imersivo","iminente","imitador","imortal","impacto","impedir","implante","impor","imprensa","impune","imunizar","inalador","inapto","inativo","incenso","inchar","incidir","incluir","incolor","indeciso","indireto","indutor","ineficaz","inerente","infantil","infestar","infinito","inflamar","informal","infrator","ingerir","inibido","inicial","inimigo","injetar","inocente","inodoro","inovador","inox","inquieto","inscrito","inseto","insistir","inspetor","instalar","insulto","intacto","integral","intimar","intocado","intriga","invasor","inverno","invicto","invocar","iogurte","iraniano","ironizar","irreal","irritado","isca","isento","isolado","isqueiro","italiano","janeiro","jangada","janta","jararaca","jardim","jarro","jasmim","jato","javali","jazida","jejum","joaninha","joelhada","jogador","joia","jornal","jorrar","jovem","juba","judeu","judoca","juiz","julgador","julho","jurado","jurista","juro","justa","labareda","laboral","lacre","lactante","ladrilho","lagarta","lagoa","laje","lamber","lamentar","laminar","lampejo","lanche","lapidar","lapso","laranja","lareira","largura","lasanha","lastro","lateral","latido","lavanda","lavoura","lavrador","laxante","lazer","lealdade","lebre","legado","legendar","legista","leigo","leiloar","leitura","lembrete","leme","lenhador","lentilha","leoa","lesma","leste","letivo","letreiro","levar","leveza","levitar","liberal","libido","liderar","ligar","ligeiro","limitar","limoeiro","limpador","linda","linear","linhagem","liquidez","listagem","lisura","litoral","livro","lixa","lixeira","locador","locutor","lojista","lombo","lona","longe","lontra","lorde","lotado","loteria","loucura","lousa","louvar","luar","lucidez","lucro","luneta","lustre","lutador","luva","macaco","macete","machado","macio","madeira","madrinha","magnata","magreza","maior","mais","malandro","malha","malote","maluco","mamilo","mamoeiro","mamute","manada","mancha","mandato","manequim","manhoso","manivela","manobrar","mansa","manter","manusear","mapeado","maquinar","marcador","maresia","marfim","margem","marinho","marmita","maroto","marquise","marreco","martelo","marujo","mascote","masmorra","massagem","mastigar","matagal","materno","matinal","matutar","maxilar","medalha","medida","medusa","megafone","meiga","melancia","melhor","membro","memorial","menino","menos","mensagem","mental","merecer","mergulho","mesada","mesclar","mesmo","mesquita","mestre","metade","meteoro","metragem","mexer","mexicano","micro","migalha","migrar","milagre","milenar","milhar","mimado","minerar","minhoca","ministro","minoria","miolo","mirante","mirtilo","misturar","mocidade","moderno","modular","moeda","moer","moinho","moita","moldura","moleza","molho","molinete","molusco","montanha","moqueca","morango","morcego","mordomo","morena","mosaico","mosquete","mostarda","motel","motim","moto","motriz","muda","muito","mulata","mulher","multar","mundial","munido","muralha","murcho","muscular","museu","musical","nacional","nadador","naja","namoro","narina","narrado","nascer","nativa","natureza","navalha","navegar","navio","neblina","nebuloso","negativa","negociar","negrito","nervoso","neta","neural","nevasca","nevoeiro","ninar","ninho","nitidez","nivelar","nobreza","noite","noiva","nomear","nominal","nordeste","nortear","notar","noticiar","noturno","novelo","novilho","novo","nublado","nudez","numeral","nupcial","nutrir","nuvem","obcecado","obedecer","objetivo","obrigado","obscuro","obstetra","obter","obturar","ocidente","ocioso","ocorrer","oculista","ocupado","ofegante","ofensiva","oferenda","oficina","ofuscado","ogiva","olaria","oleoso","olhar","oliveira","ombro","omelete","omisso","omitir","ondulado","oneroso","ontem","opcional","operador","oponente","oportuno","oposto","orar","orbitar","ordem","ordinal","orfanato","orgasmo","orgulho","oriental","origem","oriundo","orla","ortodoxo","orvalho","oscilar","ossada","osso","ostentar","otimismo","ousadia","outono","outubro","ouvido","ovelha","ovular","oxidar","oxigenar","pacato","paciente","pacote","pactuar","padaria","padrinho","pagar","pagode","painel","pairar","paisagem","palavra","palestra","palheta","palito","palmada","palpitar","pancada","panela","panfleto","panqueca","pantanal","papagaio","papelada","papiro","parafina","parcial","pardal","parede","partida","pasmo","passado","pastel","patamar","patente","patinar","patrono","paulada","pausar","peculiar","pedalar","pedestre","pediatra","pedra","pegada","peitoral","peixe","pele","pelicano","penca","pendurar","peneira","penhasco","pensador","pente","perceber","perfeito","pergunta","perito","permitir","perna","perplexo","persiana","pertence","peruca","pescado","pesquisa","pessoa","petiscar","piada","picado","piedade","pigmento","pilastra","pilhado","pilotar","pimenta","pincel","pinguim","pinha","pinote","pintar","pioneiro","pipoca","piquete","piranha","pires","pirueta","piscar","pistola","pitanga","pivete","planta","plaqueta","platina","plebeu","plumagem","pluvial","pneu","poda","poeira","poetisa","polegada","policiar","poluente","polvilho","pomar","pomba","ponderar","pontaria","populoso","porta","possuir","postal","pote","poupar","pouso","povoar","praia","prancha","prato","praxe","prece","predador","prefeito","premiar","prensar","preparar","presilha","pretexto","prevenir","prezar","primata","princesa","prisma","privado","processo","produto","profeta","proibido","projeto","prometer","propagar","prosa","protetor","provador","publicar","pudim","pular","pulmonar","pulseira","punhal","punir","pupilo","pureza","puxador","quadra","quantia","quarto","quase","quebrar","queda","queijo","quente","querido","quimono","quina","quiosque","rabanada","rabisco","rachar","racionar","radial","raiar","rainha","raio","raiva","rajada","ralado","ramal","ranger","ranhura","rapadura","rapel","rapidez","raposa","raquete","raridade","rasante","rascunho","rasgar","raspador","rasteira","rasurar","ratazana","ratoeira","realeza","reanimar","reaver","rebaixar","rebelde","rebolar","recado","recente","recheio","recibo","recordar","recrutar","recuar","rede","redimir","redonda","reduzida","reenvio","refinar","refletir","refogar","refresco","refugiar","regalia","regime","regra","reinado","reitor","rejeitar","relativo","remador","remendo","remorso","renovado","reparo","repelir","repleto","repolho","represa","repudiar","requerer","resenha","resfriar","resgatar","residir","resolver","respeito","ressaca","restante","resumir","retalho","reter","retirar","retomada","retratar","revelar","revisor","revolta","riacho","rica","rigidez","rigoroso","rimar","ringue","risada","risco","risonho","robalo","rochedo","rodada","rodeio","rodovia","roedor","roleta","romano","roncar","rosado","roseira","rosto","rota","roteiro","rotina","rotular","rouco","roupa","roxo","rubro","rugido","rugoso","ruivo","rumo","rupestre","russo","sabor","saciar","sacola","sacudir","sadio","safira","saga","sagrada","saibro","salada","saleiro","salgado","saliva","salpicar","salsicha","saltar","salvador","sambar","samurai","sanar","sanfona","sangue","sanidade","sapato","sarda","sargento","sarjeta","saturar","saudade","saxofone","sazonal","secar","secular","seda","sedento","sediado","sedoso","sedutor","segmento","segredo","segundo","seiva","seleto","selvagem","semanal","semente","senador","senhor","sensual","sentado","separado","sereia","seringa","serra","servo","setembro","setor","sigilo","silhueta","silicone","simetria","simpatia","simular","sinal","sincero","singular","sinopse","sintonia","sirene","siri","situado","soberano","sobra","socorro","sogro","soja","solda","soletrar","solteiro","sombrio","sonata","sondar","sonegar","sonhador","sono","soprano","soquete","sorrir","sorteio","sossego","sotaque","soterrar","sovado","sozinho","suavizar","subida","submerso","subsolo","subtrair","sucata","sucesso","suco","sudeste","sufixo","sugador","sugerir","sujeito","sulfato","sumir","suor","superior","suplicar","suposto","suprimir","surdina","surfista","surpresa","surreal","surtir","suspiro","sustento","tabela","tablete","tabuada","tacho","tagarela","talher","talo","talvez","tamanho","tamborim","tampa","tangente","tanto","tapar","tapioca","tardio","tarefa","tarja","tarraxa","tatuagem","taurino","taxativo","taxista","teatral","tecer","tecido","teclado","tedioso","teia","teimar","telefone","telhado","tempero","tenente","tensor","tentar","termal","terno","terreno","tese","tesoura","testado","teto","textura","texugo","tiara","tigela","tijolo","timbrar","timidez","tingido","tinteiro","tiragem","titular","toalha","tocha","tolerar","tolice","tomada","tomilho","tonel","tontura","topete","tora","torcido","torneio","torque","torrada","torto","tostar","touca","toupeira","toxina","trabalho","tracejar","tradutor","trafegar","trajeto","trama","trancar","trapo","traseiro","tratador","travar","treino","tremer","trepidar","trevo","triagem","tribo","triciclo","tridente","trilogia","trindade","triplo","triturar","triunfal","trocar","trombeta","trova","trunfo","truque","tubular","tucano","tudo","tulipa","tupi","turbo","turma","turquesa","tutelar","tutorial","uivar","umbigo","unha","unidade","uniforme","urologia","urso","urtiga","urubu","usado","usina","usufruir","vacina","vadiar","vagaroso","vaidoso","vala","valente","validade","valores","vantagem","vaqueiro","varanda","vareta","varrer","vascular","vasilha","vassoura","vazar","vazio","veado","vedar","vegetar","veicular","veleiro","velhice","veludo","vencedor","vendaval","venerar","ventre","verbal","verdade","vereador","vergonha","vermelho","verniz","versar","vertente","vespa","vestido","vetorial","viaduto","viagem","viajar","viatura","vibrador","videira","vidraria","viela","viga","vigente","vigiar","vigorar","vilarejo","vinco","vinheta","vinil","violeta","virada","virtude","visitar","visto","vitral","viveiro","vizinho","voador","voar","vogal","volante","voleibol","voltagem","volumoso","vontade","vulto","vuvuzela","xadrez","xarope","xeque","xeretar","xerife","xingar","zangado","zarpar","zebu","zelador","zombar","zoologia","zumbido"]},{}]},{},[50])(50);var N=void 0!==N?N:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},P=[],D=[],z="undefined"!=typeof Uint8Array?Uint8Array:Array,q=!1;function W(){q=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t>18&63]+P[i>>12&63]+P[i>>6&63]+P[63&i]);return o.join("")}function K(e){var t;q||W();for(var r=e.length,n=r%3,i="",o=[],a=16383,s=0,u=r-n;su?u:s+a));return 1===n?(t=e[r-1],i+=P[t>>2],i+=P[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=P[t>>10],i+=P[t>>4&63],i+=P[t<<2&63],i+="="),o.push(i),o.join("")}function Y(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,c=r?-1:1,d=e[t+f];for(f+=c,o=d&(1<<-l)-1,d>>=-l,l+=s;l>0;o=256*o+e[t+f],f+=c,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+f],f+=c,l-=8);if(0===o)o=1-h;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=h}return(d?-1:1)*a*Math.pow(2,o-n)}function H(e,t,r,n,i,o){var a,s,u,h=8*o-i-1,l=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+f>=1?c/u:c*Math.pow(2,1-f))*u>=2&&(a++,u/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,h-=8);e[r+d-p]|=128*g}var $={}.toString,V=Array.isArray||function(e){return"[object Array]"==$.call(e)};function G(){return X.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function J(e,t){if(G()=G())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+G().toString(16)+" bytes");return 0|e}function ne(e){return!(null==e||!e._isBuffer)}function ie(e,t){if(ne(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Oe(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Me(e).length;default:if(n)return Oe(e).length;t=(""+t).toLowerCase(),n=!0}}function oe(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return ve(this,t,r);case"utf8":case"utf-8":return ye(this,t,r);case"ascii":return be(this,t,r);case"latin1":case"binary":return me(this,t,r);case"base64":return ge(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return we(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function ae(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function se(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=X.from(t,n)),ne(t))return 0===t.length?-1:ue(e,t,r,n,i);if("number"==typeof t)return t&=255,X.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):ue(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function ue(e,t,r,n,i){var o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var l=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){for(var f=!0,c=0;ci&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function ge(e,t,r){return 0===t&&r===e.length?K(e):K(e.slice(t,r))}function ye(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:h>223?3:h>191?2:1;if(i+f<=r)switch(f){case 1:h<128&&(l=h);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&h)<<6|63&o)>127&&(l=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(u=(15&h)<<12|(63&o)<<6|63&a)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(u=(15&h)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),""},X.prototype.compare=function(e,t,r,n,i){if(!ne(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(n,i),h=e.slice(t,r),l=0;li)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return he(this,e,t,r);case"utf8":case"utf-8":return le(this,e,t,r);case"ascii":return fe(this,e,t,r);case"latin1":case"binary":return ce(this,e,t,r);case"base64":return de(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return pe(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},X.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function be(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function Ee(e,t,r,n,i,o){if(!ne(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function Se(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function ke(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function xe(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Re(e,t,r,n,i){return i||xe(e,0,r,4),H(e,t,r,n,23,4),r+4}function Ae(e,t,r,n,i){return i||xe(e,0,r,8),H(e,t,r,n,52,8),r+8}X.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},X.prototype.readUInt8=function(e,t){return t||_e(e,1,this.length),this[e]},X.prototype.readUInt16LE=function(e,t){return t||_e(e,2,this.length),this[e]|this[e+1]<<8},X.prototype.readUInt16BE=function(e,t){return t||_e(e,2,this.length),this[e]<<8|this[e+1]},X.prototype.readUInt32LE=function(e,t){return t||_e(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},X.prototype.readUInt32BE=function(e,t){return t||_e(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},X.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||_e(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},X.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||_e(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},X.prototype.readInt8=function(e,t){return t||_e(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},X.prototype.readInt16LE=function(e,t){t||_e(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},X.prototype.readInt16BE=function(e,t){t||_e(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},X.prototype.readInt32LE=function(e,t){return t||_e(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},X.prototype.readInt32BE=function(e,t){return t||_e(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},X.prototype.readFloatLE=function(e,t){return t||_e(e,4,this.length),Y(this,e,!0,23,4)},X.prototype.readFloatBE=function(e,t){return t||_e(e,4,this.length),Y(this,e,!1,23,4)},X.prototype.readDoubleLE=function(e,t){return t||_e(e,8,this.length),Y(this,e,!0,52,8)},X.prototype.readDoubleBE=function(e,t){return t||_e(e,8,this.length),Y(this,e,!1,52,8)},X.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||Ee(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},X.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,1,255,0),X.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},X.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,2,65535,0),X.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Se(this,e,t,!0),t+2},X.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,2,65535,0),X.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Se(this,e,t,!1),t+2},X.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,4,4294967295,0),X.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):ke(this,e,t,!0),t+4},X.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,4,4294967295,0),X.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):ke(this,e,t,!1),t+4},X.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);Ee(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},X.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);Ee(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},X.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,1,127,-128),X.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},X.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,2,32767,-32768),X.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Se(this,e,t,!0),t+2},X.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,2,32767,-32768),X.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Se(this,e,t,!1),t+2},X.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,4,2147483647,-2147483648),X.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):ke(this,e,t,!0),t+4},X.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||Ee(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),X.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):ke(this,e,t,!1),t+4},X.prototype.writeFloatLE=function(e,t,r){return Re(this,e,t,!0,r)},X.prototype.writeFloatBE=function(e,t,r){return Re(this,e,t,!1,r)},X.prototype.writeDoubleLE=function(e,t,r){return Ae(this,e,t,!0,r)},X.prototype.writeDoubleBE=function(e,t,r){return Ae(this,e,t,!1,r)},X.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!X.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Me(e){return function(e){var t,r,n,i,o,a;q||W();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");o="="===e[s-2]?2:"="===e[s-1]?1:0,a=new z(3*s/4-o),n=o>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=D[e.charCodeAt(t)]<<2|D[e.charCodeAt(t+1)]>>4,a[u++]=255&i):1===o&&(i=D[e.charCodeAt(t)]<<10|D[e.charCodeAt(t+1)]<<4|D[e.charCodeAt(t+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(Te,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Le(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function je(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var Ue={},Ie={exports:{}};"function"==typeof Object.create?Ie.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:Ie.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e};for(var Ce={exports:{}},Ne={},Pe={byteLength:function(e){var t=Ye(e),r=t[0],n=t[1];return 3*(r+n)/4-n},toByteArray:function(e){var t,r,n=Ye(e),i=n[0],o=n[1],a=new qe(function(e,t,r){return 3*(t+r)/4-r}(0,i,o)),s=0,u=o>0?i-4:i;for(r=0;r>16&255,a[s++]=t>>8&255,a[s++]=255&t;2===o&&(t=ze[e.charCodeAt(r)]<<2|ze[e.charCodeAt(r+1)]>>4,a[s++]=255&t);1===o&&(t=ze[e.charCodeAt(r)]<<10|ze[e.charCodeAt(r+1)]<<4|ze[e.charCodeAt(r+2)]>>2,a[s++]=t>>8&255,a[s++]=255&t);return a},fromByteArray:function(e){for(var t,r=e.length,n=r%3,i=[],o=16383,a=0,s=r-n;as?s:a+o));1===n?(t=e[r-1],i.push(De[t>>2]+De[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(De[t>>10]+De[t>>4&63]+De[t<<2&63]+"="));return i.join("")}},De=[],ze=[],qe="undefined"!=typeof Uint8Array?Uint8Array:Array,We="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Fe=0,Ke=We.length;Fe0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function He(e,t,r){for(var n,i,o=[],a=t;a>18&63]+De[i>>12&63]+De[i>>6&63]+De[63&i]);return o.join("")}ze["-".charCodeAt(0)]=62,ze["_".charCodeAt(0)]=63;var $e={}; +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */function Ve(){}function Ge(){Ge.init.call(this)}function Je(e){return void 0===e._maxListeners?Ge.defaultMaxListeners:e._maxListeners}function Xe(e,t,r){if(t)e.call(r);else for(var n=e.length,i=ot(e,n),o=0;o0&&a.length>i){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=a.length,s=u,"function"==typeof console.warn?console.warn(s):console.log(s)}}else a=o[t]=r,++e._eventsCount;return e}function nt(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function it(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function ot(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}$e.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,c=r?-1:1,d=e[t+f];for(f+=c,o=d&(1<<-l)-1,d>>=-l,l+=s;l>0;o=256*o+e[t+f],f+=c,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+f],f+=c,l-=8);if(0===o)o=1-h;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=h}return(d?-1:1)*a*Math.pow(2,o-n)},$e.write=function(e,t,r,n,i,o){var a,s,u,h=8*o-i-1,l=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+f>=1?c/u:c*Math.pow(2,1-f))*u>=2&&(a++,u/=2),a+f>=l?(s=0,a=l):a+f>=1?(s=(t*u-1)*Math.pow(2,i),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,h-=8);e[r+d-p]|=128*g}, /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ - -(function (exports) { - -const base64 = base64Js; -const ieee754$1 = ieee754; -const customInspectSymbol = - (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation - ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation - : null; - -exports.Buffer = Buffer; -exports.SlowBuffer = SlowBuffer; -exports.INSPECT_MAX_BYTES = 50; - -const K_MAX_LENGTH = 0x7fffffff; -exports.kMaxLength = K_MAX_LENGTH; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ); -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - const arr = new Uint8Array(1); - const proto = { foo: function () { return 42 } }; - Object.setPrototypeOf(proto, Uint8Array.prototype); - Object.setPrototypeOf(arr, proto); - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}); - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}); - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - const buf = new Uint8Array(length); - Object.setPrototypeOf(buf, Buffer.prototype); - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192; // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayView(value) - } - - if (value == null) { - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof SharedArrayBuffer !== 'undefined' && - (isInstance(value, SharedArrayBuffer) || - (value && isInstance(value.buffer, SharedArrayBuffer)))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - const valueOf = value.valueOf && value.valueOf(); - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - const b = fromObject(value); - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -}; - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); -Object.setPrototypeOf(Buffer, Uint8Array); - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpreted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -}; - -function allocUnsafe (size) { - assertSize(size); - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -}; - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - const length = byteLength(string, encoding) | 0; - let buf = createBuffer(length); - - const actual = buf.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual); - } - - return buf -} - -function fromArrayLike (array) { - const length = array.length < 0 ? 0 : checked(array.length) | 0; - const buf = createBuffer(length); - for (let i = 0; i < length; i += 1) { - buf[i] = array[i] & 255; - } - return buf -} - -function fromArrayView (arrayView) { - if (isInstance(arrayView, Uint8Array)) { - const copy = new Uint8Array(arrayView); - return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) - } - return fromArrayLike(arrayView) -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - let buf; - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array); - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset); - } else { - buf = new Uint8Array(array, byteOffset, length); - } - - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(buf, Buffer.prototype); - - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - const len = checked(obj.length) | 0; - const buf = createBuffer(len); - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len); - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0; - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -}; - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - let x = a.length; - let y = b.length; - - for (let i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - let i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - const buffer = Buffer.allocUnsafe(length); - let pos = 0; - for (i = 0; i < list.length; ++i) { - let buf = list[i]; - if (isInstance(buf, Uint8Array)) { - if (pos + buf.length > buffer.length) { - if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); - buf.copy(buffer, pos); - } else { - Uint8Array.prototype.set.call( - buffer, - buf, - pos - ); - } - } else if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } else { - buf.copy(buffer, pos); - } - pos += buf.length; - } - return buffer -}; - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - const len = string.length; - const mustMatch = (arguments.length > 2 && arguments[2] === true); - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - let loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer.byteLength = byteLength; - -function slowToString (encoding, start, end) { - let loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coercion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true; - -function swap (b, n, m) { - const i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16 () { - const len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (let i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer.prototype.swap32 = function swap32 () { - const len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (let i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer.prototype.swap64 = function swap64 () { - const len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (let i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer.prototype.toString = function toString () { - const length = this.length; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer.prototype.toLocaleString = Buffer.prototype.toString; - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -}; - -Buffer.prototype.inspect = function inspect () { - let str = ''; - const max = exports.INSPECT_MAX_BYTES; - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); - if (this.length > max) str += ' ... '; - return '' -}; -if (customInspectSymbol) { - Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength); - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - let x = thisEnd - thisStart; - let y = end - start; - const len = Math.min(x, y); - - const thisCopy = this.slice(thisStart, thisEnd); - const targetCopy = target.slice(start, end); - - for (let i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - let indexSize = 1; - let arrLength = arr.length; - let valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - let i; - if (dir) { - let foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - let found = true; - for (let j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - const remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - const strLen = string.length; - - if (length > strLen / 2) { - length = strLen / 2; - } - let i; - for (i = 0; i < length; ++i) { - const parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0; - if (isFinite(length)) { - length = length >>> 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - const remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - let loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - case 'latin1': - case 'binary': - return asciiWrite(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - const res = []; - - let i = start; - while (i < end) { - const firstByte = buf[i]; - let codePoint = null; - let bytesPerSequence = (firstByte > 0xEF) - ? 4 - : (firstByte > 0xDF) - ? 3 - : (firstByte > 0xBF) - ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - let secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -const MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - const len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - let res = ''; - let i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - let ret = ''; - end = Math.min(buf.length, end); - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - let ret = ''; - end = Math.min(buf.length, end); - - for (let i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - const len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - let out = ''; - for (let i = start; i < end; ++i) { - out += hexSliceLookupTable[buf[i]]; - } - return out -} - -function utf16leSlice (buf, start, end) { - const bytes = buf.slice(start, end); - let res = ''; - // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) - for (let i = 0; i < bytes.length - 1; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - const len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - const newBuf = this.subarray(start, end); - // Return an augmented `Uint8Array` instance - Object.setPrototypeOf(newBuf, Buffer.prototype); - - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUintLE = -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer.prototype.readUintBE = -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - let val = this[offset + --byteLength]; - let mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer.prototype.readUint8 = -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer.prototype.readUint16LE = -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer.prototype.readUint16BE = -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer.prototype.readUint32LE = -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer.prototype.readUint32BE = -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const lo = first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24; - - const hi = this[++offset] + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - last * 2 ** 24; - - return BigInt(lo) + (BigInt(hi) << BigInt(32)) -}); - -Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const hi = first * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset]; - - const lo = this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last; - - return (BigInt(hi) << BigInt(32)) + BigInt(lo) -}); - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let val = this[offset]; - let mul = 1; - let i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - let i = byteLength; - let mul = 1; - let val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - const val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 2, this.length); - const val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const val = this[offset + 4] + - this[offset + 5] * 2 ** 8 + - this[offset + 6] * 2 ** 16 + - (last << 24); // Overflow - - return (BigInt(val) << BigInt(32)) + - BigInt(first + - this[++offset] * 2 ** 8 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 24) -}); - -Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { - offset = offset >>> 0; - validateNumber(offset, 'offset'); - const first = this[offset]; - const last = this[offset + 7]; - if (first === undefined || last === undefined) { - boundsError(offset, this.length - 8); - } - - const val = (first << 24) + // Overflow - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - this[++offset]; - - return (BigInt(val) << BigInt(32)) + - BigInt(this[++offset] * 2 ** 24 + - this[++offset] * 2 ** 16 + - this[++offset] * 2 ** 8 + - last) -}); - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754$1.read(this, offset, true, 23, 4) -}; - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 4, this.length); - return ieee754$1.read(this, offset, false, 23, 4) -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754$1.read(this, offset, true, 52, 8) -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0; - if (!noAssert) checkOffset(offset, 8, this.length); - return ieee754$1.read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUintLE = -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - let mul = 1; - let i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUintBE = -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - byteLength = byteLength >>> 0; - if (!noAssert) { - const maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - let i = byteLength - 1; - let mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUint8 = -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeUint16LE = -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeUint16BE = -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeUint32LE = -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeUint32BE = -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -function wrtBigUInt64LE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - - let lo = Number(value & BigInt(0xffffffff)); - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - lo = lo >> 8; - buf[offset++] = lo; - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - hi = hi >> 8; - buf[offset++] = hi; - return offset -} - -function wrtBigUInt64BE (buf, value, offset, min, max) { - checkIntBI(value, min, max, buf, offset, 7); - - let lo = Number(value & BigInt(0xffffffff)); - buf[offset + 7] = lo; - lo = lo >> 8; - buf[offset + 6] = lo; - lo = lo >> 8; - buf[offset + 5] = lo; - lo = lo >> 8; - buf[offset + 4] = lo; - let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); - buf[offset + 3] = hi; - hi = hi >> 8; - buf[offset + 2] = hi; - hi = hi >> 8; - buf[offset + 1] = hi; - hi = hi >> 8; - buf[offset] = hi; - return offset + 8 -} - -Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}); - -Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) -}); - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - let i = 0; - let mul = 1; - let sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - const limit = Math.pow(2, (8 * byteLength) - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - let i = byteLength - 1; - let mul = 1; - let sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - return offset + 2 -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - return offset + 2 -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - return offset + 4 -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - return offset + 4 -}; - -Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { - return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}); - -Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { - return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) -}); - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - ieee754$1.write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value; - offset = offset >>> 0; - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - ieee754$1.write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - const len = end - start; - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end); - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - const code = val.charCodeAt(0); - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code; - } - } - } else if (typeof val === 'number') { - val = val & 255; - } else if (typeof val === 'boolean') { - val = Number(val); - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - let i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - const bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding); - const len = bytes.length; - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// CUSTOM ERRORS -// ============= - -// Simplified versions from Node, changed for Buffer-only usage -const errors = {}; -function E (sym, getMessage, Base) { - errors[sym] = class NodeError extends Base { - constructor () { - super(); - - Object.defineProperty(this, 'message', { - value: getMessage.apply(this, arguments), - writable: true, - configurable: true - }); - - // Add the error code to the name to include it in the stack trace. - this.name = `${this.name} [${sym}]`; - // Access the stack to generate the error message including the error code - // from the name. - this.stack; // eslint-disable-line no-unused-expressions - // Reset the name to the actual name. - delete this.name; - } - - get code () { - return sym - } - - set code (value) { - Object.defineProperty(this, 'code', { - configurable: true, - enumerable: true, - value, - writable: true - }); - } - - toString () { - return `${this.name} [${sym}]: ${this.message}` - } - }; -} - -E('ERR_BUFFER_OUT_OF_BOUNDS', - function (name) { - if (name) { - return `${name} is outside of buffer bounds` - } - - return 'Attempt to access memory outside buffer bounds' - }, RangeError); -E('ERR_INVALID_ARG_TYPE', - function (name, actual) { - return `The "${name}" argument must be of type number. Received type ${typeof actual}` - }, TypeError); -E('ERR_OUT_OF_RANGE', - function (str, range, input) { - let msg = `The value of "${str}" is out of range.`; - let received = input; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === 'bigint') { - received = String(input); - if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { - received = addNumericalSeparator(received); - } - received += 'n'; - } - msg += ` It must be ${range}. Received ${received}`; - return msg - }, RangeError); - -function addNumericalSeparator (val) { - let res = ''; - let i = val.length; - const start = val[0] === '-' ? 1 : 0; - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}`; - } - return `${val.slice(0, i)}${res}` -} - -// CHECK FUNCTIONS -// =============== - -function checkBounds (buf, offset, byteLength) { - validateNumber(offset, 'offset'); - if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { - boundsError(offset, buf.length - (byteLength + 1)); - } -} - -function checkIntBI (value, min, max, buf, offset, byteLength) { - if (value > max || value < min) { - const n = typeof min === 'bigint' ? 'n' : ''; - let range; - if (byteLength > 3) { - if (min === 0 || min === BigInt(0)) { - range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`; - } else { - range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + - `${(byteLength + 1) * 8 - 1}${n}`; - } - } else { - range = `>= ${min}${n} and <= ${max}${n}`; - } - throw new errors.ERR_OUT_OF_RANGE('value', range, value) - } - checkBounds(buf, offset, byteLength); -} - -function validateNumber (value, name) { - if (typeof value !== 'number') { - throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value) - } -} - -function boundsError (value, length, type) { - if (Math.floor(value) !== value) { - validateNumber(value, type); - throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value) - } - - if (length < 0) { - throw new errors.ERR_BUFFER_OUT_OF_BOUNDS() - } - - throw new errors.ERR_OUT_OF_RANGE(type || 'offset', - `>= ${type ? 1 : 0} and <= ${length}`, - value) -} - -// HELPER FUNCTIONS -// ================ - -const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0]; - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - let codePoint; - const length = string.length; - let leadSurrogate = null; - const bytes = []; - - for (let i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - let c, hi, lo; - const byteArray = []; - for (let i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - let i; - for (i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -// Create lookup table for `toString('hex')` -// See: https://github.com/feross/buffer/issues/219 -const hexSliceLookupTable = (function () { - const alphabet = '0123456789abcdef'; - const table = new Array(256); - for (let i = 0; i < 16; ++i) { - const i16 = i * 16; - for (let j = 0; j < 16; ++j) { - table[i16 + j] = alphabet[i] + alphabet[j]; - } - } - return table -})(); - -// Return not function with Error if BigInt not supported -function defineBigIntMethod (fn) { - return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn -} - -function BufferBigIntNotDefined () { - throw new Error('BigInt not supported') -} -}(buffer)); - -/* eslint-disable node/no-deprecated-api */ - -(function (module, exports) { -var buffer$1 = buffer; -var Buffer = buffer$1.Buffer; - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer$1; -} else { - // Copy properties from require('buffer') - copyProps(buffer$1, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size); - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer$1.SlowBuffer(size) -}; -}(safeBuffer$1, safeBuffer$1.exports)); - -var domain; - -// This constructor is used to store event handlers. Instantiating this is -// faster than explicitly calling `Object.create(null)` to get a "clean" empty -// object (tested with v8 v4.9). -function EventHandlers() {} -EventHandlers.prototype = Object.create(null); - -function EventEmitter$1() { - EventEmitter$1.init.call(this); -} - -// nodejs oddity -// require('events') === require('events').EventEmitter -EventEmitter$1.EventEmitter = EventEmitter$1; - -EventEmitter$1.usingDomains = false; - -EventEmitter$1.prototype.domain = undefined; -EventEmitter$1.prototype._events = undefined; -EventEmitter$1.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter$1.defaultMaxListeners = 10; - -EventEmitter$1.init = function() { - this.domain = null; - if (EventEmitter$1.usingDomains) { - // if there is an active domain, then attach to it. - if (domain.active ) ; - } - - if (!this._events || this._events === Object.getPrototypeOf(this)._events) { - this._events = new EventHandlers(); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter$1.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || isNaN(n)) - throw new TypeError('"n" argument must be a positive number'); - this._maxListeners = n; - return this; -}; - -function $getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter$1.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter$1.prototype.getMaxListeners = function getMaxListeners() { - return $getMaxListeners(this); -}; - -// These standalone emit* functions are used to optimize calling of event -// handlers for fast cases because emit() itself often has a variable number of -// arguments and can be deoptimized because of that. These functions always have -// the same number of arguments and thus do not get deoptimized, so the code -// inside them can execute faster. -function emitNone(handler, isFn, self) { - if (isFn) - handler.call(self); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self); - } -} -function emitOne(handler, isFn, self, arg1) { - if (isFn) - handler.call(self, arg1); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1); - } -} -function emitTwo(handler, isFn, self, arg1, arg2) { - if (isFn) - handler.call(self, arg1, arg2); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2); - } -} -function emitThree(handler, isFn, self, arg1, arg2, arg3) { - if (isFn) - handler.call(self, arg1, arg2, arg3); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2, arg3); - } -} - -function emitMany(handler, isFn, self, args) { - if (isFn) - handler.apply(self, args); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].apply(self, args); - } -} - -EventEmitter$1.prototype.emit = function emit(type) { - var er, handler, len, args, i, events, domain; - var doError = (type === 'error'); - - events = this._events; - if (events) - doError = (doError && events.error == null); - else if (!doError) - return false; - - domain = this.domain; - - // If there is no 'error' event listener then throw. - if (doError) { - er = arguments[1]; - if (domain) { - if (!er) - er = new Error('Uncaught, unspecified "error" event'); - er.domainEmitter = this; - er.domain = domain; - er.domainThrown = false; - domain.emit('error', er); - } else if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - return false; - } - - handler = events[type]; - - if (!handler) - return false; - - var isFn = typeof handler === 'function'; - len = arguments.length; - switch (len) { - // fast cases - case 1: - emitNone(handler, isFn, this); - break; - case 2: - emitOne(handler, isFn, this, arguments[1]); - break; - case 3: - emitTwo(handler, isFn, this, arguments[1], arguments[2]); - break; - case 4: - emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); - break; - // slower - default: - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - emitMany(handler, isFn, this, args); - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = target._events; - if (!events) { - events = target._events = new EventHandlers(); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (!existing) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = prepend ? [listener, existing] : - [existing, listener]; - } else { - // If we've already got an array, just append. - if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - } - - // Check for listener leak - if (!existing.warned) { - m = $getMaxListeners(target); - if (m && m > 0 && existing.length > m) { - existing.warned = true; - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + type + ' listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - emitWarning(w); - } - } - } - - return target; -} -function emitWarning(e) { - typeof console.warn === 'function' ? console.warn(e) : console.log(e); -} -EventEmitter$1.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter$1.prototype.on = EventEmitter$1.prototype.addListener; - -EventEmitter$1.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - -function _onceWrap(target, type, listener) { - var fired = false; - function g() { - target.removeListener(type, g); - if (!fired) { - fired = true; - listener.apply(target, arguments); - } - } - g.listener = listener; - return g; -} - -EventEmitter$1.prototype.once = function once(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter$1.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter$1.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = this._events; - if (!events) - return this; - - list = events[type]; - if (!list) - return this; - - if (list === listener || (list.listener && list.listener === listener)) { - if (--this._eventsCount === 0) - this._events = new EventHandlers(); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list[0] = undefined; - if (--this._eventsCount === 0) { - this._events = new EventHandlers(); - return this; - } else { - delete events[type]; - } - } else { - spliceOne(list, position); - } - - if (events.removeListener) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - -// Alias for removeListener added in NodeJS 10.0 -// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener -EventEmitter$1.prototype.off = function(type, listener){ - return this.removeListener(type, listener); -}; - -EventEmitter$1.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events; - - events = this._events; - if (!events) - return this; - - // not listening for removeListener, no need to emit - if (!events.removeListener) { - if (arguments.length === 0) { - this._events = new EventHandlers(); - this._eventsCount = 0; - } else if (events[type]) { - if (--this._eventsCount === 0) - this._events = new EventHandlers(); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - for (var i = 0, key; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = new EventHandlers(); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - do { - this.removeListener(type, listeners[listeners.length - 1]); - } while (listeners[0]); - } - - return this; - }; - -EventEmitter$1.prototype.listeners = function listeners(type) { - var evlistener; - var ret; - var events = this._events; - - if (!events) - ret = []; - else { - evlistener = events[type]; - if (!evlistener) - ret = []; - else if (typeof evlistener === 'function') - ret = [evlistener.listener || evlistener]; - else - ret = unwrapListeners(evlistener); - } - - return ret; -}; - -EventEmitter$1.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount$1.call(emitter, type); - } -}; - -EventEmitter$1.prototype.listenerCount = listenerCount$1; -function listenerCount$1(type) { - var events = this._events; - - if (events) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter$1.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; -}; - -// About 1.5x faster than the two-arg version of Array#splice(). -function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) - list[i] = list[k]; - list.pop(); -} - -function arrayClone(arr, i) { - var copy = new Array(i); - while (i--) - copy[i] = arr[i]; - return copy; -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; -} - -var _polyfillNode_events = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': EventEmitter$1, - EventEmitter: EventEmitter$1 -}); - -// shim for using process in browser -// based off https://github.com/defunctzombie/node-process/blob/master/browser.js - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -var cachedSetTimeout = defaultSetTimout; -var cachedClearTimeout = defaultClearTimeout; -if (typeof global$1.setTimeout === 'function') { - cachedSetTimeout = setTimeout; -} -if (typeof global$1.clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; -} - -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} -function nextTick(fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -} -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -var title = 'browser'; -var platform = 'browser'; -var browser$3 = true; -var env = {}; -var argv = []; -var version = ''; // empty string to avoid regexp issues -var versions = {}; -var release = {}; -var config$1 = {}; - -function noop$2() {} - -var on = noop$2; -var addListener = noop$2; -var once$2 = noop$2; -var off = noop$2; -var removeListener = noop$2; -var removeAllListeners = noop$2; -var emit = noop$2; - -function binding(name) { - throw new Error('process.binding is not supported'); -} - -function cwd () { return '/' } -function chdir (dir) { - throw new Error('process.chdir is not supported'); -}function umask() { return 0; } - -// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js -var performance = global$1.performance || {}; -var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime() }; - -// generate timestamp or delta -// see http://nodejs.org/api/process.html#process_process_hrtime -function hrtime(previousTimestamp){ - var clocktime = performanceNow.call(performance)*1e-3; - var seconds = Math.floor(clocktime); - var nanoseconds = Math.floor((clocktime%1)*1e9); - if (previousTimestamp) { - seconds = seconds - previousTimestamp[0]; - nanoseconds = nanoseconds - previousTimestamp[1]; - if (nanoseconds<0) { - seconds--; - nanoseconds += 1e9; - } - } - return [seconds,nanoseconds] -} - -var startTime = new Date(); -function uptime() { - var currentTime = new Date(); - var dif = currentTime - startTime; - return dif / 1000; -} - -var browser$1$1 = { - nextTick: nextTick, - title: title, - browser: browser$3, - env: env, - argv: argv, - version: version, - versions: versions, - on: on, - addListener: addListener, - once: once$2, - off: off, - removeListener: removeListener, - removeAllListeners: removeAllListeners, - emit: emit, - binding: binding, - cwd: cwd, - chdir: chdir, - umask: umask, - hrtime: hrtime, - platform: platform, - release: release, - config: config$1, - uptime: uptime -}; - -var process = browser$1$1; - -var util = {}; - -var isBufferBrowser = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -}; - -(function (exports) { -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(commonjsGlobal.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var length = output.reduce(function(prev, cur) { - if (cur.indexOf('\n') >= 0) ; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = isBufferBrowser; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = inherits_browser$1.exports; - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} -}(util)); - -function BufferList$1() { - this.head = null; - this.tail = null; - this.length = 0; -} - -BufferList$1.prototype.push = function (v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; -}; - -BufferList$1.prototype.unshift = function (v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; -}; - -BufferList$1.prototype.shift = function () { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; -}; - -BufferList$1.prototype.clear = function () { - this.head = this.tail = null; - this.length = 0; -}; - -BufferList$1.prototype.join = function (s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; -}; - -BufferList$1.prototype.concat = function (n) { - if (this.length === 0) return buffer.Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = buffer.Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - p.data.copy(ret, i); - i += p.data.length; - p = p.next; - } - return ret; -}; - -var string_decoder = {}; - -/**/ - -var Buffer$h = safeBuffer$1.exports.Buffer; -/**/ - -var isEncoding = Buffer$h.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; - -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -} -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer$h.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -var StringDecoder_1 = string_decoder.StringDecoder = StringDecoder$2; -function StringDecoder$2(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer$h.allocUnsafe(nb); -} - -StringDecoder$2.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder$2.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder$2.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder$2.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; - -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - 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; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; -} - -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} - -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} - -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); -} - -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; -} - -Readable$2.ReadableState = ReadableState$1; - -var debug$1 = util.debuglog('stream'); -util.inherits(Readable$2, EventEmitter$1); - -function prependListener$1(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') { - return emitter.prependListener(event, fn); - } else { - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - 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]]; - } -} -function listenerCount (emitter, type) { - return emitter.listeners(type).length; -} -function ReadableState$1(options, stream) { - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex$4) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList$1(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - this.decoder = new StringDecoder_1(options.encoding); - this.encoding = options.encoding; - } -} -function Readable$2(options) { - - if (!(this instanceof Readable$2)) return new Readable$2(options); - - this._readableState = new ReadableState$1(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') this._read = options.read; - - EventEmitter$1.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable$2.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer$i.from(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk$1(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable$2.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk$1(this, state, chunk, '', true); -}; - -Readable$2.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -function readableAddChunk$1(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid$1(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk$1(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } - - if (!addToFront) state.reading = false; - - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable$1(stream); - } - } - - maybeReadMore$1(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -// backwards compatibility. -Readable$2.prototype.setEncoding = function (enc) { - this._readableState.decoder = new StringDecoder_1(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM$1 = 0x800000; -function computeNewHighWaterMark$1(n) { - if (n >= MAX_HWM$1) { - n = MAX_HWM$1; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead$1(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark$1(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; -} - -// you can override either this method, or the async _read(n) below. -Readable$2.prototype.read = function (n) { - debug$1('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug$1('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable$1(this);else emitReadable$1(this); - return null; - } - - n = howMuchToRead$1(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable$1(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug$1('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug$1('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug$1('reading or ended', doRead); - } else if (doRead) { - debug$1('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead$1(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList$1(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable$1(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function chunkInvalid$1(state, chunk) { - var er = null; - if (!Buffer$i.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -function onEofChunk$1(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable$1(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable$1(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug$1('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) nextTick(emitReadable_$1, stream);else emitReadable_$1(stream); - } -} - -function emitReadable_$1(stream) { - debug$1('emit readable'); - stream.emit('readable'); - flow$1(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore$1(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - nextTick(maybeReadMore_$1, stream, state); - } -} - -function maybeReadMore_$1(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug$1('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable$2.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; - -Readable$2.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug$1('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false); - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) nextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug$1('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug$1('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain$1(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug$1('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug$1('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf$1(state.pipes, dest) !== -1) && !cleanedUp) { - debug$1('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug$1('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (listenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener$1(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug$1('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug$1('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug$1('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain$1(src) { - return function () { - var state = src._readableState; - debug$1('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && src.listeners('data').length) { - state.flowing = true; - flow$1(src); - } - }; -} - -Readable$2.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } - - // try to find the right one. - var i = indexOf$1(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable$2.prototype.on = function (ev, fn) { - var res = EventEmitter$1.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - nextTick(nReadingNextTick$1, this); - } else if (state.length) { - emitReadable$1(this); - } - } - } - - return res; -}; -Readable$2.prototype.addListener = Readable$2.prototype.on; - -function nReadingNextTick$1(self) { - debug$1('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable$2.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug$1('resume'); - state.flowing = true; - resume$1(this, state); - } - return this; -}; - -function resume$1(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - nextTick(resume_$1, stream, state); - } -} - -function resume_$1(stream, state) { - if (!state.reading) { - debug$1('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow$1(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable$2.prototype.pause = function () { - debug$1('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug$1('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow$1(stream) { - var state = stream._readableState; - debug$1('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable$2.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function () { - debug$1('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function (chunk) { - debug$1('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug$1('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - -// exposed for testing purposes only. -Readable$2._fromList = fromList$1; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList$1(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - 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); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer$i.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -function endReadable$1(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - nextTick(endReadableNT$1, state, stream); - } -} - -function endReadableNT$1(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf$1(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} - -// A bit simpler than readable streams. -Writable$2.WritableState = WritableState$1; -util.inherits(Writable$2, EventEmitter$1); - -function nop$1() {} - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -function WritableState$1(options, stream) { - Object.defineProperty(this, 'buffer', { - get: util.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex$4) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite$1(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest$1(this); -} - -WritableState$1.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; -function Writable$2(options) { - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable$2) && !(this instanceof Duplex$4)) return new Writable$2(options); - - this._writableState = new WritableState$1(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - } - - EventEmitter$1.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable$2.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd$1(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - nextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk$1(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!buffer.Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - nextTick(cb, er); - valid = false; - } - return valid; -} - -Writable$2.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (buffer.Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop$1; - - if (state.ended) writeAfterEnd$1(this, cb);else if (validChunk$1(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer$1(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable$2.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable$2.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer$1(this, state); - } -}; - -Writable$2.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - 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); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk$1(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = buffer.Buffer.from(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer$1(stream, state, chunk, encoding, cb) { - chunk = decodeChunk$1(state, chunk, encoding); - - if (buffer.Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite$1(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite$1(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError$1(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) nextTick(cb, er);else cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate$1(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite$1(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate$1(state); - - if (er) onwriteError$1(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish$1(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer$1(stream, state); - } - - if (sync) { - /**/ - nextTick(afterWrite$1, stream, state, finished, cb); - /**/ - } else { - afterWrite$1(stream, state, finished, cb); - } - } -} - -function afterWrite$1(stream, state, finished, cb) { - if (!finished) onwriteDrain$1(stream, state); - state.pendingcb--; - cb(); - finishMaybe$1(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain$1(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer$1(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } - - doWrite$1(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest$1(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite$1(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable$2.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable$2.prototype._writev = null; - -Writable$2.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable$1(this, state, cb); -}; - -function needFinish$1(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function prefinish$2(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe$1(stream, state) { - var need = needFinish$1(state); - if (need) { - if (state.pendingcb === 0) { - prefinish$2(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish$2(stream, state); - } - } - return need; -} - -function endWritable$1(stream, state, cb) { - state.ending = true; - finishMaybe$1(stream, state); - if (cb) { - if (state.finished) nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest$1(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} - -util.inherits(Duplex$4, Readable$2); - -var keys$1 = Object.keys(Writable$2.prototype); -for (var v$1 = 0; v$1 < keys$1.length; v$1++) { - var method$1 = keys$1[v$1]; - if (!Duplex$4.prototype[method$1]) Duplex$4.prototype[method$1] = Writable$2.prototype[method$1]; -} -function Duplex$4(options) { - if (!(this instanceof Duplex$4)) return new Duplex$4(options); - - Readable$2.call(this, options); - Writable$2.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend$1); -} - -// the no-half-open enforcer -function onend$1() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - nextTick(onEndNT$1, this); -} - -function onEndNT$1(self) { - self.end(); -} - -// a transform stream is a readable/writable stream where you do -util.inherits(Transform$4, Duplex$4); - -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform$1(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} - -function afterTransform$1(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) stream.push(data); - - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} -function Transform$4(options) { - if (!(this instanceof Transform$4)) return new Transform$4(options); - - Duplex$4.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done$1(stream, er); - });else done$1(stream); - }); -} - -Transform$4.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex$4.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform$4.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; - -Transform$4.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform$4.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -function done$1(stream, er) { - if (er) return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); - - if (ts.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); -} - -util.inherits(PassThrough$1, Transform$4); -function PassThrough$1(options) { - if (!(this instanceof PassThrough$1)) return new PassThrough$1(options); - - Transform$4.call(this, options); -} - -PassThrough$1.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; - -util.inherits(Stream$2, EventEmitter$1); -Stream$2.Readable = Readable$2; -Stream$2.Writable = Writable$2; -Stream$2.Duplex = Duplex$4; -Stream$2.Transform = Transform$4; -Stream$2.PassThrough = PassThrough$1; - -// Backwards-compat with node 0.4.x -Stream$2.Stream = Stream$2; - -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. - -function Stream$2() { - EventEmitter$1.call(this); -} - -Stream$2.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EventEmitter$1.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; - -var _polyfillNode_stream = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': Stream$2, - Readable: Readable$2, - Writable: Writable$2, - Duplex: Duplex$4, - Transform: Transform$4, - PassThrough: PassThrough$1, - Stream: Stream$2 -}); - -var require$$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_stream); - -var Buffer$g = safeBuffer$1.exports.Buffer; -var Transform$3 = require$$1.Transform; -var StringDecoder$1 = string_decoder.StringDecoder; -var inherits$b = inherits_browser$1.exports; - -function CipherBase (hashMode) { - Transform$3.call(this); - this.hashMode = typeof hashMode === 'string'; - if (this.hashMode) { - this[hashMode] = this._finalOrDigest; - } else { - this.final = this._finalOrDigest; - } - if (this._final) { - this.__final = this._final; - this._final = null; - } - this._decoder = null; - this._encoding = null; -} -inherits$b(CipherBase, Transform$3); - -CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - if (typeof data === 'string') { - data = Buffer$g.from(data, inputEnc); - } - - var outData = this._update(data); - if (this.hashMode) return this - - if (outputEnc) { - outData = this._toString(outData, outputEnc); - } - - return outData -}; - -CipherBase.prototype.setAutoPadding = function () {}; -CipherBase.prototype.getAuthTag = function () { - throw new Error('trying to get auth tag in unsupported state') -}; - -CipherBase.prototype.setAuthTag = function () { - throw new Error('trying to set auth tag in unsupported state') -}; - -CipherBase.prototype.setAAD = function () { - throw new Error('trying to set aad in unsupported state') -}; - -CipherBase.prototype._transform = function (data, _, next) { - var err; - try { - if (this.hashMode) { - this._update(data); - } else { - this.push(this._update(data)); - } - } catch (e) { - err = e; - } finally { - next(err); - } -}; -CipherBase.prototype._flush = function (done) { - var err; - try { - this.push(this.__final()); - } catch (e) { - err = e; - } - - done(err); -}; -CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer$g.alloc(0); - if (outputEnc) { - outData = this._toString(outData, outputEnc, true); - } - return outData -}; - -CipherBase.prototype._toString = function (value, enc, fin) { - if (!this._decoder) { - this._decoder = new StringDecoder$1(enc); - this._encoding = enc; - } - - if (this._encoding !== enc) throw new Error('can\'t switch encodings') - - var out = this._decoder.write(value); - if (fin) { - out += this._decoder.end(); - } - - return out -}; - -var cipherBase = CipherBase; - -var inherits$a = inherits_browser$1.exports; -var Buffer$f = safeBuffer$1.exports.Buffer; - -var Base$1 = cipherBase; - -var ZEROS$1 = Buffer$f.alloc(128); -var blocksize = 64; - -function Hmac$1 (alg, key) { - Base$1.call(this, 'digest'); - if (typeof key === 'string') { - key = Buffer$f.from(key); - } - - this._alg = alg; - this._key = key; - - if (key.length > blocksize) { - key = alg(key); - } else if (key.length < blocksize) { - key = Buffer$f.concat([key, ZEROS$1], blocksize); - } - - var ipad = this._ipad = Buffer$f.allocUnsafe(blocksize); - var opad = this._opad = Buffer$f.allocUnsafe(blocksize); - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - - this._hash = [ipad]; -} - -inherits$a(Hmac$1, Base$1); - -Hmac$1.prototype._update = function (data) { - this._hash.push(data); -}; - -Hmac$1.prototype._final = function () { - var h = this._alg(Buffer$f.concat(this._hash)); - return this._alg(Buffer$f.concat([this._opad, h])) -}; -var legacy = Hmac$1; - -var safeBuffer = {exports: {}}; - +function(e){const t=Pe,r=$e,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|d(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return f(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return f(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|c(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||V(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return u(e),o(e<0?0:0|c(e))}function l(e){const t=e.length<0?0:0|c(e.length),r=o(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function d(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:K(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return A(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){let o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(o=u));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(u=(15&t)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=d,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(t+=" ... "),""},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if($(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const u=Math.min(o,s),h=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return v(this,e,t,r);case"ascii":case"latin1":case"binary":return w(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function j(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function U(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function I(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function C(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=J((function(e,t=0){return L(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=J((function(e,t=0){return j(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=J((function(e,t=0){return L(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=J((function(e,t=0){return j(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return I(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return I(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return C(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return C(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function z(e,t,r,n,i,o){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||W(t,e.length-(r+1))}(n,i,o)}function q(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,r){if(Math.floor(e)!==e)throw q(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}P("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),P("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),P("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=D(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=D(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const F=/[^+/0-9A-Za-z-_]/g;function K(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const G=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function J(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}}(Ne),function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Ce,Ce.exports),Ve.prototype=Object.create(null),Ge.EventEmitter=Ge,Ge.usingDomains=!1,Ge.prototype.domain=void 0,Ge.prototype._events=void 0,Ge.prototype._maxListeners=void 0,Ge.defaultMaxListeners=10,Ge.init=function(){this.domain=null,Ge.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ve,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ge.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ge.prototype.getMaxListeners=function(){return Je(this)},Ge.prototype.emit=function(e){var t,r,n,i,o,a,s,u="error"===e;if(a=this._events)u=u&&null==a.error;else if(!u)return!1;if(s=this.domain,u){if(t=arguments[1],!s){if(t instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:Xe(r,l,this);break;case 2:Ze(r,l,this,arguments[1]);break;case 3:Qe(r,l,this,arguments[1],arguments[2]);break;case 4:et(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ve,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var at=Object.freeze({__proto__:null,default:Ge,EventEmitter:Ge});function st(){throw new Error("setTimeout has not been defined")}function ut(){throw new Error("clearTimeout has not been defined")}var ht=st,lt=ut;function ft(e){if(ht===setTimeout)return setTimeout(e,0);if((ht===st||!ht)&&setTimeout)return ht=setTimeout,setTimeout(e,0);try{return ht(e,0)}catch(t){try{return ht.call(null,e,0)}catch(t){return ht.call(this,e,0)}}}"function"==typeof N.setTimeout&&(ht=setTimeout),"function"==typeof N.clearTimeout&&(lt=clearTimeout);var ct,dt=[],pt=!1,gt=-1;function yt(){pt&&ct&&(pt=!1,ct.length?dt=ct.concat(dt):gt=-1,dt.length&&bt())}function bt(){if(!pt){var e=ft(yt);pt=!0;for(var t=dt.length;t;){for(ct=dt,dt=[];++gt1)for(var r=1;r=a)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),u=i[n];n=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),c(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),u(n,e,n.depth)}function a(e,t){var r=o.styles[t];return r?"["+o.colors[r][0]+"m"+e+"["+o.colors[r][1]+"m":e}function s(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&_(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(g(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(p(t))return e.stylize(""+t,"number");if(c(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(o)return o;var a=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),w(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(_(r)){var m=r.name?": "+r.name:"";return e.stylize("[Function"+m+"]","special")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(v(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var E,S="",k=!1,x=["{","}"];(f(r)&&(k=!0,x=["[","]"]),_(r))&&(S=" [Function"+(r.name?": "+r.name:"")+"]");return b(r)&&(S=" "+RegExp.prototype.toString.call(r)),v(r)&&(S=" "+Date.prototype.toUTCString.call(r)),w(r)&&(S=" "+h(r)),0!==a.length||k&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),E=k?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(E,S,x)):x[0]+S+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function l(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),R(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=d(r)?u(e,h.value,null):u(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function c(e){return"boolean"==typeof e}function d(e){return null===e}function p(e){return"number"==typeof e}function g(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return m(e)&&"[object RegExp]"===E(e)}function m(e){return"object"==typeof e&&null!==e}function v(e){return m(e)&&"[object Date]"===E(e)}function w(e){return m(e)&&("[object Error]"===E(e)||e instanceof Error)}function _(e){return"function"==typeof e}function E(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(n)&&(n=Mt.env.NODE_DEBUG||""),e=e.toUpperCase(),!i[e])if(new RegExp("\\b"+e+"\\b","i").test(n)){var r=Mt.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=c,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=p,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=m,t.isDate=v,t.isError=w,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=jt;var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",x(),t.format.apply(t,arguments))},t.inherits=Ie.exports,t._extend=function(e,t){if(!t||!m(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}(Lt),Ut.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},Ut.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},Ut.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},Ut.prototype.clear=function(){this.head=this.tail=null,this.length=0},Ut.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},Ut.prototype.concat=function(e){if(0===this.length)return Ne.Buffer.alloc(0);if(1===this.length)return this.head.data;for(var t=Ne.Buffer.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var It={},Ct=Ce.exports.Buffer,Nt=Ct.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};var Pt=It.StringDecoder=Dt;function Dt(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(Ct.isEncoding===Nt||!Nt(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=Wt,this.end=Ft,t=4;break;case"utf8":this.fillLast=qt,t=4;break;case"base64":this.text=Kt,this.end=Yt,t=3;break;default:return this.write=Ht,void(this.end=$t)}this.lastNeed=0,this.lastTotal=0,this.lastChar=Ct.allocUnsafe(t)}function zt(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function qt(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function Wt(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Ft(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Kt(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Yt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ht(e){return e.toString(this.encoding)}function $t(e){return e&&e.length?this.write(e):""}Dt.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Dt.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Jt.ReadableState=Gt;var Vt=Lt.debuglog("stream");function Gt(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Sr&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ut,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Pt(e.encoding),this.encoding=e.encoding)}function Jt(e){if(!(this instanceof Jt))return new Jt(e);this._readableState=new Gt(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),Ge.call(this)}function Xt(e,t,r,n,i){var o=function(e,t){var r=null;X.isBuffer(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,Qt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&Qt(e))),function(e,t){t.readingMore||(t.readingMore=!0,mt(tr,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Qt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Vt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?mt(er,e):er(e))}function er(e){Vt("emit readable"),e.emit("readable"),ir(e)}function tr(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=X.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function ar(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,mt(sr,t,e))}function sr(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function ur(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return Vt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ar(this):Qt(this),null;if(0===(e=Zt(e,t))&&t.ended)return 0===t.length&&ar(this),null;var n,i=t.needReadable;return Vt("need readable",i),(0===t.length||t.length-e0?or(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ar(this)),null!==n&&this.emit("data",n),n},Jt.prototype._read=function(e){this.emit("error",new Error("not implemented"))},Jt.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,Vt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:h;function o(e){Vt("onunpipe"),e===r&&h()}function a(){Vt("onend"),e.end()}n.endEmitted?mt(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;Vt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,ir(e))}}(r);e.on("drain",s);var u=!1;function h(){Vt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",c),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",h),r.removeListener("data",f),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var l=!1;function f(t){Vt("ondata"),l=!1,!1!==e.write(t)||l||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ur(n.pipes,e))&&!u&&(Vt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function c(t){var r;Vt("onerror",t),g(),e.removeListener("error",c),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),g()}function p(){Vt("onfinish"),e.removeListener("close",d),g()}function g(){Vt("unpipe"),r.unpipe(e)}return r.on("data",f),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",c),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(Vt("pipe resume"),r.resume()),e},Jt.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this)),this;if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},cr.prototype._write=function(e,t,r){r(new Error("not implemented"))},cr.prototype._writev=null,cr.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,mr(e,t),r&&(t.finished?mt(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Lt.inherits(Sr,Jt);for(var wr=Object.keys(cr.prototype),_r=0;_r64?t=e(t):t.length<64&&(t=Pr.concat([t,zr],64));for(var r=this._ipad=Pr.allocUnsafe(64),n=this._opad=Pr.allocUnsafe(64),i=0;i<64;i++)r[i]=54^t[i],n[i]=92^t[i];this._hash=[r]}Nr(qr,Dr),qr.prototype._update=function(e){this._hash.push(e)},qr.prototype._final=function(){var e=this._alg(Pr.concat(this._hash));return this._alg(Pr.concat([this._opad,e]))};var Wr=qr,Fr={exports:{}}; /*! safe-buffer. MIT License. Feross Aboukhadijeh */ - -(function (module, exports) { -/* eslint-disable node/no-deprecated-api */ -var buffer$1 = buffer; -var Buffer = buffer$1.Buffer; - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key]; - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer$1; -} else { - // Copy properties from require('buffer') - copyProps(buffer$1, exports); - exports.Buffer = SafeBuffer; -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.prototype = Object.create(Buffer.prototype); - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer); - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -}; - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size); - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding); - } else { - buf.fill(fill); - } - } else { - buf.fill(0); - } - return buf -}; - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -}; - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer$1.SlowBuffer(size) -}; -}(safeBuffer, safeBuffer.exports)); - -var readableBrowser = {exports: {}}; - -var require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_events); - -var streamBrowser = require$$0.EventEmitter; - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var _require$2 = buffer, - Buffer$e = _require$2.Buffer; - -var _require2 = require$$0$1, - inspect = _require2.inspect; - -var custom = inspect && inspect.custom || 'inspect'; - -function copyBuffer(src, target, offset) { - Buffer$e.prototype.copy.call(src, target, offset); -} - -var buffer_list = -/*#__PURE__*/ -function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; - } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer$e.alloc(0); - var ret = Buffer$e.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } - - return ret; - } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer$e.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } - - break; - } - - ++c; - } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); - } - }]); - - return BufferList; -}(); - -function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err) { - if (!this._writableState) { - process.nextTick(emitErrorNT, this, err); - } else if (!this._writableState.errorEmitted) { - this._writableState.errorEmitted = true; - process.nextTick(emitErrorNT, this, err); - } - } - - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks - - - if (this._readableState) { - this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - - - if (this._writableState) { - this._writableState.destroyed = true; - } - - this._destroy(err || null, function (err) { - if (!cb && err) { - if (!_this._writableState) { - process.nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - process.nextTick(emitErrorAndCloseNT, _this, err); - } else { - process.nextTick(emitCloseNT, _this); - } - } else if (cb) { - process.nextTick(emitCloseNT, _this); - cb(err); - } else { - process.nextTick(emitCloseNT, _this); - } - }); - - return this; -} - -function emitErrorAndCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); -} - -function emitCloseNT(self) { - if (self._writableState && !self._writableState.emitClose) return; - if (self._readableState && !self._readableState.emitClose) return; - self.emit('close'); -} - -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finalCalled = false; - this._writableState.prefinished = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} - -function emitErrorNT(self, err) { - self.emit('error', err); -} - -function errorOrDestroy$2(stream, err) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; - if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); -} - -var destroy_1 = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy$2 -}; - -var errorsBrowser = {}; - -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } - -var codes = {}; - -function createErrorType(code, message, Base) { - if (!Base) { - Base = Error; - } - - function getMessage(arg1, arg2, arg3) { - if (typeof message === 'string') { - return message; - } else { - return message(arg1, arg2, arg3); - } - } - - var NodeError = - /*#__PURE__*/ - function (_Base) { - _inheritsLoose(NodeError, _Base); - - function NodeError(arg1, arg2, arg3) { - return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; - } - - return NodeError; - }(Base); - - NodeError.prototype.name = Base.name; - NodeError.prototype.code = code; - codes[code] = NodeError; -} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js - - -function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - expected = expected.map(function (i) { - return String(i); - }); - - if (len > 2) { - return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; - } else if (len === 2) { - return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); - } else { - return "of ".concat(thing, " ").concat(expected[0]); - } - } else { - return "of ".concat(thing, " ").concat(String(expected)); - } -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith - - -function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith - - -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - - return str.substring(this_len - search.length, this_len) === search; -} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes - - -function includes(str, search, start) { - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; - } -} - -createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { - return 'The value "' + value + '" is invalid for option "' + name + '"'; -}, TypeError); -createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { - // determiner: 'must be' or 'must not be' - var determiner; - - if (typeof expected === 'string' && startsWith(expected, 'not ')) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } else { - determiner = 'must be'; - } - - var msg; - - if (endsWith(name, ' argument')) { - // For cases like 'first argument' - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } else { - var type = includes(name, '.') ? 'property' : 'argument'; - msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); - } - - msg += ". Received type ".concat(typeof actual); - return msg; -}, TypeError); -createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); -createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { - return 'The ' + name + ' method is not implemented'; -}); -createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); -createErrorType('ERR_STREAM_DESTROYED', function (name) { - return 'Cannot call ' + name + ' after a stream was destroyed'; -}); -createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); -createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); -createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); -createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); -createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { - return 'Unknown encoding: ' + arg; -}, TypeError); -createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); -errorsBrowser.codes = codes; - -var ERR_INVALID_OPT_VALUE = errorsBrowser.codes.ERR_INVALID_OPT_VALUE; - -function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; -} - -function getHighWaterMark$2(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - - if (hwm != null) { - if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; - throw new ERR_INVALID_OPT_VALUE(name, hwm); - } - - return Math.floor(hwm); - } // Default value - - - return state.objectMode ? 16 : 16 * 1024; -} - -var state = { - getHighWaterMark: getHighWaterMark$2 -}; - -var inherits_browser = {exports: {}}; - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - inherits_browser.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - } - }; -} else { - // old school shim for old browsers - inherits_browser.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - }; -} - -/** - * Module exports. - */ - -var browser$2 = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!commonjsGlobal.localStorage) return false; - } catch (_) { - return false; - } - var val = commonjsGlobal.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -var _stream_writable = Writable$1; -// there will be only 2 of these for each stream - - -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* */ - -/**/ - - -var Duplex$3; -/**/ - -Writable$1.WritableState = WritableState; -/**/ - -var internalUtil = { - deprecate: browser$2 -}; -/**/ - -/**/ - -var Stream$1 = streamBrowser; -/**/ - - -var Buffer$d = buffer.Buffer; - -var OurUint8Array$1 = commonjsGlobal.Uint8Array || function () {}; - -function _uint8ArrayToBuffer$1(chunk) { - return Buffer$d.from(chunk); -} - -function _isUint8Array$1(obj) { - return Buffer$d.isBuffer(obj) || obj instanceof OurUint8Array$1; -} - -var destroyImpl$1 = destroy_1; - -var _require$1 = state, - getHighWaterMark$1 = _require$1.getHighWaterMark; - -var _require$codes$3 = errorsBrowser.codes, - ERR_INVALID_ARG_TYPE$1 = _require$codes$3.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED$2 = _require$codes$3.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK$1 = _require$codes$3.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes$3.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED$1 = _require$codes$3.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes$3.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes$3.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes$3.ERR_UNKNOWN_ENCODING; - -var errorOrDestroy$1 = destroyImpl$1.errorOrDestroy; - -inherits_browser.exports(Writable$1, Stream$1); - -function nop() {} - -function WritableState(options, stream, isDuplex) { - Duplex$3 = Duplex$3 || _stream_duplex; - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex$3; // object stream flag to indicate whether or not this stream - // contains buffers or objects. - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - - this.highWaterMark = getHighWaterMark$1(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called - - this.finalCalled = false; // drain event flag. - - this.needDrain = false; // at the start of calling end() - - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - - this.length = 0; // a flag to see when we're in the middle of a write. - - this.writing = false; // when true all writes will be buffered until .uncork() call - - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - - this.sync = true; // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - - this.onwrite = function (er) { - onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - - - this.writecb = null; // the amount that is being written when _write is called. - - this.writelen = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - - this.prefinished = false; // True if the error was already emitted and should not be thrown again - - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') - - this.autoDestroy = !!options.autoDestroy; // count buffered requests - - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - - while (current) { - out.push(current); - current = current.next; - } - - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function writableStateBufferGetter() { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - - -var realHasInstance; - -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable$1, Symbol.hasInstance, { - value: function value(object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable$1) return false; - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function realHasInstance(object) { - return object instanceof this; - }; -} - -function Writable$1(options) { - Duplex$3 = Duplex$3 || _stream_duplex; // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex$3; - if (!isDuplex && !realHasInstance.call(Writable$1, this)) return new Writable$1(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. - - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; - } - - Stream$1.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - - -Writable$1.prototype.pipe = function () { - errorOrDestroy$1(this, new ERR_STREAM_CANNOT_PIPE()); -}; - -function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - - errorOrDestroy$1(stream, er); - process.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. - - -function validChunk(stream, state, chunk, cb) { - var er; - - if (chunk === null) { - er = new ERR_STREAM_NULL_VALUES(); - } else if (typeof chunk !== 'string' && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE$1('chunk', ['string', 'Buffer'], chunk); - } - - if (er) { - errorOrDestroy$1(stream, er); - process.nextTick(cb, er); - return false; - } - - return true; -} - -Writable$1.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - var isBuf = !state.objectMode && _isUint8Array$1(chunk); - - if (isBuf && !Buffer$d.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer$1(chunk); - } - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); - } - return ret; -}; - -Writable$1.prototype.cork = function () { - this._writableState.corked++; -}; - -Writable$1.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable$1.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - 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); - this._writableState.defaultEncoding = encoding; - return this; -}; - -Object.defineProperty(Writable$1.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer$d.from(chunk, encoding); - } - - return chunk; -} - -Object.defineProperty(Writable$1.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); // if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. - -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } - } - - var len = state.objectMode ? 1 : chunk.length; - state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED$1('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - process.nextTick(cb, er); // this can emit finish, and it will always happen - // after error - - process.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - errorOrDestroy$1(stream, er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - errorOrDestroy$1(stream, er); // this can emit finish, but finish must - // always follow error - - finishMaybe(stream, state); - } -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK$1(); - onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state) || stream.destroyed; - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(afterWrite, stream, state, finished, cb); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. - - -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} // if there's something in the buffer waiting, then process it - - -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - var count = 0; - var allBuffers = true; - - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - - state.pendingcb++; - state.lastBufferedRequest = null; - - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable$1.prototype._write = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED$2('_write()')); -}; - -Writable$1.prototype._writev = null; - -Writable$1.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - - if (state.corked) { - state.corked = 1; - this.uncork(); - } // ignore unnecessary end() calls. - - - if (!state.ending) endWritable(this, state, cb); - return this; -}; - -Object.defineProperty(Writable$1.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - - if (err) { - errorOrDestroy$1(stream, err); - } - - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} - -function prefinish$1(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.pendingcb++; - state.finalCalled = true; - process.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - - if (need) { - prefinish$1(stream, state); - - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; - - if (!rState || rState.autoDestroy && rState.endEmitted) { - stream.destroy(); - } - } - } - } - - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - - if (cb) { - if (state.finished) process.nextTick(cb);else stream.once('finish', cb); - } - - state.ended = true; - stream.writable = false; -} - -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } // reuse the free corkReq. - - - state.corkedRequestsFree.next = corkReq; -} - -Object.defineProperty(Writable$1.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._writableState === undefined) { - return false; - } - - return this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._writableState.destroyed = value; - } -}); -Writable$1.prototype.destroy = destroyImpl$1.destroy; -Writable$1.prototype._undestroy = destroyImpl$1.undestroy; - -Writable$1.prototype._destroy = function (err, cb) { - cb(err); -}; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - - for (var key in obj) { - keys.push(key); - } - - return keys; -}; -/**/ - - -var _stream_duplex = Duplex$2; - -var Readable$1 = _stream_readable; - -var Writable = _stream_writable; - -inherits_browser.exports(Duplex$2, Readable$1); - -{ - // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); - - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex$2.prototype[method]) Duplex$2.prototype[method] = Writable.prototype[method]; - } -} - -function Duplex$2(options) { - if (!(this instanceof Duplex$2)) return new Duplex$2(options); - Readable$1.call(this, options); - Writable.call(this, options); - this.allowHalfOpen = true; - - if (options) { - if (options.readable === false) this.readable = false; - if (options.writable === false) this.writable = false; - - if (options.allowHalfOpen === false) { - this.allowHalfOpen = false; - this.once('end', onend); - } - } -} - -Object.defineProperty(Duplex$2.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); -Object.defineProperty(Duplex$2.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); - } -}); -Object.defineProperty(Duplex$2.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; - } -}); // the no-half-open enforcer - -function onend() { - // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. - - process.nextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -Object.defineProperty(Duplex$2.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); - -var ERR_STREAM_PREMATURE_CLOSE = errorsBrowser.codes.ERR_STREAM_PREMATURE_CLOSE; - -function once$1(callback) { - var called = false; - return function () { - if (called) return; - called = true; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - callback.apply(this, args); - }; -} - -function noop$1() {} - -function isRequest$1(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function eos$1(stream, opts, callback) { - if (typeof opts === 'function') return eos$1(stream, null, opts); - if (!opts) opts = {}; - callback = once$1(callback || noop$1); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; - - var onlegacyfinish = function onlegacyfinish() { - if (!stream.writable) onfinish(); - }; - - var writableEnded = stream._writableState && stream._writableState.finished; - - var onfinish = function onfinish() { - writable = false; - writableEnded = true; - if (!readable) callback.call(stream); - }; - - var readableEnded = stream._readableState && stream._readableState.endEmitted; - - var onend = function onend() { - readable = false; - readableEnded = true; - if (!writable) callback.call(stream); - }; - - var onerror = function onerror(err) { - callback.call(stream, err); - }; - - var onclose = function onclose() { - var err; - - if (readable && !readableEnded) { - if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - - if (writable && !writableEnded) { - if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - }; - - var onrequest = function onrequest() { - stream.req.on('finish', onfinish); - }; - - if (isRequest$1(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest();else stream.on('request', onrequest); - } else if (writable && !stream._writableState) { - // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - return function () { - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -} - -var endOfStream = eos$1; - -var _Object$setPrototypeO; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var finished = endOfStream; - -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); - -function createIterResult(value, done) { - return { - value: value, - done: done - }; -} - -function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - - if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null - // we can be expecting either 'end' or - // 'error' - - if (data !== null) { - iter[kLastPromise] = null; - iter[kLastResolve] = null; - iter[kLastReject] = null; - resolve(createIterResult(data, false)); - } - } -} - -function onReadable(iter) { - // we wait for the next tick, because it might - // emit an error with process.nextTick - process.nextTick(readAndResolve, iter); -} - -function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { - if (iter[kEnded]) { - resolve(createIterResult(undefined, true)); - return; - } - - iter[kHandlePromise](resolve, reject); - }, reject); - }; -} - -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { - get stream() { - return this[kStream]; - }, - - next: function next() { - var _this = this; - - // if we have detected an error in the meanwhile - // reject straight away - var error = this[kError]; - - if (error !== null) { - return Promise.reject(error); - } - - if (this[kEnded]) { - return Promise.resolve(createIterResult(undefined, true)); - } - - if (this[kStream].destroyed) { - // We need to defer via nextTick because if .destroy(err) is - // called, the error will be emitted via nextTick, and - // we cannot guarantee that there is no error lingering around - // waiting to be emitted. - return new Promise(function (resolve, reject) { - process.nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); - } else { - resolve(createIterResult(undefined, true)); - } - }); - }); - } // if we have multiple next() calls - // we will wait for the previous Promise to finish - // this logic is optimized to support for await loops, - // where next() is only called once at a time - - - var lastPromise = this[kLastPromise]; - var promise; - - if (lastPromise) { - promise = new Promise(wrapForNext(lastPromise, this)); - } else { - // fast path needed to support multiple this.push() - // without triggering the next() queue - var data = this[kStream].read(); - - if (data !== null) { - return Promise.resolve(createIterResult(data, false)); - } - - promise = new Promise(this[kHandlePromise]); - } - - this[kLastPromise] = promise; - return promise; - } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; - - // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } - - resolve(createIterResult(undefined, true)); - }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator$1 = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } - }, - writable: true - }), _Object$create)); - iterator[kLastPromise] = null; - finished(stream, function (err) { - if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise - // returned by next() and store the error - - if (reject !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - reject(err); - } - - iterator[kError] = err; - return; - } - - var resolve = iterator[kLastResolve]; - - if (resolve !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(undefined, true)); - } - - iterator[kEnded] = true; - }); - stream.on('readable', onReadable.bind(null, iterator)); - return iterator; -}; - -var async_iterator = createReadableStreamAsyncIterator$1; - -var fromBrowser = function () { - throw new Error('Readable.from is not available in the browser') -}; - -var _stream_readable = Readable; -/**/ - -var Duplex$1; -/**/ - -Readable.ReadableState = ReadableState; -/**/ - -require$$0.EventEmitter; - -var EElistenerCount = function EElistenerCount(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ - - -var Stream = streamBrowser; -/**/ - - -var Buffer$c = buffer.Buffer; - -var OurUint8Array = commonjsGlobal.Uint8Array || function () {}; - -function _uint8ArrayToBuffer(chunk) { - return Buffer$c.from(chunk); -} - -function _isUint8Array(obj) { - return Buffer$c.isBuffer(obj) || obj instanceof OurUint8Array; -} -/**/ - - -var debugUtil = require$$0$1; - -var debug; - -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function debug() {}; -} -/**/ - - -var BufferList = buffer_list; - -var destroyImpl = destroy_1; - -var _require = state, - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes$2 = errorsBrowser.codes, - ERR_INVALID_ARG_TYPE = _require$codes$2.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes$2.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED$1 = _require$codes$2.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes$2.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. - - -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; - -inherits_browser.exports(Readable, Stream); - -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - 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 - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - - 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]]; -} - -function ReadableState(options, stream, isDuplex) { - Duplex$1 = Duplex$1 || _stream_duplex; - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex$1; // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - - this.sync = true; // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. - - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') - - this.autoDestroy = !!options.autoDestroy; // has it been destroyed - - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled - - this.readingMore = false; - this.decoder = null; - this.encoding = null; - - if (options.encoding) { - if (!StringDecoder) StringDecoder = string_decoder.StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - Duplex$1 = Duplex$1 || _stream_duplex; - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex$1; - this._readableState = new ReadableState(options, this, isDuplex); // legacy - - this.readable = true; - - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - } - - Stream.call(this); -} - -Object.defineProperty(Readable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined) { - return false; - } - - return this._readableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed - - - this._readableState.destroyed = value; - } -}); -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; - -Readable.prototype._destroy = function (err, cb) { - cb(err); -}; // Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. - - -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; - - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - - if (encoding !== state.encoding) { - chunk = Buffer$c.from(chunk, encoding); - encoding = ''; - } - - skipChunkCheck = true; - } - } else { - skipChunkCheck = true; - } - - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - - -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; - -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - debug('readableAddChunk', chunk); - var state = stream._readableState; - - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - - if (er) { - errorOrDestroy(stream, er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer$c.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } - - if (addToFront) { - if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed) { - return false; - } else { - state.reading = false; - - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - maybeReadMore(stream, state); - } - } // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. - - - return !state.ended && (state.length < state.highWaterMark || state.length === 0); -} - -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - state.awaitDrain = 0; - stream.emit('data', chunk); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); - } - - maybeReadMore(stream, state); -} - -function chunkInvalid(state, chunk) { - var er; - - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); - } - - return er; -} - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; // backwards compatibility. - - -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = string_decoder.StringDecoder; - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 - - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: - - var p = this._readableState.buffer.head; - var content = ''; - - while (p !== null) { - content += decoder.write(p.data); - p = p.next; - } - - this._readableState.buffer.clear(); - - if (content !== '') this._readableState.buffer.push(content); - this._readableState.length = content.length; - return this; -}; // Don't raise the hwm > 1GB - - -var MAX_HWM = 0x40000000; - -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - - -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - - if (!state.ended) { - state.needReadable = true; - return 0; - } - - return state.length; -} // you can override either this method, or the async _read(n) below. - - -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - - - var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some - - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - - - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - - this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - n = 0; - } else { - state.length -= n; - state.awaitDrain = 0; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. - - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - return ret; -}; - -function onEofChunk(stream, state) { - debug('onEofChunk'); - if (state.ended) return; - - if (state.decoder) { - var chunk = state.decoder.end(); - - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - - state.ended = true; - - if (state.sync) { - // if we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call - emitReadable(stream); - } else { - // emit 'readable' now to make sure it gets picked up. - state.needReadable = false; - - if (!state.emittedReadable) { - state.emittedReadable = true; - emitReadable_(stream); - } - } -} // Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. - - -function emitReadable(stream) { - var state = stream._readableState; - debug('emitReadable', state.needReadable, state.emittedReadable); - state.needReadable = false; - - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - process.nextTick(emitReadable_, stream); - } -} - -function emitReadable_(stream) { - var state = stream._readableState; - debug('emitReadable_', state.destroyed, state.length, state.ended); - - if (!state.destroyed && (state.length || state.ended)) { - stream.emit('readable'); - state.emittedReadable = false; - } // The stream needs another readable event if - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. - - - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; - flow(stream); -} // at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. - - -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. - break; - } - - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. - - -Readable.prototype._read = function (n) { - errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED$1('_read()')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - - case 1: - state.pipes = [state.pipes, dest]; - break; - - default: - state.pipes.push(dest); - break; - } - - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); - dest.on('unpipe', onunpipe); - - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - - function onend() { - debug('onend'); - dest.end(); - } // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - - - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - var cleanedUp = false; - - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - src.on('data', ondata); - - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - debug('dest.write', ret); - - if (ret === false) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', state.awaitDrain); - state.awaitDrain++; - } - - src.pause(); - } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - - - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. - - - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. - - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - - dest.once('close', onclose); - - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } // tell the dest that it's being piped to - - - dest.emit('pipe', src); // start the flow if it hasn't been started already. - - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function pipeOnDrainFunctionResult() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { - hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. - - if (state.pipesCount === 0) return this; // just one destination. most common case. - - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. - - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } // slow case. multiple pipe destinations. - - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - } - - return this; - } // try to find the right one. - - - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - - -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; - - if (ev === 'data') { - // update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused - - if (state.flowing !== false) this.resume(); - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - debug('on readable', state.length, state.reading); - - if (state.length) { - emitReadable(this); - } else if (!state.reading) { - process.nextTick(nReadingNextTick, this); - } - } - } - - return res; -}; - -Readable.prototype.addListener = Readable.prototype.on; - -Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); - - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - - return res; -}; - -Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); - - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } - - return res; -}; - -function updateReadableListening(self) { - var state = self._readableState; - state.readableListening = self.listenerCount('readable') > 0; - - if (state.resumeScheduled && !state.paused) { - // flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume - } else if (self.listenerCount('data') > 0) { - self.resume(); - } -} - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - - -Readable.prototype.resume = function () { - var state = this._readableState; - - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening - // for readable, but we still have to call - // resume() - - state.flowing = !state.readableListening; - resume(this, state); - } - - state.paused = false; - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - debug('resume', state.reading); - - if (!state.reading) { - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - - if (this._readableState.flowing !== false) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - - this._readableState.paused = true; - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - - while (state.flowing && stream.read() !== null) { - } -} // wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. - - -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - stream.on('end', function () { - debug('wrapped end'); - - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - - if (!ret) { - paused = true; - stream.pause(); - } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. - - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function methodWrap(method) { - return function methodWrapReturnFunction() { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } // proxy certain important events. - - - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - - - this._read = function (n) { - debug('wrapped _read', n); - - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; - -if (typeof Symbol === 'function') { - Readable.prototype[Symbol.asyncIterator] = function () { - if (createReadableStreamAsyncIterator === undefined) { - createReadableStreamAsyncIterator = async_iterator; - } - - return createReadableStreamAsyncIterator(this); - }; -} - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.highWaterMark; - } -}); -Object.defineProperty(Readable.prototype, 'readableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState && this._readableState.buffer; - } -}); -Object.defineProperty(Readable.prototype, 'readableFlowing', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.flowing; - }, - set: function set(state) { - if (this._readableState) { - this._readableState.flowing = state; - } - } -}); // exposed for testing purposes only. - -Readable._fromList = fromList; -Object.defineProperty(Readable.prototype, 'readableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.length; - } -}); // Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = state.buffer.consume(n, state.decoder); - } - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - debug('endReadable', state.endEmitted); - - if (!state.endEmitted) { - state.ended = true; - process.nextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. - - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; - - if (!wState || wState.autoDestroy && wState.finished) { - stream.destroy(); - } - } - } -} - -if (typeof Symbol === 'function') { - Readable.from = function (iterable, opts) { - if (from === undefined) { - from = fromBrowser; - } - - return from(Readable, iterable, opts); - }; -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - - return -1; -} - -var _stream_transform = Transform$2; - -var _require$codes$1 = errorsBrowser.codes, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes$1.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes$1.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes$1.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes$1.ERR_TRANSFORM_WITH_LENGTH_0; - -var Duplex = _stream_duplex; - -inherits_browser.exports(Transform$2, Duplex); - -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - var cb = ts.writecb; - - if (cb === null) { - return this.emit('error', new ERR_MULTIPLE_CALLBACK()); - } - - ts.writechunk = null; - ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); - var rs = this._readableState; - rs.reading = false; - - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} - -function Transform$2(options) { - if (!(this instanceof Transform$2)) return new Transform$2(options); - Duplex.call(this, options); - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; // start out asking for a readable event once data is transformed. - - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - - - this.on('prefinish', prefinish); -} - -function prefinish() { - var _this = this; - - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} - -Transform$2.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. - - -Transform$2.prototype._transform = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); -}; - -Transform$2.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; // Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. - - -Transform$2.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && !ts.transforming) { - ts.transforming = true; - - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -Transform$2.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - }); -}; - -function done(stream, er, data) { - if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); - if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); - return stream.push(null); -} - -var _stream_passthrough = PassThrough; - -var Transform$1 = _stream_transform; - -inherits_browser.exports(PassThrough, Transform$1); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform$1.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; - -var eos; - -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - callback.apply(void 0, arguments); - }; -} - -var _require$codes = errorsBrowser.codes, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; - -function noop(err) { - // Rethrow the error if it exists to avoid swallowing it - if (err) throw err; -} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} - -function destroyer(stream, reading, writing, callback) { - callback = once(callback); - var closed = false; - stream.on('close', function () { - closed = true; - }); - if (eos === undefined) eos = endOfStream; - eos(stream, { - readable: reading, - writable: writing - }, function (err) { - if (err) return callback(err); - closed = true; - callback(); - }); - var destroyed = false; - return function (err) { - if (closed) return; - if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want - - if (isRequest(stream)) return stream.abort(); - if (typeof stream.destroy === 'function') return stream.destroy(); - callback(err || new ERR_STREAM_DESTROYED('pipe')); - }; -} - -function call(fn) { - fn(); -} - -function pipe(from, to) { - return from.pipe(to); -} - -function popCallback(streams) { - if (!streams.length) return noop; - if (typeof streams[streams.length - 1] !== 'function') return noop; - return streams.pop(); -} - -function pipeline() { - for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { - streams[_key] = arguments[_key]; - } - - var callback = popCallback(streams); - if (Array.isArray(streams[0])) streams = streams[0]; - - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams'); - } - - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err; - if (err) destroys.forEach(call); - if (reading) return; - destroys.forEach(call); - callback(error); - }); - }); - return streams.reduce(pipe); -} - -var pipeline_1 = pipeline; - -(function (module, exports) { -exports = module.exports = _stream_readable; -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = _stream_writable; -exports.Duplex = _stream_duplex; -exports.Transform = _stream_transform; -exports.PassThrough = _stream_passthrough; -exports.finished = endOfStream; -exports.pipeline = pipeline_1; -}(readableBrowser, readableBrowser.exports)); - -var Buffer$b = safeBuffer.exports.Buffer; -var Transform = readableBrowser.exports.Transform; -var inherits$9 = inherits_browser.exports; - -function throwIfNotStringOrBuffer (val, prefix) { - if (!Buffer$b.isBuffer(val) && typeof val !== 'string') { - throw new TypeError(prefix + ' must be a string or a buffer') - } -} - -function HashBase$2 (blockSize) { - Transform.call(this); - - this._block = Buffer$b.allocUnsafe(blockSize); - this._blockSize = blockSize; - this._blockOffset = 0; - this._length = [0, 0, 0, 0]; - - this._finalized = false; -} - -inherits$9(HashBase$2, Transform); - -HashBase$2.prototype._transform = function (chunk, encoding, callback) { - var error = null; - try { - this.update(chunk, encoding); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase$2.prototype._flush = function (callback) { - var error = null; - try { - this.push(this.digest()); - } catch (err) { - error = err; - } - - callback(error); -}; - -HashBase$2.prototype.update = function (data, encoding) { - throwIfNotStringOrBuffer(data, 'Data'); - if (this._finalized) throw new Error('Digest already called') - if (!Buffer$b.isBuffer(data)) data = Buffer$b.from(data, encoding); - - // consume data - var block = this._block; - var offset = 0; - while (this._blockOffset + data.length - offset >= this._blockSize) { - for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]; - this._update(); - this._blockOffset = 0; - } - while (offset < data.length) block[this._blockOffset++] = data[offset++]; - - // update length - for (var j = 0, carry = data.length * 8; carry > 0; ++j) { - this._length[j] += carry; - carry = (this._length[j] / 0x0100000000) | 0; - if (carry > 0) this._length[j] -= 0x0100000000 * carry; - } - - return this -}; - -HashBase$2.prototype._update = function () { - throw new Error('_update is not implemented') -}; - -HashBase$2.prototype.digest = function (encoding) { - if (this._finalized) throw new Error('Digest already called') - this._finalized = true; - - var digest = this._digest(); - if (encoding !== undefined) digest = digest.toString(encoding); - - // reset state - this._block.fill(0); - this._blockOffset = 0; - for (var i = 0; i < 4; ++i) this._length[i] = 0; - - return digest -}; - -HashBase$2.prototype._digest = function () { - throw new Error('_digest is not implemented') -}; - -var hashBase = HashBase$2; - -var inherits$8 = inherits_browser$1.exports; -var HashBase$1 = hashBase; -var Buffer$a = safeBuffer$1.exports.Buffer; - -var ARRAY16$1 = new Array(16); - -function MD5$1 () { - HashBase$1.call(this, 64); - - // state - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; -} - -inherits$8(MD5$1, HashBase$1); - -MD5$1.prototype._update = function () { - var M = ARRAY16$1; - for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4); - - var a = this._a; - var b = this._b; - var c = this._c; - var d = this._d; - - a = fnF(a, b, c, d, M[0], 0xd76aa478, 7); - d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12); - c = fnF(c, d, a, b, M[2], 0x242070db, 17); - b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22); - a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7); - d = fnF(d, a, b, c, M[5], 0x4787c62a, 12); - c = fnF(c, d, a, b, M[6], 0xa8304613, 17); - b = fnF(b, c, d, a, M[7], 0xfd469501, 22); - a = fnF(a, b, c, d, M[8], 0x698098d8, 7); - d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12); - c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17); - b = fnF(b, c, d, a, M[11], 0x895cd7be, 22); - a = fnF(a, b, c, d, M[12], 0x6b901122, 7); - d = fnF(d, a, b, c, M[13], 0xfd987193, 12); - c = fnF(c, d, a, b, M[14], 0xa679438e, 17); - b = fnF(b, c, d, a, M[15], 0x49b40821, 22); - - a = fnG(a, b, c, d, M[1], 0xf61e2562, 5); - d = fnG(d, a, b, c, M[6], 0xc040b340, 9); - c = fnG(c, d, a, b, M[11], 0x265e5a51, 14); - b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20); - a = fnG(a, b, c, d, M[5], 0xd62f105d, 5); - d = fnG(d, a, b, c, M[10], 0x02441453, 9); - c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14); - b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20); - a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5); - d = fnG(d, a, b, c, M[14], 0xc33707d6, 9); - c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14); - b = fnG(b, c, d, a, M[8], 0x455a14ed, 20); - a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5); - d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9); - c = fnG(c, d, a, b, M[7], 0x676f02d9, 14); - b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20); - - a = fnH(a, b, c, d, M[5], 0xfffa3942, 4); - d = fnH(d, a, b, c, M[8], 0x8771f681, 11); - c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16); - b = fnH(b, c, d, a, M[14], 0xfde5380c, 23); - a = fnH(a, b, c, d, M[1], 0xa4beea44, 4); - d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11); - c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16); - b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23); - a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4); - d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11); - c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16); - b = fnH(b, c, d, a, M[6], 0x04881d05, 23); - a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4); - d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11); - c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16); - b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23); - - a = fnI(a, b, c, d, M[0], 0xf4292244, 6); - d = fnI(d, a, b, c, M[7], 0x432aff97, 10); - c = fnI(c, d, a, b, M[14], 0xab9423a7, 15); - b = fnI(b, c, d, a, M[5], 0xfc93a039, 21); - a = fnI(a, b, c, d, M[12], 0x655b59c3, 6); - d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10); - c = fnI(c, d, a, b, M[10], 0xffeff47d, 15); - b = fnI(b, c, d, a, M[1], 0x85845dd1, 21); - a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6); - d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10); - c = fnI(c, d, a, b, M[6], 0xa3014314, 15); - b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21); - a = fnI(a, b, c, d, M[4], 0xf7537e82, 6); - d = fnI(d, a, b, c, M[11], 0xbd3af235, 10); - c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15); - b = fnI(b, c, d, a, M[9], 0xeb86d391, 21); - - this._a = (this._a + a) | 0; - this._b = (this._b + b) | 0; - this._c = (this._c + c) | 0; - this._d = (this._d + d) | 0; -}; - -MD5$1.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - this._update(); - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - this._block.writeUInt32LE(this._length[0], 56); - this._block.writeUInt32LE(this._length[1], 60); - this._update(); - - // produce result - var buffer = Buffer$a.allocUnsafe(16); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - return buffer -}; - -function rotl$1 (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fnF (a, b, c, d, m, k, s) { - return (rotl$1((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 -} - -function fnG (a, b, c, d, m, k, s) { - return (rotl$1((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 -} - -function fnH (a, b, c, d, m, k, s) { - return (rotl$1((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 -} - -function fnI (a, b, c, d, m, k, s) { - return (rotl$1((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 -} - -var md5_js = MD5$1; - -var MD5 = md5_js; - -var md5$1 = function (buffer) { - return new MD5().update(buffer).digest() -}; - -var Buffer$9 = buffer.Buffer; -var inherits$7 = inherits_browser$1.exports; -var HashBase = hashBase; - -var ARRAY16 = new Array(16); - -var 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 -]; - -var 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 -]; - -var 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 -]; - -var 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 -]; - -var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]; -var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]; - -function RIPEMD160$1 () { - HashBase.call(this, 64); - - // state - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; -} - -inherits$7(RIPEMD160$1, HashBase); - -RIPEMD160$1.prototype._update = function () { - var words = ARRAY16; - for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4); - - var al = this._a | 0; - var bl = this._b | 0; - var cl = this._c | 0; - var dl = this._d | 0; - var el = this._e | 0; - - var ar = this._a | 0; - var br = this._b | 0; - var cr = this._c | 0; - var dr = this._d | 0; - var er = this._e | 0; - - // computation - for (var i = 0; i < 80; i += 1) { - var tl; - var tr; - if (i < 16) { - tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]); - tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]); - } else if (i < 32) { - tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]); - tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]); - } else if (i < 48) { - tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]); - tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]); - } else if (i < 64) { - tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]); - tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]); - } else { // if (i<80) { - tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]); - tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]); - } - - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = tl; - - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = tr; - } - - // update state - var t = (this._b + cl + dr) | 0; - this._b = (this._c + dl + er) | 0; - this._c = (this._d + el + ar) | 0; - this._d = (this._e + al + br) | 0; - this._e = (this._a + bl + cr) | 0; - this._a = t; -}; - -RIPEMD160$1.prototype._digest = function () { - // create padding and handle blocks - this._block[this._blockOffset++] = 0x80; - if (this._blockOffset > 56) { - this._block.fill(0, this._blockOffset, 64); - this._update(); - this._blockOffset = 0; - } - - this._block.fill(0, this._blockOffset, 56); - this._block.writeUInt32LE(this._length[0], 56); - this._block.writeUInt32LE(this._length[1], 60); - this._update(); - - // produce result - var buffer = Buffer$9.alloc ? Buffer$9.alloc(20) : new Buffer$9(20); - buffer.writeInt32LE(this._a, 0); - buffer.writeInt32LE(this._b, 4); - buffer.writeInt32LE(this._c, 8); - buffer.writeInt32LE(this._d, 12); - buffer.writeInt32LE(this._e, 16); - return buffer -}; - -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} - -function fn1 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn2 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 -} - -function fn3 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 -} - -function fn4 (a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 -} - -function fn5 (a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 -} - -var ripemd160 = RIPEMD160$1; - -var sha_js = {exports: {}}; - -var Buffer$8 = safeBuffer$1.exports.Buffer; - -// prototype class for hash functions -function Hash$6 (blockSize, finalSize) { - this._block = Buffer$8.alloc(blockSize); - this._finalSize = finalSize; - this._blockSize = blockSize; - this._len = 0; -} - -Hash$6.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8'; - data = Buffer$8.from(data, enc); - } - - var block = this._block; - var blockSize = this._blockSize; - var length = data.length; - var accum = this._len; - - for (var offset = 0; offset < length;) { - var assigned = accum % blockSize; - var remainder = Math.min(length - offset, blockSize - assigned); - - for (var i = 0; i < remainder; i++) { - block[assigned + i] = data[offset + i]; - } - - accum += remainder; - offset += remainder; - - if ((accum % blockSize) === 0) { - this._update(block); - } - } - - this._len += length; - return this -}; - -Hash$6.prototype.digest = function (enc) { - var rem = this._len % this._blockSize; - - this._block[rem] = 0x80; - - // zero (rem + 1) trailing bits, where (rem + 1) is the smallest - // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize - this._block.fill(0, rem + 1); - - if (rem >= this._finalSize) { - this._update(this._block); - this._block.fill(0); - } - - var bits = this._len * 8; - - // uint32 - if (bits <= 0xffffffff) { - this._block.writeUInt32BE(bits, this._blockSize - 4); - - // uint64 - } else { - var lowBits = (bits & 0xffffffff) >>> 0; - var highBits = (bits - lowBits) / 0x100000000; - - this._block.writeUInt32BE(highBits, this._blockSize - 8); - this._block.writeUInt32BE(lowBits, this._blockSize - 4); - } - - this._update(this._block); - var hash = this._hash(); - - return enc ? hash.toString(enc) : hash -}; - -Hash$6.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -}; - -var hash = Hash$6; - -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ - -var inherits$6 = inherits_browser$1.exports; -var Hash$5 = hash; -var Buffer$7 = safeBuffer$1.exports.Buffer; - -var K$3 = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -]; - -var W$5 = new Array(80); - -function Sha () { - this.init(); - this._w = W$5; - - Hash$5.call(this, 64, 56); -} - -inherits$6(Sha, Hash$5); - -Sha.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - - return this -}; - -function rotl5$1 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30$1 (num) { - return (num << 30) | (num >>> 2) -} - -function ft$1 (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = (rotl5$1(a) + ft$1(s, b, c, d) + e + W[j] + K$3[s]) | 0; - - e = d; - d = c; - c = rotl30$1(b); - b = a; - a = t; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; -}; - -Sha.prototype._hash = function () { - var H = Buffer$7.allocUnsafe(20); - - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - - return H -}; - -var sha$1 = Sha; - -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var inherits$5 = inherits_browser$1.exports; -var Hash$4 = hash; -var Buffer$6 = safeBuffer$1.exports.Buffer; - -var K$2 = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -]; - -var W$4 = new Array(80); - -function Sha1 () { - this.init(); - this._w = W$4; - - Hash$4.call(this, 64, 56); -} - -inherits$5(Sha1, Hash$4); - -Sha1.prototype.init = function () { - this._a = 0x67452301; - this._b = 0xefcdab89; - this._c = 0x98badcfe; - this._d = 0x10325476; - this._e = 0xc3d2e1f0; - - return this -}; - -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} - -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha1.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]); - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20); - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K$2[s]) | 0; - - e = d; - d = c; - c = rotl30(b); - b = a; - a = t; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; -}; - -Sha1.prototype._hash = function () { - var H = Buffer$6.allocUnsafe(20); - - H.writeInt32BE(this._a | 0, 0); - H.writeInt32BE(this._b | 0, 4); - H.writeInt32BE(this._c | 0, 8); - H.writeInt32BE(this._d | 0, 12); - H.writeInt32BE(this._e | 0, 16); - - return H -}; - -var sha1 = Sha1; - -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits$4 = inherits_browser$1.exports; -var Hash$3 = hash; -var Buffer$5 = safeBuffer$1.exports.Buffer; - -var K$1 = [ - 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 -]; - -var W$3 = new Array(64); - -function Sha256$1 () { - this.init(); - - this._w = W$3; // new Array(64) - - Hash$3.call(this, 64, 56); -} - -inherits$4(Sha256$1, Hash$3); - -Sha256$1.prototype.init = function () { - this._a = 0x6a09e667; - this._b = 0xbb67ae85; - this._c = 0x3c6ef372; - this._d = 0xa54ff53a; - this._e = 0x510e527f; - this._f = 0x9b05688c; - this._g = 0x1f83d9ab; - this._h = 0x5be0cd19; - - return this -}; - -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj$1 (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0$1 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} - -function sigma1$1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} - -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} - -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} - -Sha256$1.prototype._update = function (M) { - var W = this._w; - - var a = this._a | 0; - var b = this._b | 0; - var c = this._c | 0; - var d = this._d | 0; - var e = this._e | 0; - var f = this._f | 0; - var g = this._g | 0; - var h = this._h | 0; - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4); - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0; - - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1$1(e) + ch(e, f, g) + K$1[j] + W[j]) | 0; - var T2 = (sigma0$1(a) + maj$1(a, b, c)) | 0; - - h = g; - g = f; - f = e; - e = (d + T1) | 0; - d = c; - c = b; - b = a; - a = (T1 + T2) | 0; - } - - this._a = (a + this._a) | 0; - this._b = (b + this._b) | 0; - this._c = (c + this._c) | 0; - this._d = (d + this._d) | 0; - this._e = (e + this._e) | 0; - this._f = (f + this._f) | 0; - this._g = (g + this._g) | 0; - this._h = (h + this._h) | 0; -}; - -Sha256$1.prototype._hash = function () { - var H = Buffer$5.allocUnsafe(32); - - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - H.writeInt32BE(this._h, 28); - - return H -}; - -var sha256 = Sha256$1; - -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits$3 = inherits_browser$1.exports; -var Sha256 = sha256; -var Hash$2 = hash; -var Buffer$4 = safeBuffer$1.exports.Buffer; - -var W$2 = new Array(64); - -function Sha224 () { - this.init(); - - this._w = W$2; // new Array(64) - - Hash$2.call(this, 64, 56); -} - -inherits$3(Sha224, Sha256); - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8; - this._b = 0x367cd507; - this._c = 0x3070dd17; - this._d = 0xf70e5939; - this._e = 0xffc00b31; - this._f = 0x68581511; - this._g = 0x64f98fa7; - this._h = 0xbefa4fa4; - - return this -}; - -Sha224.prototype._hash = function () { - var H = Buffer$4.allocUnsafe(28); - - H.writeInt32BE(this._a, 0); - H.writeInt32BE(this._b, 4); - H.writeInt32BE(this._c, 8); - H.writeInt32BE(this._d, 12); - H.writeInt32BE(this._e, 16); - H.writeInt32BE(this._f, 20); - H.writeInt32BE(this._g, 24); - - return H -}; - -var sha224 = Sha224; - -var inherits$2 = inherits_browser$1.exports; -var Hash$1 = hash; -var Buffer$3 = safeBuffer$1.exports.Buffer; - -var 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 -]; - -var W$1 = new Array(160); - -function Sha512 () { - this.init(); - this._w = W$1; - - Hash$1.call(this, 128, 112); -} - -inherits$2(Sha512, Hash$1); - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667; - this._bh = 0xbb67ae85; - this._ch = 0x3c6ef372; - this._dh = 0xa54ff53a; - this._eh = 0x510e527f; - this._fh = 0x9b05688c; - this._gh = 0x1f83d9ab; - this._hh = 0x5be0cd19; - - this._al = 0xf3bcc908; - this._bl = 0x84caa73b; - this._cl = 0xfe94f82b; - this._dl = 0x5f1d36f1; - this._el = 0xade682d1; - this._fl = 0x2b3e6c1f; - this._gl = 0xfb41bd6b; - this._hl = 0x137e2179; - - return this -}; - -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} - -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} - -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} - -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} - -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} - -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} - -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} - -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} - -Sha512.prototype._update = function (M) { - var W = this._w; - - var ah = this._ah | 0; - var bh = this._bh | 0; - var ch = this._ch | 0; - var dh = this._dh | 0; - var eh = this._eh | 0; - var fh = this._fh | 0; - var gh = this._gh | 0; - var hh = this._hh | 0; - - var al = this._al | 0; - var bl = this._bl | 0; - var cl = this._cl | 0; - var dl = this._dl | 0; - var el = this._el | 0; - var fl = this._fl | 0; - var gl = this._gl | 0; - var hl = this._hl | 0; - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4); - W[i + 1] = M.readInt32BE(i * 4 + 4); - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2]; - var xl = W[i - 15 * 2 + 1]; - var gamma0 = Gamma0(xh, xl); - var gamma0l = Gamma0l(xl, xh); - - xh = W[i - 2 * 2]; - xl = W[i - 2 * 2 + 1]; - var gamma1 = Gamma1(xh, xl); - var gamma1l = Gamma1l(xl, xh); - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2]; - var Wi7l = W[i - 7 * 2 + 1]; - - var Wi16h = W[i - 16 * 2]; - var Wi16l = W[i - 16 * 2 + 1]; - - var Wil = (gamma0l + Wi7l) | 0; - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0; - Wil = (Wil + gamma1l) | 0; - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0; - Wil = (Wil + Wi16l) | 0; - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0; - - W[i] = Wih; - W[i + 1] = Wil; - } - - for (var j = 0; j < 160; j += 2) { - Wih = W[j]; - Wil = W[j + 1]; - - var majh = maj(ah, bh, ch); - var majl = maj(al, bl, cl); - - var sigma0h = sigma0(ah, al); - var sigma0l = sigma0(al, ah); - var sigma1h = sigma1(eh, el); - var sigma1l = sigma1(el, eh); - - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j]; - var Kil = K[j + 1]; - - var chh = Ch(eh, fh, gh); - var chl = Ch(el, fl, gl); - - var t1l = (hl + sigma1l) | 0; - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0; - t1l = (t1l + chl) | 0; - t1h = (t1h + chh + getCarry(t1l, chl)) | 0; - t1l = (t1l + Kil) | 0; - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0; - t1l = (t1l + Wil) | 0; - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0; - - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0; - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0; - - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = (dl + t1l) | 0; - eh = (dh + t1h + getCarry(el, dl)) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = (t1l + t2l) | 0; - ah = (t1h + t2h + getCarry(al, t1l)) | 0; - } - - this._al = (this._al + al) | 0; - this._bl = (this._bl + bl) | 0; - this._cl = (this._cl + cl) | 0; - this._dl = (this._dl + dl) | 0; - this._el = (this._el + el) | 0; - this._fl = (this._fl + fl) | 0; - this._gl = (this._gl + gl) | 0; - this._hl = (this._hl + hl) | 0; - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0; - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0; - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0; - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0; - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0; - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0; - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0; - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0; -}; - -Sha512.prototype._hash = function () { - var H = Buffer$3.allocUnsafe(64); - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - writeInt64BE(this._gh, this._gl, 48); - writeInt64BE(this._hh, this._hl, 56); - - return H -}; - -var sha512 = Sha512; - -var inherits$1 = inherits_browser$1.exports; -var SHA512 = sha512; -var Hash = hash; -var Buffer$2 = safeBuffer$1.exports.Buffer; - -var W = new Array(160); - -function Sha384 () { - this.init(); - this._w = W; - - Hash.call(this, 128, 112); -} - -inherits$1(Sha384, SHA512); - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d; - this._bh = 0x629a292a; - this._ch = 0x9159015a; - this._dh = 0x152fecd8; - this._eh = 0x67332667; - this._fh = 0x8eb44a87; - this._gh = 0xdb0c2e0d; - this._hh = 0x47b5481d; - - this._al = 0xc1059ed8; - this._bl = 0x367cd507; - this._cl = 0x3070dd17; - this._dl = 0xf70e5939; - this._el = 0xffc00b31; - this._fl = 0x68581511; - this._gl = 0x64f98fa7; - this._hl = 0xbefa4fa4; - - return this -}; - -Sha384.prototype._hash = function () { - var H = Buffer$2.allocUnsafe(48); - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset); - H.writeInt32BE(l, offset + 4); - } - - writeInt64BE(this._ah, this._al, 0); - writeInt64BE(this._bh, this._bl, 8); - writeInt64BE(this._ch, this._cl, 16); - writeInt64BE(this._dh, this._dl, 24); - writeInt64BE(this._eh, this._el, 32); - writeInt64BE(this._fh, this._fl, 40); - - return H -}; - -var sha384 = Sha384; - -var exports = sha_js.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase(); - - var Algorithm = exports[algorithm]; - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - - return new Algorithm() -}; - -exports.sha = sha$1; -exports.sha1 = sha1; -exports.sha224 = sha224; -exports.sha256 = sha256; -exports.sha384 = sha384; -exports.sha512 = sha512; - -var inherits = inherits_browser$1.exports; -var Legacy = legacy; -var Base = cipherBase; -var Buffer$1 = safeBuffer$1.exports.Buffer; -var md5 = md5$1; -var RIPEMD160 = ripemd160; - -var sha = sha_js.exports; - -var ZEROS = Buffer$1.alloc(128); - -function Hmac (alg, key) { - Base.call(this, 'digest'); - if (typeof key === 'string') { - key = Buffer$1.from(key); - } - - var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64; - - this._alg = alg; - this._key = key; - if (key.length > blocksize) { - var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); - key = hash.update(key).digest(); - } else if (key.length < blocksize) { - key = Buffer$1.concat([key, ZEROS], blocksize); - } - - var ipad = this._ipad = Buffer$1.allocUnsafe(blocksize); - var opad = this._opad = Buffer$1.allocUnsafe(blocksize); - - for (var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36; - opad[i] = key[i] ^ 0x5C; - } - this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); - this._hash.update(ipad); -} - -inherits(Hmac, Base); - -Hmac.prototype._update = function (data) { - this._hash.update(data); -}; - -Hmac.prototype._final = function () { - var h = this._hash.digest(); - var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg); - return hash.update(this._opad).update(h).digest() -}; - -var browser$1 = function createHmac (alg, key) { - alg = alg.toLowerCase(); - if (alg === 'rmd160' || alg === 'ripemd160') { - return new Hmac('rmd160', key) - } - if (alg === 'md5') { - return new Legacy(md5, key) - } - return new Hmac(alg, key) -}; - -var naclFast = {exports: {}}; - -(function (module) { -(function(nacl) { - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (c ^ 1) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var 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 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = Math.floor((x[j] + 128) / 256); - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - return n; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES, - - gf: gf, - D: D, - L: L, - pack25519: pack25519, - unpack25519: unpack25519, - M: M, - A: A, - S: S, - Z: Z, - pow2523: pow2523, - add: add, - set25519: set25519, - modL: modL, - scalarmult: scalarmult, - scalarbase: scalarbase, -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - for (var i = 0; i < arguments.length; i++) { - if (!(arguments[i] instanceof Uint8Array)) - throw new TypeError('unexpected type, use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return null; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; - if (crypto && crypto.getRandomValues) { - // Browsers. - var QUOTA = 65536; - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - for (i = 0; i < n; i += QUOTA) { - crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); - } - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } else if (typeof commonjsRequire !== 'undefined') { - // Node.js. - crypto = require$$0$1; - if (crypto && crypto.randomBytes) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(module.exports ? module.exports : (self.nacl = self.nacl || {})); -}(naclFast)); - -var utils = {}; - -Object.defineProperty(utils, "__esModule", { value: true }); -utils.replaceDerive = utils.pathRegex = void 0; -utils.pathRegex = new RegExp("^m(\\/[0-9]+')+$"); -utils.replaceDerive = (val) => val.replace("'", ''); - -(function (exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.derivePath = exports.isValidPath = exports.getPublicKey = exports.getMasterKeyFromSeed = void 0; -const createHmac = browser$1; -const nacl = naclFast.exports; -const utils_1 = utils; -const ED25519_CURVE = 'ed25519 seed'; -const HARDENED_OFFSET = 0x80000000; -exports.getMasterKeyFromSeed = (seed) => { - const hmac = createHmac('sha512', ED25519_CURVE); - const I = hmac.update(Buffer$i.from(seed, 'hex')).digest(); - const IL = I.slice(0, 32); - const IR = I.slice(32); - return { - key: IL, - chainCode: IR, - }; -}; -const CKDPriv = ({ key, chainCode }, index) => { - const indexBuffer = Buffer$i.allocUnsafe(4); - indexBuffer.writeUInt32BE(index, 0); - const data = Buffer$i.concat([Buffer$i.alloc(1, 0), key, indexBuffer]); - const I = createHmac('sha512', chainCode) - .update(data) - .digest(); - const IL = I.slice(0, 32); - const IR = I.slice(32); - return { - key: IL, - chainCode: IR, - }; -}; -exports.getPublicKey = (privateKey, withZeroByte = true) => { - const keyPair = nacl.sign.keyPair.fromSeed(privateKey); - const signPk = keyPair.secretKey.subarray(32); - const zero = Buffer$i.alloc(1, 0); - return withZeroByte ? - Buffer$i.concat([zero, Buffer$i.from(signPk)]) : - Buffer$i.from(signPk); -}; -exports.isValidPath = (path) => { - if (!utils_1.pathRegex.test(path)) { - return false; - } - return !path - .split('/') - .slice(1) - .map(utils_1.replaceDerive) - .some(isNaN); -}; -exports.derivePath = (path, seed, offset = HARDENED_OFFSET) => { - if (!exports.isValidPath(path)) { - throw new Error('Invalid derivation path'); - } - const { key, chainCode } = exports.getMasterKeyFromSeed(seed); - const segments = path - .split('/') - .slice(1) - .map(utils_1.replaceDerive) - .map(el => parseInt(el, 10)); - return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode }); -}; -}(dist)); - -var bip32 = /*@__PURE__*/getDefaultExportFromCjs(dist); - -/** - * Create a wallet object for signing and verifying messages - * - * @param {Object} [args={}] Args Object - * @param {string} [args.sk=undefined] A 32 character long hex representation of a signing key (private key) to create wallet from - * @param {Uint8Array(length: 32)} [args.seed=null] A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be avoided by everyday users - * @param {boolean} [args.keepPrivate=false] No direct access to the sk. Will still allow the wallet to sign messages - * @return {Object} Wallet Object with sign and verify methods - */ -let create_wallet = (args = {}) => { - let { sk = undefined, keepPrivate = false, seed = null } = args; - - let vk; - - if (sk) { - vk = get_vk(sk); - } else { - let keyPair = new_wallet(seed); - vk = keyPair.vk; - sk = keyPair.sk; - } - - const wallet = () => { - return { - sign: (msg) => sign(sk, msg), - verify: (msg, sig) => verify(vk, msg, sig), - vk, - sk: !keepPrivate ? sk : undefined, - }; - }; - - return wallet(); -}; - -/** - * @param Uint8Array(length: 32) seed - * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be - * avoided by everyday users - * - * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - */ -function generate_keys(seed = null) { - var kp = null; - if (seed == null) { - kp = nacl.sign.keyPair(); - } else { - kp = nacl.sign.keyPair.fromSeed(seed); - } - // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey - // and the vk is the last 32 bytes of the secretKey as well as the publicKey - // { - // 'publicKey': , - // 'secretKey': - // } - return { - sk: new Uint8Array(kp["secretKey"].slice(0, 32)), - vk: new Uint8Array(kp["secretKey"].slice(32, 64)), - }; -} -/** - * @param String sk - * sk: A 64 character long hex representation of a signing key (private key) - * - * @return String vk - * vk: A 64 character long hex representation of a verify key (public key) - */ -function get_vk(sk) { - var kp = format_to_keys(sk); - var kpf = keys_to_format(kp); - return kpf.vk; -} -/** - * @param String sk - * sk: A 64 character long hex representation of a signing key (private key) - * - * @return {Uint8Array(length: 32), Uint8Array(length: 32)} { vk, sk } - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - */ -function format_to_keys(sk) { - var skf = hex2buf(sk); - var kp = generate_keys(skf); - return kp; -} -/** - * @param Object kp - * kp: Object containing the properties sk and vk - * sk: Signing Key (SK) represents 32 byte signing key - * vk: Verify Key (VK) represents a 32 byte verify key - * - * @return {string, string} { sk, vk } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - */ -function keys_to_format(kp) { - return { - vk: buf2hex(kp.vk), - sk: buf2hex(kp.sk), - }; -} -/** - * @param Uint8Array(length: 32) seed - * seed: A Uint8Array with a length of 32 to seed the keyPair with. This is advanced behavior and should be - * avoided by everyday users - * - * @return {string, string} { sk, vk } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - */ -function new_wallet(seed = null) { - const keys = generate_keys(seed); - return keys_to_format(keys); -} - -/** - * - * @param mnemonic 24 word seed phrase - * @param derivationIndex bip32 derivation key index - * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} - * derivationIndex: bip32 derivation key index - * vk: Verify Key (VK) represented as a 64 character hex string - * sk: Signing Key (SK) represented as a 64 character hex string - * mnemonic: 24 word seed phrase - - */ -function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { - let finalMnemonic; - - if (mnemonic !== undefined) { - finalMnemonic = mnemonic; - } else { - finalMnemonic = bip39_browser.exports.generateMnemonic(256); - } - - const seed = bip39_browser.exports.mnemonicToSeedSync(finalMnemonic).toString("hex"); - - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32.derivePath(derivationPath, seed, 0x80000000); - - const privateKey = key.toString("hex"); - const publicKey = bip32.getPublicKey(key, false).toString("hex"); - - if (publicKey !== get_vk(privateKey)) { - throw Error("Bip32 public key does not match with Lamden public key!"); - } - - return { - sk: privateKey, - vk: publicKey, - derivationIndex: derivationIndex, - mnemonic: finalMnemonic, - }; -} - -/** - * @param mnemonic 24 word seed phrase - * @param derivationIndex bip32 derivation key index - * - * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } - * sk: Signing Key (SK) represented as a 64 character hex string - * vk: Verify Key (VK) represented as a 64 character hex string - * derivationIndex: Bip32 derivation index - * mnemonic: 24 word seed phrase - */ -function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); -} - -/** - * @param String sk - * @param Uint8Array msg - * sk: A 64 character long hex representation of a signing key (private key) - * msg: A Uint8Array of bytes representing the message you would like to sign - * - * @return String sig - * sig: A 128 character long hex string representing the message's signature - */ -function sign(sk, msg) { - var kp = format_to_keys(sk); - // This is required due to the secretKey required to sign a transaction - // in the js implementation of NaCL being the combination of the sk and - // vk for some stupid reason. That being said, we still want the sk and - // vk objects to exist in 32-byte string format (same as cilantro's - // python implementation) when presented to the user. - var jsnacl_sk = concatUint8Arrays(kp.sk, kp.vk); - return buf2hex(nacl.sign.detached(msg, jsnacl_sk)); -} -/** - * @param String vk - * @param Uint8Array msg - * @param String sig - * vk: A 64 character long hex representation of a verify key (public key) - * msg: A Uint8Array (bytes) representation of a message that has been signed - * sig: A 128 character long hex representation of a nacl signature - * - * @return Bool result - * result: true if verify checked out, false if not - */ -function verify(vk, msg, sig) { - var vkb = hex2buf(vk); - var sigb = hex2buf(sig); - try { - return nacl.sign.detached.verify(msg, sigb, vkb); - } catch (_a) { - return false; - } -} - -var wallet = /*#__PURE__*/Object.freeze({ - __proto__: null, - create_wallet: create_wallet, - generate_keys: generate_keys, - get_vk: get_vk, - format_to_keys: format_to_keys, - keys_to_format: keys_to_format, - new_wallet: new_wallet, - new_wallet_bip39: new_wallet_bip39, - sign: sign, - verify: verify -}); - -class EventEmitter { - constructor() { - this._events = {}; - } - - on(name, listener) { - if (!this._events[name]) { - this._events[name] = []; - } - - this._events[name].push(listener); - } - - removeListener(name, listenerToRemove) { - if (!this._events[name]) { - throw new Error(`Can't remove a listener. Event "${name}" doesn't exits.`); - } - - const filterListeners = (listener) => listener !== listenerToRemove; - this._events[name] = this._events[name].filter(filterListeners); - } - - emit(name, data) { - if (!this._events[name]) return - - const fireCallbacks = (callback) => { - callback(data); - }; - - this._events[name].forEach(fireCallbacks); - } - } - -var browser = {exports: {}}; - -(function (module, exports) { - -// ref: https://github.com/tc39/proposal-global -var getGlobal = function () { - // the only reliable means to get the global object is - // `Function('return this')()` - // However, this causes CSP violations in Chrome apps. - if (typeof self !== 'undefined') { return self; } - if (typeof window !== 'undefined') { return window; } - if (typeof global !== 'undefined') { return global; } - throw new Error('unable to locate global object'); -}; - -var global = getGlobal(); - -module.exports = exports = global.fetch; - -// Needed for TypeScript and Webpack. -if (global.fetch) { - exports.default = global.fetch.bind(global); -} - -exports.Headers = global.Headers; -exports.Request = global.Request; -exports.Response = global.Response; -}(browser, browser.exports)); - -var fetch = browser.exports; - -var bignumber = {exports: {}}; - -(function (module) { -(function (globalObject) { - -/* - * bignumber.js v9.0.0 - * A JavaScript library for arbitrary-precision arithmetic. - * https://github.com/MikeMcl/bignumber.js - * Copyright (c) 2019 Michael Mclaughlin - * MIT Licensed. - * - * BigNumber.prototype methods | BigNumber methods - * | - * absoluteValue abs | clone - * comparedTo | config set - * decimalPlaces dp | DECIMAL_PLACES - * dividedBy div | ROUNDING_MODE - * dividedToIntegerBy idiv | EXPONENTIAL_AT - * exponentiatedBy pow | RANGE - * integerValue | CRYPTO - * isEqualTo eq | MODULO_MODE - * isFinite | POW_PRECISION - * isGreaterThan gt | FORMAT - * isGreaterThanOrEqualTo gte | ALPHABET - * isInteger | isBigNumber - * isLessThan lt | maximum max - * isLessThanOrEqualTo lte | minimum min - * isNaN | random - * isNegative | sum - * isPositive | - * isZero | - * minus | - * modulo mod | - * multipliedBy times | - * negated | - * plus | - * precision sd | - * shiftedBy | - * squareRoot sqrt | - * toExponential | - * toFixed | - * toFormat | - * toFraction | - * toJSON | - * toNumber | - * toPrecision | - * toString | - * valueOf | - * - */ - - - var BigNumber, - isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, - mathceil = Math.ceil, - mathfloor = Math.floor, - - bignumberError = '[BigNumber Error] ', - tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ', - - BASE = 1e14, - LOG_BASE = 14, - MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 - // MAX_INT32 = 0x7fffffff, // 2^31 - 1 - POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], - SQRT_BASE = 1e7, - - // EDITABLE - // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and - // the arguments to toExponential, toFixed, toFormat, and toPrecision. - MAX = 1E9; // 0 to MAX_INT32 - - - /* - * Create and return a BigNumber constructor. - */ - function clone(configObject) { - var div, convertBase, parseNumeric, - P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null }, - ONE = new BigNumber(1), - - - //----------------------------- EDITABLE CONFIG DEFAULTS ------------------------------- - - - // The default values below must be integers within the inclusive ranges stated. - // The values can also be changed at run-time using BigNumber.set. - - // The maximum number of decimal places for operations involving division. - DECIMAL_PLACES = 20, // 0 to MAX - - // The rounding mode used when rounding to the above decimal places, and when using - // toExponential, toFixed, toFormat and toPrecision, and round (default value). - // UP 0 Away from zero. - // DOWN 1 Towards zero. - // CEIL 2 Towards +Infinity. - // FLOOR 3 Towards -Infinity. - // HALF_UP 4 Towards nearest neighbour. If equidistant, up. - // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - ROUNDING_MODE = 4, // 0 to 8 - - // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] - - // The exponent value at and beneath which toString returns exponential notation. - // Number type: -7 - TO_EXP_NEG = -7, // 0 to -MAX - - // The exponent value at and above which toString returns exponential notation. - // Number type: 21 - TO_EXP_POS = 21, // 0 to MAX - - // RANGE : [MIN_EXP, MAX_EXP] - - // The minimum exponent value, beneath which underflow to zero occurs. - // Number type: -324 (5e-324) - MIN_EXP = -1e7, // -1 to -MAX - - // The maximum exponent value, above which overflow to Infinity occurs. - // Number type: 308 (1.7976931348623157e+308) - // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. - MAX_EXP = 1e7, // 1 to MAX - - // Whether to use cryptographically-secure random number generation, if available. - CRYPTO = false, // true or false - - // The modulo mode used when calculating the modulus: a mod n. - // The quotient (q = a / n) is calculated according to the corresponding rounding mode. - // The remainder (r) is calculated as: r = a - n * q. - // - // UP 0 The remainder is positive if the dividend is negative, else is negative. - // DOWN 1 The remainder has the same sign as the dividend. - // This modulo mode is commonly known as 'truncated division' and is - // equivalent to (a % n) in JavaScript. - // FLOOR 3 The remainder has the same sign as the divisor (Python %). - // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. - // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). - // The remainder is always positive. - // - // The truncated division, floored division, Euclidian division and IEEE 754 remainder - // modes are commonly used for the modulus operation. - // Although the other rounding modes can also be used, they may not give useful results. - MODULO_MODE = 1, // 0 to 9 - - // The maximum number of significant digits of the result of the exponentiatedBy operation. - // If POW_PRECISION is 0, there will be unlimited significant digits. - POW_PRECISION = 0, // 0 to MAX - - // The format specification used by the BigNumber.prototype.toFormat method. - FORMAT = { - prefix: '', - groupSize: 3, - secondaryGroupSize: 0, - groupSeparator: ',', - decimalSeparator: '.', - fractionGroupSize: 0, - fractionGroupSeparator: '\xA0', // non-breaking space - suffix: '' - }, - - // The alphabet used for base conversion. It must be at least 2 characters long, with no '+', - // '-', '.', whitespace, or repeated character. - // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' - ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; - - - //------------------------------------------------------------------------------------------ - - - // CONSTRUCTOR - - - /* - * The BigNumber constructor and exported function. - * Create and return a new instance of a BigNumber object. - * - * v {number|string|BigNumber} A numeric value. - * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive. - */ - function BigNumber(v, b) { - var alphabet, c, caseChanged, e, i, isNum, len, str, - x = this; - - // Enable constructor call without `new`. - if (!(x instanceof BigNumber)) return new BigNumber(v, b); - - if (b == null) { - - if (v && v._isBigNumber === true) { - x.s = v.s; - - if (!v.c || v.e > MAX_EXP) { - x.c = x.e = null; - } else if (v.e < MIN_EXP) { - x.c = [x.e = 0]; - } else { - x.e = v.e; - x.c = v.c.slice(); - } - - return; - } - - if ((isNum = typeof v == 'number') && v * 0 == 0) { - - // Use `1 / n` to handle minus zero also. - x.s = 1 / v < 0 ? (v = -v, -1) : 1; - - // Fast path for integers, where n < 2147483648 (2**31). - if (v === ~~v) { - for (e = 0, i = v; i >= 10; i /= 10, e++); - - if (e > MAX_EXP) { - x.c = x.e = null; - } else { - x.e = e; - x.c = [v]; - } - - return; - } - - str = String(v); - } else { - - if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum); - - x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; - } - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - - // Exponential form? - if ((i = str.search(/e/i)) > 0) { - - // Determine exponent. - if (e < 0) e = i; - e += +str.slice(i + 1); - str = str.substring(0, i); - } else if (e < 0) { - - // Integer. - e = str.length; - } - - } else { - - // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' - intCheck(b, 2, ALPHABET.length, 'Base'); - - // Allow exponential notation to be used with base 10 argument, while - // also rounding to DECIMAL_PLACES as with other bases. - if (b == 10) { - x = new BigNumber(v); - return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE); - } - - str = String(v); - - if (isNum = typeof v == 'number') { - - // Avoid potential interpretation of Infinity and NaN as base 44+ values. - if (v * 0 != 0) return parseNumeric(x, str, isNum, b); - - x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; - - // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' - if (BigNumber.DEBUG && str.replace(/^0\.0*|\./, '').length > 15) { - throw Error - (tooManyDigits + v); - } - } else { - x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; - } - - alphabet = ALPHABET.slice(0, b); - e = i = 0; - - // Check that str is a valid base b number. - // Don't use RegExp, so alphabet can contain special characters. - for (len = str.length; i < len; i++) { - if (alphabet.indexOf(c = str.charAt(i)) < 0) { - if (c == '.') { - - // If '.' is not the first character and it has not be found before. - if (i > e) { - e = len; - continue; - } - } else if (!caseChanged) { - - // Allow e.g. hexadecimal 'FF' as well as 'ff'. - if (str == str.toUpperCase() && (str = str.toLowerCase()) || - str == str.toLowerCase() && (str = str.toUpperCase())) { - caseChanged = true; - i = -1; - e = 0; - continue; - } - } - - return parseNumeric(x, String(v), isNum, b); - } - } - - // Prevent later check for length on converted number. - isNum = false; - str = convertBase(str, b, 10, x.s); - - // Decimal point? - if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); - else e = str.length; - } - - // Determine leading zeros. - for (i = 0; str.charCodeAt(i) === 48; i++); - - // Determine trailing zeros. - for (len = str.length; str.charCodeAt(--len) === 48;); - - if (str = str.slice(i, ++len)) { - len -= i; - - // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' - if (isNum && BigNumber.DEBUG && - len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { - throw Error - (tooManyDigits + (x.s * v)); - } - - // Overflow? - if ((e = e - i - 1) > MAX_EXP) { - - // Infinity. - x.c = x.e = null; - - // Underflow? - } else if (e < MIN_EXP) { - - // Zero. - x.c = [x.e = 0]; - } else { - x.e = e; - x.c = []; - - // Transform base - - // e is the base 10 exponent. - // i is where to slice str to get the first element of the coefficient array. - i = (e + 1) % LOG_BASE; - if (e < 0) i += LOG_BASE; // i < 1 - - if (i < len) { - if (i) x.c.push(+str.slice(0, i)); - - for (len -= LOG_BASE; i < len;) { - x.c.push(+str.slice(i, i += LOG_BASE)); - } - - i = LOG_BASE - (str = str.slice(i)).length; - } else { - i -= len; - } - - for (; i--; str += '0'); - x.c.push(+str); - } - } else { - - // Zero. - x.c = [x.e = 0]; - } - } - - - // CONSTRUCTOR PROPERTIES - - - BigNumber.clone = clone; - - BigNumber.ROUND_UP = 0; - BigNumber.ROUND_DOWN = 1; - BigNumber.ROUND_CEIL = 2; - BigNumber.ROUND_FLOOR = 3; - BigNumber.ROUND_HALF_UP = 4; - BigNumber.ROUND_HALF_DOWN = 5; - BigNumber.ROUND_HALF_EVEN = 6; - BigNumber.ROUND_HALF_CEIL = 7; - BigNumber.ROUND_HALF_FLOOR = 8; - BigNumber.EUCLID = 9; - - - /* - * Configure infrequently-changing library-wide settings. - * - * Accept an object with the following optional properties (if the value of a property is - * a number, it must be an integer within the inclusive range stated): - * - * DECIMAL_PLACES {number} 0 to MAX - * ROUNDING_MODE {number} 0 to 8 - * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX] - * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX] - * CRYPTO {boolean} true or false - * MODULO_MODE {number} 0 to 9 - * POW_PRECISION {number} 0 to MAX - * ALPHABET {string} A string of two or more unique characters which does - * not contain '.'. - * FORMAT {object} An object with some of the following properties: - * prefix {string} - * groupSize {number} - * secondaryGroupSize {number} - * groupSeparator {string} - * decimalSeparator {string} - * fractionGroupSize {number} - * fractionGroupSeparator {string} - * suffix {string} - * - * (The values assigned to the above FORMAT object properties are not checked for validity.) - * - * E.g. - * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) - * - * Ignore properties/parameters set to null or undefined, except for ALPHABET. - * - * Return an object with the properties current values. - */ - BigNumber.config = BigNumber.set = function (obj) { - var p, v; - - if (obj != null) { - - if (typeof obj == 'object') { - - // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. - // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) { - v = obj[p]; - intCheck(v, 0, MAX, p); - DECIMAL_PLACES = v; - } - - // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. - // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) { - v = obj[p]; - intCheck(v, 0, 8, p); - ROUNDING_MODE = v; - } - - // EXPONENTIAL_AT {number|number[]} - // Integer, -MAX to MAX inclusive or - // [integer -MAX to 0 inclusive, 0 to MAX inclusive]. - // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) { - v = obj[p]; - if (v && v.pop) { - intCheck(v[0], -MAX, 0, p); - intCheck(v[1], 0, MAX, p); - TO_EXP_NEG = v[0]; - TO_EXP_POS = v[1]; - } else { - intCheck(v, -MAX, MAX, p); - TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); - } - } - - // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or - // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. - // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}' - if (obj.hasOwnProperty(p = 'RANGE')) { - v = obj[p]; - if (v && v.pop) { - intCheck(v[0], -MAX, -1, p); - intCheck(v[1], 1, MAX, p); - MIN_EXP = v[0]; - MAX_EXP = v[1]; - } else { - intCheck(v, -MAX, MAX, p); - if (v) { - MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); - } else { - throw Error - (bignumberError + p + ' cannot be zero: ' + v); - } - } - } - - // CRYPTO {boolean} true or false. - // '[BigNumber Error] CRYPTO not true or false: {v}' - // '[BigNumber Error] crypto unavailable' - if (obj.hasOwnProperty(p = 'CRYPTO')) { - v = obj[p]; - if (v === !!v) { - if (v) { - if (typeof crypto != 'undefined' && crypto && - (crypto.getRandomValues || crypto.randomBytes)) { - CRYPTO = v; - } else { - CRYPTO = !v; - throw Error - (bignumberError + 'crypto unavailable'); - } - } else { - CRYPTO = v; - } - } else { - throw Error - (bignumberError + p + ' not true or false: ' + v); - } - } - - // MODULO_MODE {number} Integer, 0 to 9 inclusive. - // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'MODULO_MODE')) { - v = obj[p]; - intCheck(v, 0, 9, p); - MODULO_MODE = v; - } - - // POW_PRECISION {number} Integer, 0 to MAX inclusive. - // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}' - if (obj.hasOwnProperty(p = 'POW_PRECISION')) { - v = obj[p]; - intCheck(v, 0, MAX, p); - POW_PRECISION = v; - } - - // FORMAT {object} - // '[BigNumber Error] FORMAT not an object: {v}' - if (obj.hasOwnProperty(p = 'FORMAT')) { - v = obj[p]; - if (typeof v == 'object') FORMAT = v; - else throw Error - (bignumberError + p + ' not an object: ' + v); - } - - // ALPHABET {string} - // '[BigNumber Error] ALPHABET invalid: {v}' - if (obj.hasOwnProperty(p = 'ALPHABET')) { - v = obj[p]; - - // Disallow if only one character, - // or if it contains '+', '-', '.', whitespace, or a repeated character. - if (typeof v == 'string' && !/^.$|[+-.\s]|(.).*\1/.test(v)) { - ALPHABET = v; - } else { - throw Error - (bignumberError + p + ' invalid: ' + v); - } - } - - } else { - - // '[BigNumber Error] Object expected: {v}' - throw Error - (bignumberError + 'Object expected: ' + obj); - } - } - - return { - DECIMAL_PLACES: DECIMAL_PLACES, - ROUNDING_MODE: ROUNDING_MODE, - EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], - RANGE: [MIN_EXP, MAX_EXP], - CRYPTO: CRYPTO, - MODULO_MODE: MODULO_MODE, - POW_PRECISION: POW_PRECISION, - FORMAT: FORMAT, - ALPHABET: ALPHABET - }; - }; - - - /* - * Return true if v is a BigNumber instance, otherwise return false. - * - * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed. - * - * v {any} - * - * '[BigNumber Error] Invalid BigNumber: {v}' - */ - BigNumber.isBigNumber = function (v) { - if (!v || v._isBigNumber !== true) return false; - if (!BigNumber.DEBUG) return true; - - var i, n, - c = v.c, - e = v.e, - s = v.s; - - out: if ({}.toString.call(c) == '[object Array]') { - - if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) { - - // If the first element is zero, the BigNumber value must be zero. - if (c[0] === 0) { - if (e === 0 && c.length === 1) return true; - break out; - } - - // Calculate number of digits that c[0] should have, based on the exponent. - i = (e + 1) % LOG_BASE; - if (i < 1) i += LOG_BASE; - - // Calculate number of digits of c[0]. - //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) { - if (String(c[0]).length == i) { - - for (i = 0; i < c.length; i++) { - n = c[i]; - if (n < 0 || n >= BASE || n !== mathfloor(n)) break out; - } - - // Last element cannot be zero, unless it is the only element. - if (n !== 0) return true; - } - } - - // Infinity/NaN - } else if (c === null && e === null && (s === null || s === 1 || s === -1)) { - return true; - } - - throw Error - (bignumberError + 'Invalid BigNumber: ' + v); - }; - - - /* - * Return a new BigNumber whose value is the maximum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.maximum = BigNumber.max = function () { - return maxOrMin(arguments, P.lt); - }; - - - /* - * Return a new BigNumber whose value is the minimum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.minimum = BigNumber.min = function () { - return maxOrMin(arguments, P.gt); - }; - - - /* - * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, - * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing - * zeros are produced). - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}' - * '[BigNumber Error] crypto unavailable' - */ - BigNumber.random = (function () { - var pow2_53 = 0x20000000000000; - - // Return a 53 bit integer n, where 0 <= n < 9007199254740992. - // Check if Math.random() produces more than 32 bits of randomness. - // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. - // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. - var random53bitInt = (Math.random() * pow2_53) & 0x1fffff - ? function () { return mathfloor(Math.random() * pow2_53); } - : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + - (Math.random() * 0x800000 | 0); }; - - return function (dp) { - var a, b, e, k, v, - i = 0, - c = [], - rand = new BigNumber(ONE); - - if (dp == null) dp = DECIMAL_PLACES; - else intCheck(dp, 0, MAX); - - k = mathceil(dp / LOG_BASE); - - if (CRYPTO) { - - // Browsers supporting crypto.getRandomValues. - if (crypto.getRandomValues) { - - a = crypto.getRandomValues(new Uint32Array(k *= 2)); - - for (; i < k;) { - - // 53 bits: - // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) - // 11111 11111111 11111111 11111111 11100000 00000000 00000000 - // ((Math.pow(2, 32) - 1) >>> 11).toString(2) - // 11111 11111111 11111111 - // 0x20000 is 2^21. - v = a[i] * 0x20000 + (a[i + 1] >>> 11); - - // Rejection sampling: - // 0 <= v < 9007199254740992 - // Probability that v >= 9e15, is - // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 - if (v >= 9e15) { - b = crypto.getRandomValues(new Uint32Array(2)); - a[i] = b[0]; - a[i + 1] = b[1]; - } else { - - // 0 <= v <= 8999999999999999 - // 0 <= (v % 1e14) <= 99999999999999 - c.push(v % 1e14); - i += 2; - } - } - i = k / 2; - - // Node.js supporting crypto.randomBytes. - } else if (crypto.randomBytes) { - - // buffer - a = crypto.randomBytes(k *= 7); - - for (; i < k;) { - - // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 - // 0x100000000 is 2^32, 0x1000000 is 2^24 - // 11111 11111111 11111111 11111111 11111111 11111111 11111111 - // 0 <= v < 9007199254740992 - v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) + - (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) + - (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6]; - - if (v >= 9e15) { - crypto.randomBytes(7).copy(a, i); - } else { - - // 0 <= (v % 1e14) <= 99999999999999 - c.push(v % 1e14); - i += 7; - } - } - i = k / 7; - } else { - CRYPTO = false; - throw Error - (bignumberError + 'crypto unavailable'); - } - } - - // Use Math.random. - if (!CRYPTO) { - - for (; i < k;) { - v = random53bitInt(); - if (v < 9e15) c[i++] = v % 1e14; - } - } - - k = c[--i]; - dp %= LOG_BASE; - - // Convert trailing digits to zeros according to dp. - if (k && dp) { - v = POWS_TEN[LOG_BASE - dp]; - c[i] = mathfloor(k / v) * v; - } - - // Remove trailing elements which are zero. - for (; c[i] === 0; c.pop(), i--); - - // Zero? - if (i < 0) { - c = [e = 0]; - } else { - - // Remove leading elements which are zero and adjust exponent accordingly. - for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE); - - // Count the digits of the first element of c to determine leading zeros, and... - for (i = 1, v = c[0]; v >= 10; v /= 10, i++); - - // adjust the exponent accordingly. - if (i < LOG_BASE) e -= LOG_BASE - i; - } - - rand.e = e; - rand.c = c; - return rand; - }; - })(); - - - /* - * Return a BigNumber whose value is the sum of the arguments. - * - * arguments {number|string|BigNumber} - */ - BigNumber.sum = function () { - var i = 1, - args = arguments, - sum = new BigNumber(args[0]); - for (; i < args.length;) sum = sum.plus(args[i++]); - return sum; - }; - - - // PRIVATE FUNCTIONS - - - // Called by BigNumber and BigNumber.prototype.toString. - convertBase = (function () { - var decimal = '0123456789'; - - /* - * Convert string of baseIn to an array of numbers of baseOut. - * Eg. toBaseOut('255', 10, 16) returns [15, 15]. - * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5]. - */ - function toBaseOut(str, baseIn, baseOut, alphabet) { - var j, - arr = [0], - arrL, - i = 0, - len = str.length; - - for (; i < len;) { - for (arrL = arr.length; arrL--; arr[arrL] *= baseIn); - - arr[0] += alphabet.indexOf(str.charAt(i++)); - - for (j = 0; j < arr.length; j++) { - - if (arr[j] > baseOut - 1) { - if (arr[j + 1] == null) arr[j + 1] = 0; - arr[j + 1] += arr[j] / baseOut | 0; - arr[j] %= baseOut; - } - } - } - - return arr.reverse(); - } - - // Convert a numeric string of baseIn to a numeric string of baseOut. - // If the caller is toString, we are converting from base 10 to baseOut. - // If the caller is BigNumber, we are converting from baseIn to base 10. - return function (str, baseIn, baseOut, sign, callerIsToString) { - var alphabet, d, e, k, r, x, xc, y, - i = str.indexOf('.'), - dp = DECIMAL_PLACES, - rm = ROUNDING_MODE; - - // Non-integer. - if (i >= 0) { - k = POW_PRECISION; - - // Unlimited precision. - POW_PRECISION = 0; - str = str.replace('.', ''); - y = new BigNumber(baseIn); - x = y.pow(str.length - i); - POW_PRECISION = k; - - // Convert str as if an integer, then restore the fraction part by dividing the - // result by its base raised to a power. - - y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'), - 10, baseOut, decimal); - y.e = y.c.length; - } - - // Convert the number as integer. - - xc = toBaseOut(str, baseIn, baseOut, callerIsToString - ? (alphabet = ALPHABET, decimal) - : (alphabet = decimal, ALPHABET)); - - // xc now represents str as an integer and converted to baseOut. e is the exponent. - e = k = xc.length; - - // Remove trailing zeros. - for (; xc[--k] == 0; xc.pop()); - - // Zero? - if (!xc[0]) return alphabet.charAt(0); - - // Does str represent an integer? If so, no need for the division. - if (i < 0) { - --e; - } else { - x.c = xc; - x.e = e; - - // The sign is needed for correct rounding. - x.s = sign; - x = div(x, y, dp, rm, baseOut); - xc = x.c; - r = x.r; - e = x.e; - } - - // xc now represents str converted to baseOut. - - // THe index of the rounding digit. - d = e + dp + 1; - - // The rounding digit: the digit to the right of the digit that may be rounded up. - i = xc[d]; - - // Look at the rounding digits and mode to determine whether to round up. - - k = baseOut / 2; - r = r || d < 0 || xc[d + 1] != null; - - r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 || - rm == (x.s < 0 ? 8 : 7)); - - // If the index of the rounding digit is not greater than zero, or xc represents - // zero, then the result of the base conversion is zero or, if rounding up, a value - // such as 0.00001. - if (d < 1 || !xc[0]) { - - // 1^-dp or 0 - str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); - } else { - - // Truncate xc to the required number of decimal places. - xc.length = d; - - // Round up? - if (r) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for (--baseOut; ++xc[--d] > baseOut;) { - xc[d] = 0; - - if (!d) { - ++e; - xc = [1].concat(xc); - } - } - } - - // Determine trailing zeros. - for (k = xc.length; !xc[--k];); - - // E.g. [4, 11, 15] becomes 4bf. - for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++])); - - // Add leading zeros, decimal point and trailing zeros as required. - str = toFixedPoint(str, e, alphabet.charAt(0)); - } - - // The caller will add the sign. - return str; - }; - })(); - - - // Perform division in the specified base. Called by div and convertBase. - div = (function () { - - // Assume non-zero x and k. - function multiply(x, k, base) { - var m, temp, xlo, xhi, - carry = 0, - i = x.length, - klo = k % SQRT_BASE, - khi = k / SQRT_BASE | 0; - - for (x = x.slice(); i--;) { - xlo = x[i] % SQRT_BASE; - xhi = x[i] / SQRT_BASE | 0; - m = khi * xlo + xhi * klo; - temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry; - carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi; - x[i] = temp % base; - } - - if (carry) x = [carry].concat(x); - - return x; - } - - function compare(a, b, aL, bL) { - var i, cmp; - - if (aL != bL) { - cmp = aL > bL ? 1 : -1; - } else { - - for (i = cmp = 0; i < aL; i++) { - - if (a[i] != b[i]) { - cmp = a[i] > b[i] ? 1 : -1; - break; - } - } - } - - return cmp; - } - - function subtract(a, b, aL, base) { - var i = 0; - - // Subtract b from a. - for (; aL--;) { - a[aL] -= i; - i = a[aL] < b[aL] ? 1 : 0; - a[aL] = i * base + a[aL] - b[aL]; - } - - // Remove leading zeros. - for (; !a[0] && a.length > 1; a.splice(0, 1)); - } - - // x: dividend, y: divisor. - return function (x, y, dp, rm, base) { - var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, - yL, yz, - s = x.s == y.s ? 1 : -1, - xc = x.c, - yc = y.c; - - // Either NaN, Infinity or 0? - if (!xc || !xc[0] || !yc || !yc[0]) { - - return new BigNumber( - - // Return NaN if either NaN, or both Infinity or 0. - !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : - - // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. - xc && xc[0] == 0 || !yc ? s * 0 : s / 0 - ); - } - - q = new BigNumber(s); - qc = q.c = []; - e = x.e - y.e; - s = dp + e + 1; - - if (!base) { - base = BASE; - e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); - s = s / LOG_BASE | 0; - } - - // Result exponent may be one less then the current value of e. - // The coefficients of the BigNumbers from convertBase may have trailing zeros. - for (i = 0; yc[i] == (xc[i] || 0); i++); - - if (yc[i] > (xc[i] || 0)) e--; - - if (s < 0) { - qc.push(1); - more = true; - } else { - xL = xc.length; - yL = yc.length; - i = 0; - s += 2; - - // Normalise xc and yc so highest order digit of yc is >= base / 2. - - n = mathfloor(base / (yc[0] + 1)); - - // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1. - // if (n > 1 || n++ == 1 && yc[0] < base / 2) { - if (n > 1) { - yc = multiply(yc, n, base); - xc = multiply(xc, n, base); - yL = yc.length; - xL = xc.length; - } - - xi = yL; - rem = xc.slice(0, yL); - remL = rem.length; - - // Add zeros to make remainder as long as divisor. - for (; remL < yL; rem[remL++] = 0); - yz = yc.slice(); - yz = [0].concat(yz); - yc0 = yc[0]; - if (yc[1] >= base / 2) yc0++; - // Not necessary, but to prevent trial digit n > base, when using base 3. - // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15; - - do { - n = 0; - - // Compare divisor and remainder. - cmp = compare(yc, rem, yL, remL); - - // If divisor < remainder. - if (cmp < 0) { - - // Calculate trial digit, n. - - rem0 = rem[0]; - if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); - - // n is how many times the divisor goes into the current remainder. - n = mathfloor(rem0 / yc0); - - // Algorithm: - // product = divisor multiplied by trial digit (n). - // Compare product and remainder. - // If product is greater than remainder: - // Subtract divisor from product, decrement trial digit. - // Subtract product from remainder. - // If product was less than remainder at the last compare: - // Compare new remainder and divisor. - // If remainder is greater than divisor: - // Subtract divisor from remainder, increment trial digit. - - if (n > 1) { - - // n may be > base only when base is 3. - if (n >= base) n = base - 1; - - // product = divisor * trial digit. - prod = multiply(yc, n, base); - prodL = prod.length; - remL = rem.length; - - // Compare product and remainder. - // If product > remainder then trial digit n too high. - // n is 1 too high about 5% of the time, and is not known to have - // ever been more than 1 too high. - while (compare(prod, rem, prodL, remL) == 1) { - n--; - - // Subtract divisor from product. - subtract(prod, yL < prodL ? yz : yc, prodL, base); - prodL = prod.length; - cmp = 1; - } - } else { - - // n is 0 or 1, cmp is -1. - // If n is 0, there is no need to compare yc and rem again below, - // so change cmp to 1 to avoid it. - // If n is 1, leave cmp as -1, so yc and rem are compared again. - if (n == 0) { - - // divisor < remainder, so n must be at least 1. - cmp = n = 1; - } - - // product = divisor - prod = yc.slice(); - prodL = prod.length; - } - - if (prodL < remL) prod = [0].concat(prod); - - // Subtract product from remainder. - subtract(rem, prod, remL, base); - remL = rem.length; - - // If product was < remainder. - if (cmp == -1) { - - // Compare divisor and new remainder. - // If divisor < new remainder, subtract divisor from remainder. - // Trial digit n too low. - // n is 1 too low about 5% of the time, and very rarely 2 too low. - while (compare(yc, rem, yL, remL) < 1) { - n++; - - // Subtract divisor from remainder. - subtract(rem, yL < remL ? yz : yc, remL, base); - remL = rem.length; - } - } - } else if (cmp === 0) { - n++; - rem = [0]; - } // else cmp === 1 and n will be 0 - - // Add the next digit, n, to the result array. - qc[i++] = n; - - // Update the remainder. - if (rem[0]) { - rem[remL++] = xc[xi] || 0; - } else { - rem = [xc[xi]]; - remL = 1; - } - } while ((xi++ < xL || rem[0] != null) && s--); - - more = rem[0] != null; - - // Leading zero? - if (!qc[0]) qc.splice(0, 1); - } - - if (base == BASE) { - - // To calculate q.e, first get the number of digits of qc[0]. - for (i = 1, s = qc[0]; s >= 10; s /= 10, i++); - - round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more); - - // Caller is convertBase. - } else { - q.e = e; - q.r = +more; - } - - return q; - }; - })(); - - - /* - * Return a string representing the value of BigNumber n in fixed-point or exponential - * notation rounded to the specified decimal places or significant digits. - * - * n: a BigNumber. - * i: the index of the last digit required (i.e. the digit that may be rounded up). - * rm: the rounding mode. - * id: 1 (toExponential) or 2 (toPrecision). - */ - function format(n, i, rm, id) { - var c0, e, ne, len, str; - - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - if (!n.c) return n.toString(); - - c0 = n.c[0]; - ne = n.e; - - if (i == null) { - str = coeffToString(n.c); - str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) - ? toExponential(str, ne) - : toFixedPoint(str, ne, '0'); - } else { - n = round(new BigNumber(n), i, rm); - - // n.e may have changed if the value was rounded up. - e = n.e; - - str = coeffToString(n.c); - len = str.length; - - // toPrecision returns exponential notation if the number of significant digits - // specified is less than the number of digits necessary to represent the integer - // part of the value in fixed-point notation. - - // Exponential notation. - if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) { - - // Append zeros? - for (; len < i; str += '0', len++); - str = toExponential(str, e); - - // Fixed-point notation. - } else { - i -= ne; - str = toFixedPoint(str, e, '0'); - - // Append zeros? - if (e + 1 > len) { - if (--i > 0) for (str += '.'; i--; str += '0'); - } else { - i += e - len; - if (i > 0) { - if (e + 1 == len) str += '.'; - for (; i--; str += '0'); - } - } - } - } - - return n.s < 0 && c0 ? '-' + str : str; - } - - - // Handle BigNumber.max and BigNumber.min. - function maxOrMin(args, method) { - var n, - i = 1, - m = new BigNumber(args[0]); - - for (; i < args.length; i++) { - n = new BigNumber(args[i]); - - // If any number is NaN, return NaN. - if (!n.s) { - m = n; - break; - } else if (method.call(m, n)) { - m = n; - } - } - - return m; - } - - - /* - * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. - * Called by minus, plus and times. - */ - function normalise(n, c, e) { - var i = 1, - j = c.length; - - // Remove trailing zeros. - for (; !c[--j]; c.pop()); - - // Calculate the base 10 exponent. First get the number of digits of c[0]. - for (j = c[0]; j >= 10; j /= 10, i++); - - // Overflow? - if ((e = i + e * LOG_BASE - 1) > MAX_EXP) { - - // Infinity. - n.c = n.e = null; - - // Underflow? - } else if (e < MIN_EXP) { - - // Zero. - n.c = [n.e = 0]; - } else { - n.e = e; - n.c = c; - } - - return n; - } - - - // Handle values that fail the validity test in BigNumber. - parseNumeric = (function () { - var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, - dotAfter = /^([^.]+)\.$/, - dotBefore = /^\.([^.]+)$/, - isInfinityOrNaN = /^-?(Infinity|NaN)$/, - whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; - - return function (x, str, isNum, b) { - var base, - s = isNum ? str : str.replace(whitespaceOrPlus, ''); - - // No exception on ±Infinity or NaN. - if (isInfinityOrNaN.test(s)) { - x.s = isNaN(s) ? null : s < 0 ? -1 : 1; - } else { - if (!isNum) { - - // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i - s = s.replace(basePrefix, function (m, p1, p2) { - base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8; - return !b || b == base ? p1 : m; - }); - - if (b) { - base = b; - - // E.g. '1.' to '1', '.1' to '0.1' - s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1'); - } - - if (str != s) return new BigNumber(s, base); - } - - // '[BigNumber Error] Not a number: {n}' - // '[BigNumber Error] Not a base {b} number: {n}' - if (BigNumber.DEBUG) { - throw Error - (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str); - } - - // NaN - x.s = null; - } - - x.c = x.e = null; - } - })(); - - - /* - * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. - * If r is truthy, it is known that there are more digits after the rounding digit. - */ - function round(x, sd, rm, r) { - var d, i, j, k, n, ni, rd, - xc = x.c, - pows10 = POWS_TEN; - - // if x is not Infinity or NaN... - if (xc) { - - // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. - // n is a base 1e14 number, the value of the element of array x.c containing rd. - // ni is the index of n within x.c. - // d is the number of digits of n. - // i is the index of rd within n including leading zeros. - // j is the actual index of rd within n (if < 0, rd is a leading zero). - out: { - - // Get the number of digits of the first element of xc. - for (d = 1, k = xc[0]; k >= 10; k /= 10, d++); - i = sd - d; - - // If the rounding digit is in the first element of xc... - if (i < 0) { - i += LOG_BASE; - j = sd; - n = xc[ni = 0]; - - // Get the rounding digit at index j of n. - rd = n / pows10[d - j - 1] % 10 | 0; - } else { - ni = mathceil((i + 1) / LOG_BASE); - - if (ni >= xc.length) { - - if (r) { - - // Needed by sqrt. - for (; xc.length <= ni; xc.push(0)); - n = rd = 0; - d = 1; - i %= LOG_BASE; - j = i - LOG_BASE + 1; - } else { - break out; - } - } else { - n = k = xc[ni]; - - // Get the number of digits of n. - for (d = 1; k >= 10; k /= 10, d++); - - // Get the index of rd within n. - i %= LOG_BASE; - - // Get the index of rd within n, adjusted for leading zeros. - // The number of leading zeros of n is given by LOG_BASE - d. - j = i - LOG_BASE + d; - - // Get the rounding digit at index j of n. - rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0; - } - } - - r = r || sd < 0 || - - // Are there any non-zero digits after the rounding digit? - // The expression n % pows10[d - j - 1] returns all digits of n to the right - // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. - xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); - - r = rm < 4 - ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) - : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && - - // Check whether the digit to the left of the rounding digit is odd. - ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 || - rm == (x.s < 0 ? 8 : 7)); - - if (sd < 1 || !xc[0]) { - xc.length = 0; - - if (r) { - - // Convert sd to decimal places. - sd -= x.e + 1; - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; - x.e = -sd || 0; - } else { - - // Zero. - xc[0] = x.e = 0; - } - - return x; - } - - // Remove excess digits. - if (i == 0) { - xc.length = ni; - k = 1; - ni--; - } else { - xc.length = ni + 1; - k = pows10[LOG_BASE - i]; - - // E.g. 56700 becomes 56000 if 7 is the rounding digit. - // j > 0 means i > number of leading zeros of n. - xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; - } - - // Round up? - if (r) { - - for (; ;) { - - // If the digit to be rounded up is in the first element of xc... - if (ni == 0) { - - // i will be the length of xc[0] before k is added. - for (i = 1, j = xc[0]; j >= 10; j /= 10, i++); - j = xc[0] += k; - for (k = 1; j >= 10; j /= 10, k++); - - // if i != k the length has increased. - if (i != k) { - x.e++; - if (xc[0] == BASE) xc[0] = 1; - } - - break; - } else { - xc[ni] += k; - if (xc[ni] != BASE) break; - xc[ni--] = 0; - k = 1; - } - } - } - - // Remove trailing zeros. - for (i = xc.length; xc[--i] === 0; xc.pop()); - } - - // Overflow? Infinity. - if (x.e > MAX_EXP) { - x.c = x.e = null; - - // Underflow? Zero. - } else if (x.e < MIN_EXP) { - x.c = [x.e = 0]; - } - } - - return x; - } - - - function valueOf(n) { - var str, - e = n.e; - - if (e === null) return n.toString(); - - str = coeffToString(n.c); - - str = e <= TO_EXP_NEG || e >= TO_EXP_POS - ? toExponential(str, e) - : toFixedPoint(str, e, '0'); - - return n.s < 0 ? '-' + str : str; - } - - - // PROTOTYPE/INSTANCE METHODS - - - /* - * Return a new BigNumber whose value is the absolute value of this BigNumber. - */ - P.absoluteValue = P.abs = function () { - var x = new BigNumber(this); - if (x.s < 0) x.s = 1; - return x; - }; - - - /* - * Return - * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), - * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), - * 0 if they have the same value, - * or null if the value of either is NaN. - */ - P.comparedTo = function (y, b) { - return compare(this, new BigNumber(y, b)); - }; - - - /* - * If dp is undefined or null or true or false, return the number of decimal places of the - * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. - * - * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this - * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or - * ROUNDING_MODE if rm is omitted. - * - * [dp] {number} Decimal places: integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.decimalPlaces = P.dp = function (dp, rm) { - var c, n, v, - x = this; - - if (dp != null) { - intCheck(dp, 0, MAX); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - return round(new BigNumber(x), dp + x.e + 1, rm); - } - - if (!(c = x.c)) return null; - n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; - - // Subtract the number of trailing zeros of the last number. - if (v = c[v]) for (; v % 10 == 0; v /= 10, n--); - if (n < 0) n = 0; - - return n; - }; - - - /* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new BigNumber whose value is the value of this BigNumber divided by the value of - * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ - P.dividedBy = P.div = function (y, b) { - return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE); - }; - - - /* - * Return a new BigNumber whose value is the integer part of dividing the value of this - * BigNumber by the value of BigNumber(y, b). - */ - P.dividedToIntegerBy = P.idiv = function (y, b) { - return div(this, new BigNumber(y, b), 0, 1); - }; - - - /* - * Return a BigNumber whose value is the value of this BigNumber exponentiated by n. - * - * If m is present, return the result modulo m. - * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. - * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE. - * - * The modular power operation works efficiently when x, n, and m are integers, otherwise it - * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0. - * - * n {number|string|BigNumber} The exponent. An integer. - * [m] {number|string|BigNumber} The modulus. - * - * '[BigNumber Error] Exponent not an integer: {n}' - */ - P.exponentiatedBy = P.pow = function (n, m) { - var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, - x = this; - - n = new BigNumber(n); - - // Allow NaN and ±Infinity, but not other non-integers. - if (n.c && !n.isInteger()) { - throw Error - (bignumberError + 'Exponent not an integer: ' + valueOf(n)); - } - - if (m != null) m = new BigNumber(m); - - // Exponent of MAX_SAFE_INTEGER is 15. - nIsBig = n.e > 14; - - // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0. - if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) { - - // The sign of the result of pow when x is negative depends on the evenness of n. - // If +n overflows to ±Infinity, the evenness of n would be not be known. - y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n))); - return m ? y.mod(m) : y; - } - - nIsNeg = n.s < 0; - - if (m) { - - // x % m returns NaN if abs(m) is zero, or m is NaN. - if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN); - - isModExp = !nIsNeg && x.isInteger() && m.isInteger(); - - if (isModExp) x = x.mod(m); - - // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15. - // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15. - } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 - // [1, 240000000] - ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 - // [80000000000000] [99999750000000] - : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) { - - // If x is negative and n is odd, k = -0, else k = 0. - k = x.s < 0 && isOdd(n) ? -0 : 0; - - // If x >= 1, k = ±Infinity. - if (x.e > -1) k = 1 / k; - - // If n is negative return ±0, else return ±Infinity. - return new BigNumber(nIsNeg ? 1 / k : k); - - } else if (POW_PRECISION) { - - // Truncating each coefficient array to a length of k after each multiplication - // equates to truncating significant digits to POW_PRECISION + [28, 41], - // i.e. there will be a minimum of 28 guard digits retained. - k = mathceil(POW_PRECISION / LOG_BASE + 2); - } - - if (nIsBig) { - half = new BigNumber(0.5); - if (nIsNeg) n.s = 1; - nIsOdd = isOdd(n); - } else { - i = Math.abs(+valueOf(n)); - nIsOdd = i % 2; - } - - y = new BigNumber(ONE); - - // Performs 54 loop iterations for n of 9007199254740991. - for (; ;) { - - if (nIsOdd) { - y = y.times(x); - if (!y.c) break; - - if (k) { - if (y.c.length > k) y.c.length = k; - } else if (isModExp) { - y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m)); - } - } - - if (i) { - i = mathfloor(i / 2); - if (i === 0) break; - nIsOdd = i % 2; - } else { - n = n.times(half); - round(n, n.e + 1, 1); - - if (n.e > 14) { - nIsOdd = isOdd(n); - } else { - i = +valueOf(n); - if (i === 0) break; - nIsOdd = i % 2; - } - } - - x = x.times(x); - - if (k) { - if (x.c && x.c.length > k) x.c.length = k; - } else if (isModExp) { - x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m)); - } - } - - if (isModExp) return y; - if (nIsNeg) y = ONE.div(y); - - return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer - * using rounding mode rm, or ROUNDING_MODE if rm is omitted. - * - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}' - */ - P.integerValue = function (rm) { - var n = new BigNumber(this); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - return round(n, n.e + 1, rm); - }; - - - /* - * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), - * otherwise return false. - */ - P.isEqualTo = P.eq = function (y, b) { - return compare(this, new BigNumber(y, b)) === 0; - }; - - - /* - * Return true if the value of this BigNumber is a finite number, otherwise return false. - */ - P.isFinite = function () { - return !!this.c; - }; - - - /* - * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), - * otherwise return false. - */ - P.isGreaterThan = P.gt = function (y, b) { - return compare(this, new BigNumber(y, b)) > 0; - }; - - - /* - * Return true if the value of this BigNumber is greater than or equal to the value of - * BigNumber(y, b), otherwise return false. - */ - P.isGreaterThanOrEqualTo = P.gte = function (y, b) { - return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0; - - }; - - - /* - * Return true if the value of this BigNumber is an integer, otherwise return false. - */ - P.isInteger = function () { - return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; - }; - - - /* - * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), - * otherwise return false. - */ - P.isLessThan = P.lt = function (y, b) { - return compare(this, new BigNumber(y, b)) < 0; - }; - - - /* - * Return true if the value of this BigNumber is less than or equal to the value of - * BigNumber(y, b), otherwise return false. - */ - P.isLessThanOrEqualTo = P.lte = function (y, b) { - return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0; - }; - - - /* - * Return true if the value of this BigNumber is NaN, otherwise return false. - */ - P.isNaN = function () { - return !this.s; - }; - - - /* - * Return true if the value of this BigNumber is negative, otherwise return false. - */ - P.isNegative = function () { - return this.s < 0; - }; - - - /* - * Return true if the value of this BigNumber is positive, otherwise return false. - */ - P.isPositive = function () { - return this.s > 0; - }; - - - /* - * Return true if the value of this BigNumber is 0 or -0, otherwise return false. - */ - P.isZero = function () { - return !!this.c && this.c[0] == 0; - }; - - - /* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new BigNumber whose value is the value of this BigNumber minus the value of - * BigNumber(y, b). - */ - P.minus = function (y, b) { - var i, j, t, xLTy, - x = this, - a = x.s; - - y = new BigNumber(y, b); - b = y.s; - - // Either NaN? - if (!a || !b) return new BigNumber(NaN); - - // Signs differ? - if (a != b) { - y.s = -b; - return x.plus(y); - } - - var xe = x.e / LOG_BASE, - ye = y.e / LOG_BASE, - xc = x.c, - yc = y.c; - - if (!xe || !ye) { - - // Either Infinity? - if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN); - - // Either zero? - if (!xc[0] || !yc[0]) { - - // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. - return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x : - - // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity - ROUNDING_MODE == 3 ? -0 : 0); - } - } - - xe = bitFloor(xe); - ye = bitFloor(ye); - xc = xc.slice(); - - // Determine which is the bigger number. - if (a = xe - ye) { - - if (xLTy = a < 0) { - a = -a; - t = xc; - } else { - ye = xe; - t = yc; - } - - t.reverse(); - - // Prepend zeros to equalise exponents. - for (b = a; b--; t.push(0)); - t.reverse(); - } else { - - // Exponents equal. Check digit by digit. - j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; - - for (a = b = 0; b < j; b++) { - - if (xc[b] != yc[b]) { - xLTy = xc[b] < yc[b]; - break; - } - } - } - - // x < y? Point xc to the array of the bigger number. - if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; - - b = (j = yc.length) - (i = xc.length); - - // Append zeros to xc if shorter. - // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. - if (b > 0) for (; b--; xc[i++] = 0); - b = BASE - 1; - - // Subtract yc from xc. - for (; j > a;) { - - if (xc[--j] < yc[j]) { - for (i = j; i && !xc[--i]; xc[i] = b); - --xc[i]; - xc[j] += BASE; - } - - xc[j] -= yc[j]; - } - - // Remove leading zeros and adjust exponent accordingly. - for (; xc[0] == 0; xc.splice(0, 1), --ye); - - // Zero? - if (!xc[0]) { - - // Following IEEE 754 (2008) 6.3, - // n - n = +0 but n - n = -0 when rounding towards -Infinity. - y.s = ROUNDING_MODE == 3 ? -1 : 1; - y.c = [y.e = 0]; - return y; - } - - // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity - // for finite x and y. - return normalise(y, xc, ye); - }; - - - /* - * n % 0 = N - * n % N = N - * n % I = n - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * 0 % I = 0 - * N % n = N - * N % 0 = N - * N % N = N - * N % I = N - * I % n = N - * I % 0 = N - * I % N = N - * I % I = N - * - * Return a new BigNumber whose value is the value of this BigNumber modulo the value of - * BigNumber(y, b). The result depends on the value of MODULO_MODE. - */ - P.modulo = P.mod = function (y, b) { - var q, s, - x = this; - - y = new BigNumber(y, b); - - // Return NaN if x is Infinity or NaN, or y is NaN or zero. - if (!x.c || !y.s || y.c && !y.c[0]) { - return new BigNumber(NaN); - - // Return x if y is Infinity or x is zero. - } else if (!y.c || x.c && !x.c[0]) { - return new BigNumber(x); - } - - if (MODULO_MODE == 9) { - - // Euclidian division: q = sign(y) * floor(x / abs(y)) - // r = x - qy where 0 <= r < abs(y) - s = y.s; - y.s = 1; - q = div(x, y, 0, 3); - y.s = s; - q.s *= s; - } else { - q = div(x, y, 0, MODULO_MODE); - } - - y = x.minus(q.times(y)); - - // To match JavaScript %, ensure sign of zero is sign of dividend. - if (!y.c[0] && MODULO_MODE == 1) y.s = x.s; - - return y; - }; - - - /* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value - * of BigNumber(y, b). - */ - P.multipliedBy = P.times = function (y, b) { - var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, - base, sqrtBase, - x = this, - xc = x.c, - yc = (y = new BigNumber(y, b)).c; - - // Either NaN, ±Infinity or ±0? - if (!xc || !yc || !xc[0] || !yc[0]) { - - // Return NaN if either is NaN, or one is 0 and the other is Infinity. - if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { - y.c = y.e = y.s = null; - } else { - y.s *= x.s; - - // Return ±Infinity if either is ±Infinity. - if (!xc || !yc) { - y.c = y.e = null; - - // Return ±0 if either is ±0. - } else { - y.c = [0]; - y.e = 0; - } - } - - return y; - } - - e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); - y.s *= x.s; - xcL = xc.length; - ycL = yc.length; - - // Ensure xc points to longer array and xcL to its length. - if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; - - // Initialise the result array with zeros. - for (i = xcL + ycL, zc = []; i--; zc.push(0)); - - base = BASE; - sqrtBase = SQRT_BASE; - - for (i = ycL; --i >= 0;) { - c = 0; - ylo = yc[i] % sqrtBase; - yhi = yc[i] / sqrtBase | 0; - - for (k = xcL, j = i + k; j > i;) { - xlo = xc[--k] % sqrtBase; - xhi = xc[k] / sqrtBase | 0; - m = yhi * xlo + xhi * ylo; - xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c; - c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi; - zc[j--] = xlo % base; - } - - zc[j] = c; - } - - if (c) { - ++e; - } else { - zc.splice(0, 1); - } - - return normalise(y, zc, e); - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber negated, - * i.e. multiplied by -1. - */ - P.negated = function () { - var x = new BigNumber(this); - x.s = -x.s || null; - return x; - }; - - - /* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new BigNumber whose value is the value of this BigNumber plus the value of - * BigNumber(y, b). - */ - P.plus = function (y, b) { - var t, - x = this, - a = x.s; - - y = new BigNumber(y, b); - b = y.s; - - // Either NaN? - if (!a || !b) return new BigNumber(NaN); - - // Signs differ? - if (a != b) { - y.s = -b; - return x.minus(y); - } - - var xe = x.e / LOG_BASE, - ye = y.e / LOG_BASE, - xc = x.c, - yc = y.c; - - if (!xe || !ye) { - - // Return ±Infinity if either ±Infinity. - if (!xc || !yc) return new BigNumber(a / 0); - - // Either zero? - // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. - if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0); - } - - xe = bitFloor(xe); - ye = bitFloor(ye); - xc = xc.slice(); - - // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. - if (a = xe - ye) { - if (a > 0) { - ye = xe; - t = yc; - } else { - a = -a; - t = xc; - } - - t.reverse(); - for (; a--; t.push(0)); - t.reverse(); - } - - a = xc.length; - b = yc.length; - - // Point xc to the longer array, and b to the shorter length. - if (a - b < 0) t = yc, yc = xc, xc = t, b = a; - - // Only start adding at yc.length - 1 as the further digits of xc can be ignored. - for (a = 0; b;) { - a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; - xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; - } - - if (a) { - xc = [a].concat(xc); - ++ye; - } - - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - // ye = MAX_EXP + 1 possible - return normalise(y, xc, ye); - }; - - - /* - * If sd is undefined or null or true or false, return the number of significant digits of - * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. - * If sd is true include integer-part trailing zeros in the count. - * - * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this - * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or - * ROUNDING_MODE if rm is omitted. - * - * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive. - * boolean: whether to count integer-part trailing zeros: true or false. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' - */ - P.precision = P.sd = function (sd, rm) { - var c, n, v, - x = this; - - if (sd != null && sd !== !!sd) { - intCheck(sd, 1, MAX); - if (rm == null) rm = ROUNDING_MODE; - else intCheck(rm, 0, 8); - - return round(new BigNumber(x), sd, rm); - } - - if (!(c = x.c)) return null; - v = c.length - 1; - n = v * LOG_BASE + 1; - - if (v = c[v]) { - - // Subtract the number of trailing zeros of the last element. - for (; v % 10 == 0; v /= 10, n--); - - // Add the number of digits of the first element. - for (v = c[0]; v >= 10; v /= 10, n++); - } - - if (sd && x.e + 1 > n) n = x.e + 1; - - return n; - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber shifted by k places - * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. - * - * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}' - */ - P.shiftedBy = function (k) { - intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); - return this.times('1e' + k); - }; - - - /* - * sqrt(-n) = N - * sqrt(N) = N - * sqrt(-I) = N - * sqrt(I) = I - * sqrt(0) = 0 - * sqrt(-0) = -0 - * - * Return a new BigNumber whose value is the square root of the value of this BigNumber, - * rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ - P.squareRoot = P.sqrt = function () { - var m, n, r, rep, t, - x = this, - c = x.c, - s = x.s, - e = x.e, - dp = DECIMAL_PLACES + 4, - half = new BigNumber('0.5'); - - // Negative/NaN/Infinity/zero? - if (s !== 1 || !c || !c[0]) { - return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); - } - - // Initial estimate. - s = Math.sqrt(+valueOf(x)); - - // Math.sqrt underflow/overflow? - // Pass x to Math.sqrt as integer, then adjust the exponent of the result. - if (s == 0 || s == 1 / 0) { - n = coeffToString(c); - if ((n.length + e) % 2 == 0) n += '0'; - s = Math.sqrt(+n); - e = bitFloor((e + 1) / 2) - (e < 0 || e % 2); - - if (s == 1 / 0) { - n = '1e' + e; - } else { - n = s.toExponential(); - n = n.slice(0, n.indexOf('e') + 1) + e; - } - - r = new BigNumber(n); - } else { - r = new BigNumber(s + ''); - } - - // Check for zero. - // r could be zero if MIN_EXP is changed after the this value was created. - // This would cause a division by zero (x/t) and hence Infinity below, which would cause - // coeffToString to throw. - if (r.c[0]) { - e = r.e; - s = e + dp; - if (s < 3) s = 0; - - // Newton-Raphson iteration. - for (; ;) { - t = r; - r = half.times(t.plus(div(x, t, dp, 1))); - - if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) { - - // The exponent of r may here be one less than the final result exponent, - // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits - // are indexed correctly. - if (r.e < e) --s; - n = n.slice(s - 3, s + 1); - - // The 4th rounding digit may be in error by -1 so if the 4 rounding digits - // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the - // iteration. - if (n == '9999' || !rep && n == '4999') { - - // On the first iteration only, check to see if rounding up gives the - // exact result as the nines may infinitely repeat. - if (!rep) { - round(t, t.e + DECIMAL_PLACES + 2, 0); - - if (t.times(t).eq(x)) { - r = t; - break; - } - } - - dp += 4; - s += 4; - rep = 1; - } else { - - // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact - // result. If not, then there are further digits and m will be truthy. - if (!+n || !+n.slice(1) && n.charAt(0) == '5') { - - // Truncate to the first rounding digit. - round(r, r.e + DECIMAL_PLACES + 2, 1); - m = !r.times(r).eq(x); - } - - break; - } - } - } - } - - return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m); - }; - - - /* - * Return a string representing the value of this BigNumber in exponential notation and - * rounded using ROUNDING_MODE to dp fixed decimal places. - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.toExponential = function (dp, rm) { - if (dp != null) { - intCheck(dp, 0, MAX); - dp++; - } - return format(this, dp, rm, 1); - }; - - - /* - * Return a string representing the value of this BigNumber in fixed-point notation rounding - * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. - * - * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', - * but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - */ - P.toFixed = function (dp, rm) { - if (dp != null) { - intCheck(dp, 0, MAX); - dp = dp + this.e + 1; - } - return format(this, dp, rm); - }; - - - /* - * Return a string representing the value of this BigNumber in fixed-point notation rounded - * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties - * of the format or FORMAT object (see BigNumber.set). - * - * The formatting object may contain some or all of the properties shown below. - * - * FORMAT = { - * prefix: '', - * groupSize: 3, - * secondaryGroupSize: 0, - * groupSeparator: ',', - * decimalSeparator: '.', - * fractionGroupSize: 0, - * fractionGroupSeparator: '\xA0', // non-breaking space - * suffix: '' - * }; - * - * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * [format] {object} Formatting options. See FORMAT pbject above. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' - * '[BigNumber Error] Argument not an object: {format}' - */ - P.toFormat = function (dp, rm, format) { - var str, - x = this; - - if (format == null) { - if (dp != null && rm && typeof rm == 'object') { - format = rm; - rm = null; - } else if (dp && typeof dp == 'object') { - format = dp; - dp = rm = null; - } else { - format = FORMAT; - } - } else if (typeof format != 'object') { - throw Error - (bignumberError + 'Argument not an object: ' + format); - } - - str = x.toFixed(dp, rm); - - if (x.c) { - var i, - arr = str.split('.'), - g1 = +format.groupSize, - g2 = +format.secondaryGroupSize, - groupSeparator = format.groupSeparator || '', - intPart = arr[0], - fractionPart = arr[1], - isNeg = x.s < 0, - intDigits = isNeg ? intPart.slice(1) : intPart, - len = intDigits.length; - - if (g2) i = g1, g1 = g2, g2 = i, len -= i; - - if (g1 > 0 && len > 0) { - i = len % g1 || g1; - intPart = intDigits.substr(0, i); - for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1); - if (g2 > 0) intPart += groupSeparator + intDigits.slice(i); - if (isNeg) intPart = '-' + intPart; - } - - str = fractionPart - ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize) - ? fractionPart.replace(new RegExp('\\d{' + g2 + '}\\B', 'g'), - '$&' + (format.fractionGroupSeparator || '')) - : fractionPart) - : intPart; - } - - return (format.prefix || '') + str + (format.suffix || ''); - }; - - - /* - * Return an array of two BigNumbers representing the value of this BigNumber as a simple - * fraction with an integer numerator and an integer denominator. - * The denominator will be a positive non-zero value less than or equal to the specified - * maximum denominator. If a maximum denominator is not specified, the denominator will be - * the lowest value necessary to represent the number exactly. - * - * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator. - * - * '[BigNumber Error] Argument {not an integer|out of range} : {md}' - */ - P.toFraction = function (md) { - var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, - x = this, - xc = x.c; - - if (md != null) { - n = new BigNumber(md); - - // Throw if md is less than one or is not an integer, unless it is Infinity. - if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { - throw Error - (bignumberError + 'Argument ' + - (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n)); - } - } - - if (!xc) return new BigNumber(x); - - d = new BigNumber(ONE); - n1 = d0 = new BigNumber(ONE); - d1 = n0 = new BigNumber(ONE); - s = coeffToString(xc); - - // Determine initial denominator. - // d is a power of 10 and the minimum max denominator that specifies the value exactly. - e = d.e = s.length - x.e - 1; - d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; - md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n; - - exp = MAX_EXP; - MAX_EXP = 1 / 0; - n = new BigNumber(s); - - // n0 = d1 = 0 - n0.c[0] = 0; - - for (; ;) { - q = div(n, d, 0, 1); - d2 = d0.plus(q.times(d1)); - if (d2.comparedTo(md) == 1) break; - d0 = d1; - d1 = d2; - n1 = n0.plus(q.times(d2 = n1)); - n0 = d2; - d = n.minus(q.times(d2 = d)); - n = d2; - } - - d2 = div(md.minus(d0), d1, 0, 1); - n0 = n0.plus(d2.times(n1)); - d0 = d0.plus(d2.times(d1)); - n0.s = n1.s = x.s; - e = e * 2; - - // Determine which fraction is closer to x, n0/d0 or n1/d1 - r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo( - div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0]; - - MAX_EXP = exp; - - return r; - }; - - - /* - * Return the value of this BigNumber converted to a number primitive. - */ - P.toNumber = function () { - return +valueOf(this); - }; - - - /* - * Return a string representing the value of this BigNumber rounded to sd significant digits - * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits - * necessary to represent the integer part of the value in fixed-point notation, then use - * exponential notation. - * - * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. - * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. - * - * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' - */ - P.toPrecision = function (sd, rm) { - if (sd != null) intCheck(sd, 1, MAX); - return format(this, sd, rm, 2); - }; - - - /* - * Return a string representing the value of this BigNumber in base b, or base 10 if b is - * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and - * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent - * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than - * TO_EXP_NEG, return exponential notation. - * - * [b] {number} Integer, 2 to ALPHABET.length inclusive. - * - * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' - */ - P.toString = function (b) { - var str, - n = this, - s = n.s, - e = n.e; - - // Infinity or NaN? - if (e === null) { - if (s) { - str = 'Infinity'; - if (s < 0) str = '-' + str; - } else { - str = 'NaN'; - } - } else { - if (b == null) { - str = e <= TO_EXP_NEG || e >= TO_EXP_POS - ? toExponential(coeffToString(n.c), e) - : toFixedPoint(coeffToString(n.c), e, '0'); - } else if (b === 10) { - n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE); - str = toFixedPoint(coeffToString(n.c), n.e, '0'); - } else { - intCheck(b, 2, ALPHABET.length, 'Base'); - str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true); - } - - if (s < 0 && n.c[0]) str = '-' + str; - } - - return str; - }; - - - /* - * Return as toString, but do not accept a base argument, and include the minus sign for - * negative zero. - */ - P.valueOf = P.toJSON = function () { - return valueOf(this); - }; - - - P._isBigNumber = true; - - if (configObject != null) BigNumber.set(configObject); - - return BigNumber; - } - - - // PRIVATE HELPER FUNCTIONS - - // These functions don't need access to variables, - // e.g. DECIMAL_PLACES, in the scope of the `clone` function above. - - - function bitFloor(n) { - var i = n | 0; - return n > 0 || n === i ? i : i - 1; - } - - - // Return a coefficient array as a string of base 10 digits. - function coeffToString(a) { - var s, z, - i = 1, - j = a.length, - r = a[0] + ''; - - for (; i < j;) { - s = a[i++] + ''; - z = LOG_BASE - s.length; - for (; z--; s = '0' + s); - r += s; - } - - // Determine trailing zeros. - for (j = r.length; r.charCodeAt(--j) === 48;); - - return r.slice(0, j + 1 || 1); - } - - - // Compare the value of BigNumbers x and y. - function compare(x, y) { - var a, b, - xc = x.c, - yc = y.c, - i = x.s, - j = y.s, - k = x.e, - l = y.e; - - // Either NaN? - if (!i || !j) return null; - - a = xc && !xc[0]; - b = yc && !yc[0]; - - // Either zero? - if (a || b) return a ? b ? 0 : -j : i; - - // Signs differ? - if (i != j) return i; - - a = i < 0; - b = k == l; - - // Either Infinity? - if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1; - - // Compare exponents. - if (!b) return k > l ^ a ? 1 : -1; - - j = (k = xc.length) < (l = yc.length) ? k : l; - - // Compare digit by digit. - for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1; - - // Compare lengths. - return k == l ? 0 : k > l ^ a ? 1 : -1; - } - - - /* - * Check that n is a primitive number, an integer, and in range, otherwise throw. - */ - function intCheck(n, min, max, name) { - if (n < min || n > max || n !== mathfloor(n)) { - throw Error - (bignumberError + (name || 'Argument') + (typeof n == 'number' - ? n < min || n > max ? ' out of range: ' : ' not an integer: ' - : ' not a primitive number: ') + String(n)); - } - } - - - // Assumes finite n. - function isOdd(n) { - var k = n.c.length - 1; - return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; - } - - - function toExponential(str, e) { - return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) + - (e < 0 ? 'e' : 'e+') + e; - } - - - function toFixedPoint(str, e, z) { - var len, zs; - - // Negative exponent? - if (e < 0) { - - // Prepend zeros. - for (zs = z + '.'; ++e; zs += z); - str = zs + str; - - // Positive exponent - } else { - len = str.length; - - // Append zeros. - if (++e > len) { - for (zs = z, e -= len; --e; zs += z); - str += zs; - } else if (e < len) { - str = str.slice(0, e) + '.' + str.slice(e); - } - } - - return str; - } - - - // EXPORT - - - BigNumber = clone(); - BigNumber['default'] = BigNumber.BigNumber = BigNumber; - - // AMD. - if (module.exports) { - module.exports = BigNumber; - - // Browser. - } else { - if (!globalObject) { - globalObject = typeof self != 'undefined' && self ? self : window; - } - - globalObject.BigNumber = BigNumber; - } -})(commonjsGlobal); -}(bignumber)); - -var BigNumber = bignumber.exports; - -BigNumber.config({ RANGE: [-30, 30], EXPONENTIAL_AT: 1e9 }); -BigNumber.set({ DECIMAL_PLACES: 30, ROUNDING_MODE: BigNumber.ROUND_DOWN }); // equivalent - -function Encoder(type, value) { - const throwError = (val) => { - throw new Error(`Error encoding ${val} to ${type}`); - }; - const countDecimals = (n) => { - if (Math.floor(n) === n) return 0; - try { - return n.toString().split(".")[1].length; - } catch (e) { - return 0; - } - }; - const isString = (val) => typeof val === "string" || val instanceof String; - const isArray = (val) => val && typeof val === "object" && val.constructor === Array; - const isObject = (val) => val && typeof val === "object" && val.constructor === Object; - const isDate = (val) => val instanceof Date; - const isBoolean = (val) => typeof val === "boolean"; - - const isNumber = (val) => { - if (isArray(val)) return false; - return !isNaN(encodeBigNumber(val).toNumber()); - }; - - const isInteger = (val) => { - if (!isNumber(val)) return false; - if (countDecimals(val) === 0) return true; - return false; - }; - const encodeInt = (val) => { - if (!isNumber(val)) throwError(val); - else return parseInt(val); - }; - const isFloat = (val) => { - if (!isNumber(val)) return false; - if (countDecimals(val) === 0) return false; - return true; - }; - const encodeFloat = (val) => { - if (!isNumber(val)) throwError(val); - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); - - return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; - }; - const encodeNumber = (val) => { - if (!isNumber(val)) throwError(val); - if (isFloat(val)) { - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); - return { __fixed__: val.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm, "$1$2") }; - } - if (isInteger(val)) return parseInt(val); - }; - const encodeBigNumber = (val) => { - if (!BigNumber.isBigNumber(val)) val = new BigNumber(val); - return val; - }; - - const encodeBool = (val) => { - if (isBoolean(val)) return val; - if (val === "true" || val === 1) return true; - if (val === "false" || val === 0) return false; - throwError(val); - }; - const encodeStr = (val) => { - if (isString(val)) return val; - if (isDate(val)) return val.toISOString(); - return JSON.stringify(val); - }; - const encodeDateTime = (val) => { - val = !isDate(val) ? new Date(val) : val; - if (!isDate(val)) throwError(val); - return { - __time__: [ - val.getUTCFullYear(), - val.getUTCMonth(), - val.getUTCDate(), - val.getUTCHours(), - val.getUTCMinutes(), - val.getUTCSeconds(), - val.getUTCMilliseconds(), - ], - }; - }; - const encodeTimeDelta = (val) => { - const time = isDate(val) ? val.getTime() : new Date(val).getTime(); - const days = parseInt(time / 1000 / 60 / 60 / 24); - const seconds = (time - days * 24 * 60 * 60 * 1000) / 1000; - return { __delta__: [days, seconds] }; - }; - - const encodeList = (val) => { - if (isArray(val)) return parseObject(val); - try { - val = JSON.parse(val); - } catch (e) { - throwError(val); - } - if (isArray(val)) return parseObject(val); - throwError(val); - }; - - const encodeDict = (val) => { - if (isObject(val)) return parseObject(val); - try { - val = JSON.parse(val); - } catch (e) { - throwError(val); - } - if (isObject(val)) return parseObject(val); - throwError(val); - }; - - const encodeObject = (val) => { - try { - return encodeList(val); - } catch (e) { - return encodeDict(val); - } - }; - - function parseObject(obj) { - const encode = (k, v) => { - if (k === "datetime" || k === "datetime.datetime") return Encoder("datetime.datetime", v); - if (k === "timedelta" || k === "datetime.timedelta") return Encoder("datetime.timedelta", v); - if (k !== "__fixed__" && isFloat(v)) return encodeFloat(v); - return v; - }; - - const fixDatetime = (k, v) => { - const isDatetimeObject = (val) => { - let datetimeTypes = ["datetime.datetime", "datetime", "datetime.timedelta", "timedelta"]; - return ( - Object.keys(val).length === 1 && - datetimeTypes.filter((f) => f === Object.keys(val)[0]).length > 0 - ); - }; - - if (v.constructor === Array) { - v.map((val) => { - if (Object.keys(val).length === 1 && isDatetimeObject(v)) return val[Object.keys(val)[0]]; - //if (isFloat(val)) return encodeFloat(val) - return val; - }); - } - if (v.constructor === Object) { - if (Object.keys(v).length === 1 && isDatetimeObject(v)) return v[Object.keys(v)[0]]; - } - - //if (isFloat(v)) return encodeFloat(v) - - return v; - }; - - let encodeValues = JSON.stringify(obj, encode); - return JSON.parse(encodeValues, fixDatetime); - } - - const encoder = { - str: encodeStr, - string: encodeStr, - float: encodeFloat, - int: encodeInt, - bool: encodeBool, - boolean: encodeBool, - dict: encodeDict, - list: encodeList, - Any: () => value, - "datetime.timedelta": encodeTimeDelta, - "datetime.datetime": encodeDateTime, - timedelta: encodeTimeDelta, - datetime: encodeDateTime, - number: encodeNumber, - object: encodeObject, - bigNumber: encodeBigNumber, - }; - - if (Object.keys(encoder).includes(type)) return encoder[type](value); - else throw new Error(`Error: ${type} is not a valid encoder type.`); -} - -Encoder.BigNumber = BigNumber; - -const { validateTypes: validateTypes$4 } = validators; - -class LamdenMasterNode_API { - constructor(networkInfoObj) { - if (!validateTypes$4.isObjectWithKeys(networkInfoObj)) - throw new Error(`Expected Object and got Type: ${typeof networkInfoObj}`); - if (!validateTypes$4.isArrayWithValues(networkInfoObj.hosts)) - throw new Error(`HOSTS Required (Type: Array)`); - - this.hosts = this.validateHosts(networkInfoObj.hosts); - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host) { - let protocols = ["https://", "http://"]; - if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; - throw new Error("Host String must include http:// or https://"); - } - validateHosts(hosts) { - return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); - } - - get host() { - return this.hosts[Math.floor(Math.random() * this.hosts.length)]; - } - get url() { - return this.host; - } - - send(method, path, data, overrideURL, callback) { - let parms = ""; - if (Object.keys(data).includes("parms")) { - parms = this.createParms(data.parms); - } - - let options = {}; - if (method === "POST") { - let headers = { "Content-Type": "application/json" }; - options.method = method; - options.headers = headers; - options.body = data; - } - - return fetch(`${overrideURL ? overrideURL : this.url}${path}${parms}`, options) - .then(async (res) => { - if (res.status === 200) { - let json = await res.json(); - callback(json, undefined); - return json; - } else { - let error = validateTypes$4.isStringWithValue(res.statusText) ? res.statusText : false; - callback(undefined, error); - return error; - } - }) - .catch((err) => { - return callback(undefined, err.toString()); - }); - } - - createParms(parms) { - if (Object.keys(parms).length === 0) return ""; - let parmString = "?"; - Object.keys(parms).forEach((key) => { - parmString = `${parmString}${key}=${parms[key]}&`; - }); - return parmString.slice(0, -1); - } - - async getContractInfo(contractName) { - const returnInfo = (res) => { - try { - if (res.name) return res; - } catch (e) {} - return null; - }; - let path = `/contracts/${contractName}`; - return this.send("GET", path, {}, undefined, (res, err) => returnInfo(res)).then((res) => - returnInfo(res) - ); - } - - async getVariable(contract, variable, key = "") { - let parms = {}; - if (validateTypes$4.isStringWithValue(key)) parms.key = key; - - let path = `/contracts/${contract}/${variable}/`; - - const returnValue = (res) => { - try { - if (res.value) return res.value; - } catch (e) {} - return null; - }; - return this.send("GET", path, { parms }, undefined, (res, err) => returnValue(res)).then( - (res) => returnValue(res) - ); - } - - async getContractMethods(contract) { - const getMethods = (res) => { - try { - if (res.methods) return res.methods; - } catch (e) {} - return []; - }; - let path = `/contracts/${contract}/methods`; - return this.send("GET", path, {}, undefined, (res, err) => getMethods(res)).then((res) => - getMethods(res) - ); - } - - async getContractVariables(contract) { - const getVariables = (res) => { - try { - if (res.variables) return res; - } catch (e) {} - return {}; - }; - let path = `/contracts/${contract}/variables`; - return this.send("GET", path, {}, undefined, (res, err) => getVariables(res)).then((res) => - getVariables(res) - ); - } - - async pingServer() { - const getStatus = (res) => { - try { - if (res.status) return true; - } catch (e) {} - return false; - }; - let response = await this.send("GET", "/ping", {}, undefined, (res, err) => getStatus(res)); - return getStatus(response); - } - - async getCurrencyBalance(vk) { - let balanceRes = await this.getVariable("currency", "balances", vk); - if (!balanceRes) return Encoder("bigNumber", 0); - if (balanceRes.__fixed__) return Encoder("bigNumber", balanceRes.__fixed__); - return Encoder("bigNumber", balanceRes.toString()); - } - - async contractExists(contractName) { - const exists = (res) => { - try { - if (res.name) return true; - } catch (e) {} - return false; - }; - let path = `/contracts/${contractName}`; - return this.send("GET", path, {}, undefined, (res, err) => exists(res)).then((res) => - exists(res) - ); - } - - async sendTransaction(data, url = undefined, callback) { - return this.send("POST", "/", JSON.stringify(data), url, (res, err) => { - if (err) { - if (callback) { - callback(undefined, err); - return; - } else return err; - } - if (callback) { - callback(res, undefined); - return; - } - return res; - }); - } - - async getNonce(sender, callback) { - if (!validateTypes$4.isStringHex(sender)) return `${sender} is not a hex string.`; - let path = `/nonce/${sender}`; - let url = this.host; - return this.send("GET", path, {}, url, (res, err) => { - if (err) { - if (callback) { - callback(undefined, `Unable to get nonce for ${sender} on network ${url}`); - return; - } - return `Unable to get nonce for ${sender} on network ${url}`; - } - res.masternode = url; - if (callback) { - callback(res, undefined); - return; - } else return res; - }); - } - - checkTransaction(hash, callback) { - const parms = { hash }; - return this.send("GET", "/tx", { parms }, undefined, (res, err) => { - if (err) { - if (callback) { - callback(undefined, err); - return; - } else return err; - } - if (callback) { - callback(res, undefined); - return; - } - return res; - }); - } -} - -const { validateTypes: validateTypes$3 } = validators; - -class Network { - // Constructor needs an Object with the following information to build Class. - // - // networkInfo: { - // hosts: list of masternode hostname/ip urls, - // type: "testnet", "mainnet" or "custom" - // }, - constructor(networkInfoObj) { - //Reject undefined or missing info - if (!validateTypes$3.isObjectWithKeys(networkInfoObj)) - throw new Error(`Expected Network Info Object and got Type: ${typeof networkInfoObj}`); - if (!validateTypes$3.isArrayWithValues(networkInfoObj.hosts)) - throw new Error(`HOSTS Required (Type: Array)`); - - this.type = validateTypes$3.isStringWithValue(networkInfoObj.type) - ? networkInfoObj.type.toLowerCase() - : "custom"; - this.events = new EventEmitter(); - this.hosts = this.validateHosts(networkInfoObj.hosts); - this.currencySymbol = validateTypes$3.isStringWithValue(networkInfoObj.currencySymbol) - ? networkInfoObj.currencySymbol - : "TAU"; - this.name = validateTypes$3.isStringWithValue(networkInfoObj.name) - ? networkInfoObj.name - : "lamden network"; - this.lamden = validateTypes$3.isBoolean(networkInfoObj.lamden) ? networkInfoObj.lamden : false; - this.blockExplorer = validateTypes$3.isStringWithValue(networkInfoObj.blockExplorer) - ? networkInfoObj.blockExplorer - : undefined; - - this.online = false; - try { - this.API = new LamdenMasterNode_API(networkInfoObj); - } catch (e) { - throw new Error(e); - } - } - //This will throw an error if the protocol wasn't included in the host string - vaidateProtocol(host) { - let protocols = ["https://", "http://"]; - if (protocols.map((protocol) => host.includes(protocol)).includes(true)) return host; - throw new Error("Host String must include http:// or https://"); - } - validateHosts(hosts) { - return hosts.map((host) => this.vaidateProtocol(host.toLowerCase())); - } - //Check if the network is online - //Emits boolean as 'online' event - //Also returns status as well as passes status to a callback - async ping(callback = undefined) { - this.online = await this.API.pingServer(); - this.events.emit("online", this.online); - if (validateTypes$3.isFunction(callback)) callback(this.online); - return this.online; - } - get host() { - return this.hosts[Math.floor(Math.random() * this.hosts.length)]; - } - get url() { - return this.host; - } - async getNetworkInfo() { - await this.ping(); - return { - name: this.name, - lamden: this.lamden, - type: this.type, - hosts: this.hosts, - url: this.url, - online: this.online, - }; - } -} - -const { validateTypes: validateTypes$2 } = validators; - -class TransactionBuilder extends Network { - // Constructor needs an Object with the following information to build Class. - // - // arg[0] (networkInfo): { //Can also accpet a Lamden "Network Class" - // host: masternode webserver hostname/ip, - // type: "testnet", "mainnet" or "mockchain" - // } - // arg[1] (txInfo): { - // uid: [Optional] unique ID for tracking purposes, - // senderVk: public key of the transaction sender, - // contractName: name of lamden smart contract, - // methodName: name of method to call in contractName, - // kwargs: key/values of args to pass to methodName - // example: kwargs.to = "270add00fc708791c97aeb5255107c770434bd2ab71c2e103fbee75e202aa15e" - // kwargs.amount = 1000 - // stampLimit: the max amount of stamps the tx should use. tx could use less. if tx needs more the tx will fail. - // nonce: [Optional] send() will attempt to retrieve this info automatically - // processor [Optional] send() will attempt to retrieve this info automatically - // } - // arg[2] (txData): [Optional] state hydrating data - constructor(networkInfo, txInfo, txData) { - if (validateTypes$2.isSpecificClass(networkInfo, "Network")) super(networkInfo.getNetworkInfo()); - else super(networkInfo); - - //Validate arguments - if (!validateTypes$2.isObjectWithKeys(txInfo)) throw new Error(`txInfo object not found`); - if (!validateTypes$2.isStringHex(txInfo.senderVk)) - throw new Error(`Sender Public Key Required (Type: Hex String)`); - if (!validateTypes$2.isStringWithValue(txInfo.contractName)) - throw new Error(`Contract Name Required (Type: String)`); - if (!validateTypes$2.isStringWithValue(txInfo.methodName)) - throw new Error(`Method Required (Type: String)`); - if (!validateTypes$2.isInteger(txInfo.stampLimit)) - throw new Error(`Stamps Limit Required (Type: Integer)`); - - //Store variables in self for reference - this.uid = validateTypes$2.isStringWithValue(txInfo.uid) ? txInfo.uid : undefined; - this.sender = txInfo.senderVk; - this.contract = txInfo.contractName; - this.method = txInfo.methodName; - this.kwargs = {}; - if (validateTypes$2.isObject(txInfo.kwargs)) this.kwargs = txInfo.kwargs; - this.stampLimit = txInfo.stampLimit; - - //validate and set nonce and processor if user provided them - if (typeof txInfo.nonce !== "undefined") { - if (!validateTypes$2.isInteger(txInfo.nonce)) - throw new Error( - `arg[6] Nonce is required to be an Integer, type ${typeof txInfo.none} was given` - ); - this.nonce = txInfo.nonce; - } - if (typeof txInfo.processor !== "undefined") { - if (!validateTypes$2.isStringWithValue(txInfo.processor)) - throw new Error( - `arg[7] Processor is required to be a String, type ${typeof txInfo.processor} was given` - ); - this.processor = txInfo.processor; - } - - this.signature; - this.transactionSigned = false; - - //Transaction result information - this.nonceResult = {}; - this.txSendResult = { errors: [] }; - this.txBlockResult = {}; - this.txHash; - this.txCheckResult = {}; - this.txCheckAttempts = 0; - this.txCheckLimit = 1; - - //Hydrate other items if passed - if (txData) { - if (txData.uid) this.uid = txData.uid; - if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) - this.txSendResult = txData.txSendResult; - if (validateTypes$2.isObjectWithKeys(txData.nonceResult)) { - this.nonceResult = txData.nonceResult; - if (validateTypes$2.isInteger(this.nonceResult.nonce)) this.nonce = this.nonceResult.nonce; - if (validateTypes$2.isStringWithValue(this.nonceResult.processor)) - this.processor = this.nonceResult.processor; - } - if (validateTypes$2.isObjectWithKeys(txData.txSendResult)) { - this.txSendResult = txData.txSendResult; - if (this.txSendResult.hash) this.txHash = this.txSendResult.hash; - } - if (validateTypes$2.isObjectWithKeys(txData.txBlockResult)) - this.txBlockResult = txData.txBlockResult; - if (validateTypes$2.isObjectWithKeys(txData.resultInfo)) this.resultInfo = txData.resultInfo; - } - //Create Capnp messages and transactionMessages - this.makePayload(); - } - makePayload() { - this.payload = { - contract: this.contract, - function: this.method, - kwargs: this.kwargs, - nonce: this.nonce, - processor: this.processor, - sender: this.sender, - stamps_supplied: this.stampLimit, - }; - this.sortedPayload = this.sortObject(this.payload); - } - makeTransaction() { - this.tx = { - metadata: { - signature: this.signature, - timestamp: parseInt(+new Date() / 1000), - }, - payload: this.sortedPayload.orderedObj, - }; - } - verifySignature() { - //Verify the signature is correct - if (!this.transactionSigned) - throw new Error( - "Transaction has not be been signed. Use the sign() method first." - ); - const stringBuffer = Buffer.from(this.sortedPayload.json); - const stringArray = new Uint8Array(stringBuffer); - return verify(this.sender, stringArray, this.signature); - } - sign(sk = undefined, userWallet = undefined) { - const stringBuffer = Buffer.from(this.sortedPayload.json); - const stringArray = new Uint8Array(stringBuffer); - if (userWallet) this.signature = userWallet.sign(stringArray); - else this.signature = sign(sk, stringArray); - this.transactionSigned = true; - } - sortObject(object) { - const processObj = (obj) => { - const getType = (value) => { - return Object.prototype.toString.call(value); - }; - const isArray = (value) => { - if (getType(value) === "[object Array]") return true; - return false; - }; - const isObject = (value) => { - if (getType(value) === "[object Object]") return true; - return false; - }; - - const sortObjKeys = (unsorted) => { - const sorted = {}; - Object.keys(unsorted) - .sort() - .forEach((key) => (sorted[key] = unsorted[key])); - return sorted; - }; - - const formatKeys = (unformatted) => { - Object.keys(unformatted).forEach((key) => { - if (isArray(unformatted[key])) - unformatted[key] = unformatted[key].map((item) => { - if (isObject(item)) return formatKeys(item); - return item; - }); - if (isObject(unformatted[key])) unformatted[key] = formatKeys(unformatted[key]); - }); - return sortObjKeys(unformatted); - }; - - if (!isObject(obj)) throw new TypeError("Not a valid Object"); - try { - obj = JSON.parse(JSON.stringify(obj)); - } catch (e) { - throw new TypeError("Not a valid JSON Object"); - } - return formatKeys(obj); - }; - const orderedObj = processObj(object); - return { - orderedObj, - json: JSON.stringify(orderedObj), - }; - } - async getNonce(callback = undefined) { - let timestamp = new Date().toUTCString(); - this.nonceResult = await this.API.getNonce(this.sender); - if (typeof this.nonceResult.nonce === "undefined") { - throw new Error(this.nonceResult); - } - this.nonceResult.timestamp = timestamp; - this.nonce = this.nonceResult.nonce; - this.processor = this.nonceResult.processor; - this.nonceMasternode = this.nonceResult.masternode; - //Create payload object - this.makePayload(); - - if (!callback) return this.nonceResult; - return callback(this.nonceResult); - } - async send(sk = undefined, masternode = undefined, callback = undefined) { - //Error if transaction is not signed and no sk provided to the send method to sign it before sending - if (!validateTypes$2.isStringWithValue(sk) && !this.transactionSigned) { - throw new Error( - `Transation Not Signed: Private key needed or call sign() first` - ); - } - - let timestamp = new Date().toUTCString(); - - try { - //If the nonce isn't set attempt to get it - if (isNaN(this.nonce) || !validateTypes$2.isStringWithValue(this.processor)) - await this.getNonce(); - //if the sk is provided then sign the transaction - if (validateTypes$2.isStringWithValue(sk)) this.sign(sk); - //Serialize transaction - this.makeTransaction(); - //Send transaction to the masternode - let masternodeURL = masternode; - if (!masternodeURL && this.nonceMasternode) masternodeURL = this.nonceMasternode; - let response = await this.API.sendTransaction(this.tx, masternodeURL); - //Set error if txSendResult doesn't exist - if (!response || validateTypes$2.isStringWithValue(response)) { - this.txSendResult.errors = [response || "Unknown Transaction Error"]; - } else { - if (response.error) this.txSendResult.errors = [response.error]; - else this.txSendResult = response; - } - } catch (e) { - this.txSendResult.errors = [e.message]; - } - this.txSendResult.timestamp = timestamp; - return this.handleMasterNodeResponse(this.txSendResult, callback); - } - checkForTransactionResult(callback = undefined) { - return new Promise((resolve) => { - let timerId = setTimeout( - async function checkTx() { - this.txCheckAttempts = this.txCheckAttempts + 1; - let res = await this.API.checkTransaction(this.txHash); - let checkAgain = false; - let timestamp = new Date().toUTCString(); - if (typeof res === "string" || !res) { - if (this.txCheckAttempts < this.txCheckLimit) { - checkAgain = true; - } else { - this.txCheckResult.errors = [ - `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, - res, - ]; - } - } else { - if (res.error) { - if (res.error === "Transaction not found.") { - if (this.txCheckAttempts < this.txCheckLimit) { - checkAgain = true; - } else { - this.txCheckResult.errors = [ - res.error, - `Retry Attmpts ${this.txCheckAttempts} hit while checking for Tx Result.`, - ]; - } - } else { - this.txCheckResult.errors = [res.error]; - } - } else { - this.txCheckResult = res; - } - } - if (checkAgain) timerId = setTimeout(checkTx.bind(this), 1000); - else { - if (validateTypes$2.isNumber(this.txCheckResult.status)) { - if (this.txCheckResult.status > 0) { - if (!validateTypes$2.isArray(this.txCheckResult.errors)) - this.txCheckResult.errors = []; - this.txCheckResult.errors.push("This transaction returned a non-zero status code"); - } - } - this.txCheckResult.timestamp = timestamp; - clearTimeout(timerId); - resolve(this.handleMasterNodeResponse(this.txCheckResult, callback)); - } - }.bind(this), - 1000 - ); - }); - } - handleMasterNodeResponse(result, callback = undefined) { - //Check to see if this is a successful transacation submission - if ( - validateTypes$2.isStringWithValue(result.hash) && - validateTypes$2.isStringWithValue(result.success) - ) { - this.txHash = result.hash; - this.setPendingBlockInfo(); - } else { - this.setBlockResultInfo(result); - this.txBlockResult = result; - } - this.events.emit("response", result, this.resultInfo.subtitle); - if (validateTypes$2.isFunction(callback)) callback(result); - return result; - } - setPendingBlockInfo() { - this.resultInfo = { - title: "Transaction Pending", - subtitle: "Your transaction was submitted and is being processed", - message: `Tx Hash: ${this.txHash}`, - type: "success", - }; - return this.resultInfo; - } - setBlockResultInfo(result) { - let erroredTx = false; - let errorText = `returned an error and `; - let statusCode = validateTypes$2.isNumber(result.status) ? result.status : undefined; - let stamps = result.stampsUsed || result.stamps_used || 0; - let message = ""; - if (validateTypes$2.isArrayWithValues(result.errors)) { - erroredTx = true; - message = `This transaction returned ${result.errors.length} errors.`; - if (result.result) { - if (result.result.includes("AssertionError")) result.errors.push(result.result); - } - } - if (statusCode && erroredTx) errorText = `returned status code ${statusCode} and `; - - this.resultInfo = { - title: `Transaction ${erroredTx ? "Failed" : "Successful"}`, - subtitle: `Your transaction ${erroredTx ? `${errorText} ` : ""}used ${stamps} stamps`, - message, - type: `${erroredTx ? "error" : "success"}`, - errorInfo: erroredTx ? result.errors : undefined, - returnResult: result.result || "", - stampsUsed: stamps, - statusCode, - }; - return this.resultInfo; - } - getResultInfo() { - return this.resultInfo; - } - getTxInfo() { - return { - senderVk: this.sender, - contractName: this.contract, - methodName: this.method, - kwargs: this.kwargs, - stampLimit: this.stampLimit, - }; - } - getAllInfo() { - return { - uid: this.uid, - txHash: this.txHash, - signed: this.transactionSigned, - tx: this.tx, - signature: this.signature, - networkInfo: this.getNetworkInfo(), - txInfo: this.getTxInfo(), - txSendResult: this.txSendResult, - txBlockResult: this.txBlockResult, - resultInfo: this.getResultInfo(), - nonceResult: this.nonceResult, - }; - } -} - -const { validateTypes: validateTypes$1 } = validators; - -class TransactionBatcher extends Network { - constructor(networkInfo) { - if (validateTypes$1.isSpecificClass(networkInfo, 'Network')) - super(networkInfo.getNetworkInfo()); - else super(networkInfo); - - this.txBatches = {}; - this.overflow = []; - this.nonceResults = {}; - this.running = false; - } - addTransaction(txInfo){ - if (this.running) { - this.overflow.push(txInfo); - return - } - this.validateTransactionInfo(txInfo); - if (!this.txBatches[txInfo.senderVk]) this.txBatches[txInfo.senderVk] = []; - this.txBatches[txInfo.senderVk].push(txInfo); - } - addTransactionList(txList){ - txList.forEach(txInfo => this.addTransaction(txInfo)); - } - processOverflow(){ - const overflow = this.overflow; - this.overflow = []; - overflow.forEach(txInfo => this.addTransaction(txInfo)); - } - hasTransactions(){ - let test = Object.keys(this.txBatches).map(senderVk => this.txBatches[senderVk].length); - test.filter(f => f === 0); - if (test.length > 0 ) return true - return false - } - validateTransactionInfo(txInfo){ - try{ - new TransactionBuilder(txInfo); - }catch(e){ - return false - } - return true - } - async getStartingNonce(senderVk, callback = undefined){ - let timestamp = new Date().toUTCString(); - let response = await this.API.getNonce(senderVk); - if (typeof response.nonce === 'undefined'){ - throw new Error(response) - } - response.timestamp = timestamp; - this.nonceResults[senderVk] = response; - - if (callback) callback(response); - return response; - } - async sendAllBatches(keyDict){ - if (this.running) return - let sentTransactions = []; - this.running = true; - - await Promise.all(Object.keys(this.txBatches).map((senderVk) => { - const senderBatch = this.txBatches[senderVk].splice(0,15); - if (senderBatch.length <= 15) delete this.txBatches[senderVk]; - - return new Promise(async (resolver) => { - if (senderBatch.length === 0 ) resolver(); - - if (!keyDict[senderVk]) throw new Error(`Cannot sign batch for ${senderVk}. No signing key provided.`) - let nonceResponse = await this.getStartingNonce(senderVk); - let txBatch = this.setBatchNonces(nonceResponse, senderBatch); - this.signBatch(txBatch, keyDict[senderVk]); - this.sendBatch(txBatch).then(sentList => { - sentTransactions = [...sentTransactions, ...sentList]; - resolver(); - }); - }) - })); - - try{ - return Promise.all(sentTransactions) - }catch (e){} - finally{ - this.running = false; - this.processOverflow(); - } - } - setBatchNonces(nonceResult, txList){ - return txList.map((txInfo, index) => { - txInfo.nonce = nonceResult.nonce + index; - txInfo.processor = nonceResult.processor; - return new TransactionBuilder({hosts: [nonceResult.masternode]}, txInfo) - }).sort((a, b) => a.nonce - b.nonce) - } - signBatch(txBatch, key){ - txBatch.forEach(txBuilder => txBuilder.sign(key)); - } - sendBatch(txBatch){ - let resolvedTransactions = []; - return new Promise(resolver => { - const resolve = (index) => { - if ((index + 1) === txBatch.length) resolver(resolvedTransactions); - }; - txBatch.forEach((txBuilder, index) => { - const delayedSend = () => { - resolvedTransactions[index] = txBuilder.send().then(() => {return txBuilder}); - resolve(index); - }; - setTimeout(delayedSend, 1200 * index); - }); - }) - } -} - -const { validateTypes, assertTypes } = validators; - -class Keystore { - /** - * Lamden Keystores - * - * This Class will create a lamden keystore instance - * - * @param {Object|undefined} arg constructor argument - * @param {String|undefined} arg.key Create an instance and load it with one private key - * @param {String|undefined} arg.keyList Create an instance and load it with an array of private keys - * @param {String|undefined} arg.keystoreData Create an instance from an existing keystore file data - * @return {Keystore} - */ - constructor(arg = undefined) { - this.KEYSTORE_VERSION = "1.0"; - this.password = null; - this.encryptedData = null; - - this.keyList = (() => { - let keyList = []; - let outerClass = this; - let wallets = []; - - const addKey = (key) => { - keyList.push(key); - createWallets(); - }; - const deleteKey = (position) => { - keyList.splice(position, 1); - createWallets(); - }; - const clearKeys = () => { - keyList = []; - createWallets(); - }; - const numOfKeys = () => keyList.length; - const createWallets = () => { - wallets = []; - keyList.forEach(keyInfo => { - let newWallet = create_wallet({sk: keyInfo.sk, keepPrivate: true}); - newWallet = {...newWallet, ...keyInfo}; - delete newWallet.sk; - wallets.push(newWallet); - }); - }; - const createKeystore = (password, hint = undefined) => { - return JSON.stringify({ - data: encryptObject(password, {version: outerClass.KEYSTORE_VERSION, keyList}), - w: !hint ? "" : encryptStrHash('n1ahcKc0lb', hint), - }); - }; - const decryptKeystore = (password, data) => { - let decrypted = decryptObject(password, data); - if (decrypted) { - assertTypes.isArray(decrypted.keyList); - decrypted.keyList.forEach(keyInfo => assertTypes.isStringWithValue(keyInfo.sk)); - decrypted.keyList.forEach(keyInfo => addKey(keyInfo)); - outerClass.version = decrypted.version; - } else { - throw new Error("Incorrect Keystore Password.") - } - }; - - return { - getWallets: () => wallets, - getWallet: (vk) => wallets.find(wallet => wallet.vk === vk), - addKey, - clearKeys, - numOfKeys, - deleteKey, - createKeystore, - decryptKeystore - } - })(); - - if (arg){ - if (arg.key) this.addKey(arg.key); - if (arg.keyList) this.addKeys(arg.keyList); - if (arg.keystoreData) this.addKeystoreData(arg.keystoreData); - } - } - /** - * Add a list of keys to add to the keystore - * @param {Array.} keyList An array of 32 character long Lamden private keys - */ - addKeys(keyList){ - assertTypes.isArray(keyList); - keyList.forEach(key => this.addKey(key)); - } - /** - * Add a key to the keystore - * @param {string} key A 32 character long Lamden private key - */ - addKey(keyInfo){ - assertTypes.isObjectWithKeys(keyInfo); - assertTypes.isStringWithValue(keyInfo.sk); - if (validateTypes.isStringWithValue(keyInfo.vk)) delete keyInfo.vk; - this.keyList.addKey(keyInfo); - } - /** - * Load the keystore with the data from an existing keystore - * @param {string} keystoreData The contents of an existing encrypted keystore file - */ - addKeystoreData(keystoreData){ - if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); - if(this.validateKeyStore(keystoreData)){ - this.encryptedData = keystoreData; - } - } - /** - * Returns the password hint in a keystore file - * @param {String|undefined} keystoreData The contents of an existing encrypted keystore file if one wasn't supplied to the constructor - */ - getPasswordHint(keystoreData = undefined){ - if (!this.encryptedData && !keystoreData) throw new Error("No keystore data found.") - - if (keystoreData) { - if (validateTypes.isString(keystoreData)) keystoreData = JSON.parse(keystoreData); - } - else keystoreData = this.encryptedData; - - if (keystoreData.w) return decryptStrHash('n1ahcKc0lb', keystoreData.w); - else return "" - } - /** - * Removes a specific key from the keyList - * @param {Number} keyIndex The index of the key you want to remove - */ - deleteKey(keyIndex){ - assertTypes.isInteger(keyIndex); - if (this.keyList.numOfKeys() === 0) return - if (keyIndex < 0 || keyIndex >= this.keyList.numOfKeys()) throw new Error("Key index out of range.") - this.keyList.deleteKey(keyIndex); - } - /** - * Clears all keys from the keystore - */ - clearKeys(){ - this.keyList.clearKeys(); - } - /** - * Clears all keys from the keystore - * @return {Array.} An array of wallet objects - */ - get wallets() { - return this.keyList.getWallets() - } - /** - * Load the keystore with the data from an existing keystore - * @param {String} vk A 32 character long Lamden public key - * @return {Object} A wallet object - */ - getWallet(vk) { - return this.keyList.getWallet(vk) - } - /** - * Used to validate that a keystore is the proper Lamden Format (does not decrypt data) - * @param {String} keystoreData The contents of an existing encrypted keystore file - * @return {Boolean} valid - * @throws {Error} This is not a valid keystore file. - */ - validateKeyStore(keystoreData){ - assertTypes.isObjectWithKeys(keystoreData); - try{ - let encryptedData = JSON.parse(keystoreData.data); - if (!encryptedData.ct || !encryptedData.iv || !encryptedData.s){ - throw new Error("This is not a valid keystore file.") - } - } catch (e) { - throw new Error("This is not a valid keystore file.") - } - return true; - } - /** - * Create a Keystore text string from the keys contained in the Keystore instance - * @param {String} password A password to encrypt the data - * @param {String|undefined} hint An optional password hint. Not stored in clear text (obsured) but not encrypted with the password. - * @return {String} A JSON stringified object containing the encrypted data - * @throws {Error} Any errors from the encyption process - */ - createKeystore(password, hint = undefined) { - assertTypes.isStringWithValue(password); - if (hint){ - assertTypes.isStringWithValue(hint); - } - return this.keyList.createKeystore(password, hint) - } - /** - * Decrypt a keystore into a useable array of wallets. Any decrypted keys will be added to existing keys in the keystore. - * @param {String} password A password to encrypt the data - * @param {String|undefined} keystoreData The encrypted contents from a keystore file if not passed into the constructor. - * @throws {Error} Any errors from the encyption process - */ - decryptKeystore(password, keystoreData = undefined){ - if (keystoreData) this.addKeystoreData(keystoreData); - if (!this.encryptedData) throw new Error ("No keystoreData to decrypt.") - try{ - this.keyList.decryptKeystore(password, this.encryptedData.data); - }catch (e){ - throw new Error("Incorrect Keystore Password.") - } - } -} - -globalThis.Buffer = buffer.Buffer; - -var index = { - TransactionBuilder, - TransactionBatcher, - Masternode_API: LamdenMasterNode_API, - Network, - wallet, - Keystore, - Encoder, - utils: utils$1, -}; - -export { index as default }; -//# sourceMappingURL=lamden.js.map +!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}async getNetworkInfo(){return await this.ping(),{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=1,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; diff --git a/package-lock.json b/package-lock.json index 0097f72..96422cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,6 +103,12 @@ "@babel/types": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, "@babel/helpers": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", @@ -658,6 +664,12 @@ "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -777,6 +789,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1364,6 +1382,34 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1430,6 +1476,12 @@ "safe-buffer": "^5.1.2" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -1816,6 +1868,40 @@ "@rollup/plugin-inject": "^4.0.0" } }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } + } + }, "rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -1842,6 +1928,15 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -1869,6 +1964,24 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -1965,6 +2078,25 @@ "has-flag": "^3.0.0" } }, + "terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", diff --git a/package.json b/package.json index fbe73b9..b030d46 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,6 @@ "@babel/core": "^7.8.4", "@rollup/plugin-alias": "^3.1.8", "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-inject": "^4.0.3", "@rollup/plugin-node-resolve": "^13.0.6", "buffer": "^6.0.3", "dotenv": "^8.2.0", @@ -56,6 +55,7 @@ "rollup-plugin-babel": "^4.3.3", "rollup-plugin-node-builtins": "^2.0.0", "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-polyfill-node": "^0.7.0" + "rollup-plugin-polyfill-node": "^0.7.0", + "rollup-plugin-terser": "^7.0.2" } } diff --git a/rollup.config.js b/rollup.config.js index 4552495..3f142a0 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,6 +2,7 @@ import nodePolyfills from "rollup-plugin-polyfill-node"; import { nodeResolve as resolve } from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; import alias from "@rollup/plugin-alias"; +import { terser } from "rollup-plugin-terser"; export default [ { @@ -18,6 +19,7 @@ export default [ resolve({ browser: true, preferBuiltins: false }), commonjs(), nodePolyfills(), + terser(), ], }, { From b1d28aa46b180e52e20c335dddfc2ebd0e8b2b0a Mon Sep 17 00:00:00 2001 From: yaezah Date: Wed, 10 Nov 2021 13:05:11 -0800 Subject: [PATCH 06/10] change txchecklimit back to 10 --- rollup.config.js | 2 +- src/js/transactionBuilder.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 3f142a0..1795b82 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,7 @@ import nodePolyfills from "rollup-plugin-polyfill-node"; -import { nodeResolve as resolve } from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; import alias from "@rollup/plugin-alias"; +import { nodeResolve as resolve } from "@rollup/plugin-node-resolve"; import { terser } from "rollup-plugin-terser"; export default [ diff --git a/src/js/transactionBuilder.js b/src/js/transactionBuilder.js index 375b7a1..1a1d53d 100644 --- a/src/js/transactionBuilder.js +++ b/src/js/transactionBuilder.js @@ -73,7 +73,7 @@ export class TransactionBuilder extends Network { this.txHash; this.txCheckResult = {}; this.txCheckAttempts = 0; - this.txCheckLimit = 1; + this.txCheckLimit = 10; //Hydrate other items if passed if (txData) { From e038bd24aa3d564407520febb10f0bd913acd59b Mon Sep 17 00:00:00 2001 From: yaezah Date: Tue, 16 Nov 2021 10:56:04 -0800 Subject: [PATCH 07/10] -rollup fix --- dist/cjs/lamden.js | 66 ++++--- dist/esm/lamden.js | 2 +- package-lock.json | 444 +-------------------------------------------- package.json | 4 +- 4 files changed, 44 insertions(+), 472 deletions(-) diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js index 49f6de2..19f92f6 100644 --- a/dist/cjs/lamden.js +++ b/dist/cjs/lamden.js @@ -21,14 +21,12 @@ function _interopNamespace(e) { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, - get: function () { - return e[k]; - } + get: function () { return e[k]; } }); } }); } - n['default'] = e; + n["default"] = e; return Object.freeze(n); } @@ -2832,9 +2830,9 @@ let create_wallet = (args = {}) => { function generate_keys(seed = null) { var kp = null; if (seed == null) { - kp = nacl__default['default'].sign.keyPair(); + kp = nacl__default["default"].sign.keyPair(); } else { - kp = nacl__default['default'].sign.keyPair.fromSeed(seed); + kp = nacl__default["default"].sign.keyPair.fromSeed(seed); } // In the JS implementation of the NaCL library the sk is the first 32 bytes of the secretKey // and the vk is the last 32 bytes of the secretKey as well as the publicKey @@ -2925,10 +2923,10 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { const seed = bip39__namespace.mnemonicToSeedSync(finalMnemonic).toString("hex"); const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32__default['default'].derivePath(derivationPath, seed, 0x80000000); + const { key, chainCode } = bip32__default["default"].derivePath(derivationPath, seed, 0x80000000); const privateKey = key.toString("hex"); - const publicKey = bip32__default['default'].getPublicKey(key, false).toString("hex"); + const publicKey = bip32__default["default"].getPublicKey(key, false).toString("hex"); if (publicKey !== get_vk(privateKey)) { throw Error("Bip32 public key does not match with Lamden public key!"); @@ -2973,7 +2971,7 @@ function sign(sk, msg) { // vk objects to exist in 32-byte string format (same as cilantro's // python implementation) when presented to the user. var jsnacl_sk = concatUint8Arrays(kp.sk, kp.vk); - return buf2hex(nacl__default['default'].sign.detached(msg, jsnacl_sk)); + return buf2hex(nacl__default["default"].sign.detached(msg, jsnacl_sk)); } /** * @param String vk @@ -2990,7 +2988,7 @@ function verify(vk, msg, sig) { var vkb = hex2buf(vk); var sigb = hex2buf(sig); try { - return nacl__default['default'].sign.detached.verify(msg, sigb, vkb); + return nacl__default["default"].sign.detached.verify(msg, sigb, vkb); } catch (_a) { return false; } @@ -3045,7 +3043,7 @@ class EventEmitter { // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js // fix for "Readable" isn't a named export issue -const Readable = Stream__default['default'].Readable; +const Readable = Stream__default["default"].Readable; const BUFFER = Symbol('buffer'); const TYPE = Symbol('type'); @@ -3197,7 +3195,7 @@ try { const INTERNALS = Symbol('Body internals'); // fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream__default['default'].PassThrough; +const PassThrough = Stream__default["default"].PassThrough; /** * Body mixin @@ -3230,7 +3228,7 @@ function Body(body) { } else if (ArrayBuffer.isView(body)) { // body is ArrayBufferView body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream__default['default']) ; else { + } else if (body instanceof Stream__default["default"]) ; else { // none of the above // coerce to string then buffer body = Buffer.from(String(body)); @@ -3243,7 +3241,7 @@ function Body(body) { this.size = size; this.timeout = timeout; - if (body instanceof Stream__default['default']) { + if (body instanceof Stream__default["default"]) { body.on('error', function (err) { const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); _this[INTERNALS].error = error; @@ -3399,7 +3397,7 @@ function consumeBody() { } // istanbul ignore if: should never happen - if (!(body instanceof Stream__default['default'])) { + if (!(body instanceof Stream__default["default"])) { return Body.Promise.resolve(Buffer.alloc(0)); } @@ -3572,7 +3570,7 @@ function clone$1(instance) { // check that body is a stream and not form-data object // note: we can't clone the form-data object without having it as a dependency - if (body instanceof Stream__default['default'] && typeof body.getBoundary !== 'function') { + if (body instanceof Stream__default["default"] && typeof body.getBoundary !== 'function') { // tee instance body p1 = new PassThrough(); p2 = new PassThrough(); @@ -3620,7 +3618,7 @@ function extractContentType(body) { } else if (typeof body.getBoundary === 'function') { // detect form data input from form-data module return `multipart/form-data;boundary=${body.getBoundary()}`; - } else if (body instanceof Stream__default['default']) { + } else if (body instanceof Stream__default["default"]) { // body is stream // can't really do much about this return null; @@ -4074,7 +4072,7 @@ function createHeadersLenient(obj) { const INTERNALS$1 = Symbol('Response internals'); // fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http__default['default'].STATUS_CODES; +const STATUS_CODES = http__default["default"].STATUS_CODES; /** * Response class @@ -4175,10 +4173,10 @@ Object.defineProperty(Response.prototype, Symbol.toStringTag, { const INTERNALS$2 = Symbol('Request internals'); // fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url__default['default'].parse; -const format_url = Url__default['default'].format; +const parse_url = Url__default["default"].parse; +const format_url = Url__default["default"].format; -const streamDestructionSupported = 'destroy' in Stream__default['default'].Readable.prototype; +const streamDestructionSupported = 'destroy' in Stream__default["default"].Readable.prototype; /** * Check if a value is an instance of Request. @@ -4341,7 +4339,7 @@ function getNodeRequestOptions(request) { throw new TypeError('Only HTTP(S) protocols are supported'); } - if (request.signal && request.body instanceof Stream__default['default'].Readable && !streamDestructionSupported) { + if (request.signal && request.body instanceof Stream__default["default"].Readable && !streamDestructionSupported) { throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); } @@ -4416,8 +4414,8 @@ AbortError.prototype.constructor = AbortError; AbortError.prototype.name = 'AbortError'; // fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream__default['default'].PassThrough; -const resolve_url = Url__default['default'].resolve; +const PassThrough$1 = Stream__default["default"].PassThrough; +const resolve_url = Url__default["default"].resolve; /** * Fetch function @@ -4441,7 +4439,7 @@ function fetch(url, opts) { const request = new Request(url, opts); const options = getNodeRequestOptions(request); - const send = (options.protocol === 'https:' ? https__default['default'] : http__default['default']).request; + const send = (options.protocol === 'https:' ? https__default["default"] : http__default["default"]).request; const signal = request.signal; let response = null; @@ -4449,7 +4447,7 @@ function fetch(url, opts) { const abort = function abort() { let error = new AbortError('The user aborted a request.'); reject(error); - if (request.body && request.body instanceof Stream__default['default'].Readable) { + if (request.body && request.body instanceof Stream__default["default"].Readable) { request.body.destroy(error); } if (!response || !response.body) return; @@ -4613,13 +4611,13 @@ function fetch(url, opts) { // by common browsers. // Always using Z_SYNC_FLUSH is what cURL does. const zlibOptions = { - flush: zlib__default['default'].Z_SYNC_FLUSH, - finishFlush: zlib__default['default'].Z_SYNC_FLUSH + flush: zlib__default["default"].Z_SYNC_FLUSH, + finishFlush: zlib__default["default"].Z_SYNC_FLUSH }; // for gzip if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib__default['default'].createGunzip(zlibOptions)); + body = body.pipe(zlib__default["default"].createGunzip(zlibOptions)); response = new Response(body, response_options); resolve(response); return; @@ -4633,9 +4631,9 @@ function fetch(url, opts) { raw.once('data', function (chunk) { // see http://stackoverflow.com/questions/37519828 if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib__default['default'].createInflate()); + body = body.pipe(zlib__default["default"].createInflate()); } else { - body = body.pipe(zlib__default['default'].createInflateRaw()); + body = body.pipe(zlib__default["default"].createInflateRaw()); } response = new Response(body, response_options); resolve(response); @@ -4644,8 +4642,8 @@ function fetch(url, opts) { } // for br - if (codings == 'br' && typeof zlib__default['default'].createBrotliDecompress === 'function') { - body = body.pipe(zlib__default['default'].createBrotliDecompress()); + if (codings == 'br' && typeof zlib__default["default"].createBrotliDecompress === 'function') { + body = body.pipe(zlib__default["default"].createBrotliDecompress()); response = new Response(body, response_options); resolve(response); return; @@ -8100,7 +8098,7 @@ class TransactionBuilder extends Network { this.txHash; this.txCheckResult = {}; this.txCheckAttempts = 0; - this.txCheckLimit = 1; + this.txCheckLimit = 10; //Hydrate other items if passed if (txData) { diff --git a/dist/esm/lamden.js b/dist/esm/lamden.js index 0b0866b..4ec7c58 100644 --- a/dist/esm/lamden.js +++ b/dist/esm/lamden.js @@ -19,4 +19,4 @@ var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a */ function(e){const t=Pe,r=$e,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|d(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return f(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return f(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|c(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||V(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return u(e),o(e<0?0:0|c(e))}function l(e){const t=e.length<0?0:0|c(e.length),r=o(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function d(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:K(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return A(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){let o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(o=u));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(u=(15&t)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=d,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(t+=" ... "),""},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if($(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const u=Math.min(o,s),h=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return v(this,e,t,r);case"ascii":case"latin1":case"binary":return w(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function j(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function U(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function I(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function C(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=J((function(e,t=0){return L(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=J((function(e,t=0){return j(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=J((function(e,t=0){return L(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=J((function(e,t=0){return j(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return I(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return I(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return C(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return C(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function z(e,t,r,n,i,o){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||W(t,e.length-(r+1))}(n,i,o)}function q(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,r){if(Math.floor(e)!==e)throw q(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}P("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),P("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),P("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=D(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=D(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const F=/[^+/0-9A-Za-z-_]/g;function K(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const G=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function J(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}}(Ne),function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Ce,Ce.exports),Ve.prototype=Object.create(null),Ge.EventEmitter=Ge,Ge.usingDomains=!1,Ge.prototype.domain=void 0,Ge.prototype._events=void 0,Ge.prototype._maxListeners=void 0,Ge.defaultMaxListeners=10,Ge.init=function(){this.domain=null,Ge.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ve,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ge.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ge.prototype.getMaxListeners=function(){return Je(this)},Ge.prototype.emit=function(e){var t,r,n,i,o,a,s,u="error"===e;if(a=this._events)u=u&&null==a.error;else if(!u)return!1;if(s=this.domain,u){if(t=arguments[1],!s){if(t instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:Xe(r,l,this);break;case 2:Ze(r,l,this,arguments[1]);break;case 3:Qe(r,l,this,arguments[1],arguments[2]);break;case 4:et(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ve,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var at=Object.freeze({__proto__:null,default:Ge,EventEmitter:Ge});function st(){throw new Error("setTimeout has not been defined")}function ut(){throw new Error("clearTimeout has not been defined")}var ht=st,lt=ut;function ft(e){if(ht===setTimeout)return setTimeout(e,0);if((ht===st||!ht)&&setTimeout)return ht=setTimeout,setTimeout(e,0);try{return ht(e,0)}catch(t){try{return ht.call(null,e,0)}catch(t){return ht.call(this,e,0)}}}"function"==typeof N.setTimeout&&(ht=setTimeout),"function"==typeof N.clearTimeout&&(lt=clearTimeout);var ct,dt=[],pt=!1,gt=-1;function yt(){pt&&ct&&(pt=!1,ct.length?dt=ct.concat(dt):gt=-1,dt.length&&bt())}function bt(){if(!pt){var e=ft(yt);pt=!0;for(var t=dt.length;t;){for(ct=dt,dt=[];++gt1)for(var r=1;r=a)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),u=i[n];n=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),c(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),u(n,e,n.depth)}function a(e,t){var r=o.styles[t];return r?"["+o.colors[r][0]+"m"+e+"["+o.colors[r][1]+"m":e}function s(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&_(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(g(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(p(t))return e.stylize(""+t,"number");if(c(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(o)return o;var a=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),w(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(_(r)){var m=r.name?": "+r.name:"";return e.stylize("[Function"+m+"]","special")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(v(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var E,S="",k=!1,x=["{","}"];(f(r)&&(k=!0,x=["[","]"]),_(r))&&(S=" [Function"+(r.name?": "+r.name:"")+"]");return b(r)&&(S=" "+RegExp.prototype.toString.call(r)),v(r)&&(S=" "+Date.prototype.toUTCString.call(r)),w(r)&&(S=" "+h(r)),0!==a.length||k&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),E=k?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(E,S,x)):x[0]+S+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function l(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),R(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=d(r)?u(e,h.value,null):u(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function c(e){return"boolean"==typeof e}function d(e){return null===e}function p(e){return"number"==typeof e}function g(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return m(e)&&"[object RegExp]"===E(e)}function m(e){return"object"==typeof e&&null!==e}function v(e){return m(e)&&"[object Date]"===E(e)}function w(e){return m(e)&&("[object Error]"===E(e)||e instanceof Error)}function _(e){return"function"==typeof e}function E(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(n)&&(n=Mt.env.NODE_DEBUG||""),e=e.toUpperCase(),!i[e])if(new RegExp("\\b"+e+"\\b","i").test(n)){var r=Mt.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=c,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=p,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=m,t.isDate=v,t.isError=w,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=jt;var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",x(),t.format.apply(t,arguments))},t.inherits=Ie.exports,t._extend=function(e,t){if(!t||!m(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}(Lt),Ut.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},Ut.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},Ut.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},Ut.prototype.clear=function(){this.head=this.tail=null,this.length=0},Ut.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},Ut.prototype.concat=function(e){if(0===this.length)return Ne.Buffer.alloc(0);if(1===this.length)return this.head.data;for(var t=Ne.Buffer.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var It={},Ct=Ce.exports.Buffer,Nt=Ct.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};var Pt=It.StringDecoder=Dt;function Dt(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(Ct.isEncoding===Nt||!Nt(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=Wt,this.end=Ft,t=4;break;case"utf8":this.fillLast=qt,t=4;break;case"base64":this.text=Kt,this.end=Yt,t=3;break;default:return this.write=Ht,void(this.end=$t)}this.lastNeed=0,this.lastTotal=0,this.lastChar=Ct.allocUnsafe(t)}function zt(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function qt(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function Wt(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Ft(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Kt(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Yt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ht(e){return e.toString(this.encoding)}function $t(e){return e&&e.length?this.write(e):""}Dt.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Dt.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Jt.ReadableState=Gt;var Vt=Lt.debuglog("stream");function Gt(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Sr&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ut,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Pt(e.encoding),this.encoding=e.encoding)}function Jt(e){if(!(this instanceof Jt))return new Jt(e);this._readableState=new Gt(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),Ge.call(this)}function Xt(e,t,r,n,i){var o=function(e,t){var r=null;X.isBuffer(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,Qt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&Qt(e))),function(e,t){t.readingMore||(t.readingMore=!0,mt(tr,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Qt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Vt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?mt(er,e):er(e))}function er(e){Vt("emit readable"),e.emit("readable"),ir(e)}function tr(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=X.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function ar(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,mt(sr,t,e))}function sr(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function ur(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return Vt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ar(this):Qt(this),null;if(0===(e=Zt(e,t))&&t.ended)return 0===t.length&&ar(this),null;var n,i=t.needReadable;return Vt("need readable",i),(0===t.length||t.length-e0?or(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ar(this)),null!==n&&this.emit("data",n),n},Jt.prototype._read=function(e){this.emit("error",new Error("not implemented"))},Jt.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,Vt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:h;function o(e){Vt("onunpipe"),e===r&&h()}function a(){Vt("onend"),e.end()}n.endEmitted?mt(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;Vt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,ir(e))}}(r);e.on("drain",s);var u=!1;function h(){Vt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",c),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",h),r.removeListener("data",f),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var l=!1;function f(t){Vt("ondata"),l=!1,!1!==e.write(t)||l||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ur(n.pipes,e))&&!u&&(Vt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function c(t){var r;Vt("onerror",t),g(),e.removeListener("error",c),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),g()}function p(){Vt("onfinish"),e.removeListener("close",d),g()}function g(){Vt("unpipe"),r.unpipe(e)}return r.on("data",f),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",c),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(Vt("pipe resume"),r.resume()),e},Jt.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this)),this;if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},cr.prototype._write=function(e,t,r){r(new Error("not implemented"))},cr.prototype._writev=null,cr.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,mr(e,t),r&&(t.finished?mt(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Lt.inherits(Sr,Jt);for(var wr=Object.keys(cr.prototype),_r=0;_r64?t=e(t):t.length<64&&(t=Pr.concat([t,zr],64));for(var r=this._ipad=Pr.allocUnsafe(64),n=this._opad=Pr.allocUnsafe(64),i=0;i<64;i++)r[i]=54^t[i],n[i]=92^t[i];this._hash=[r]}Nr(qr,Dr),qr.prototype._update=function(e){this._hash.push(e)},qr.prototype._final=function(){var e=this._alg(Pr.concat(this._hash));return this._alg(Pr.concat([this._opad,e]))};var Wr=qr,Fr={exports:{}}; /*! safe-buffer. MIT License. Feross Aboukhadijeh */ -!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}async getNetworkInfo(){return await this.ping(),{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=1,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; +!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}async getNetworkInfo(){return await this.ping(),{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=10,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; diff --git a/package-lock.json b/package-lock.json index 96422cb..654e41d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -85,15 +85,6 @@ "@babel/types": "^7.8.3" } }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, "@babel/helper-split-export-declaration": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", @@ -453,26 +444,6 @@ "sprintf-js": "~1.0.2" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", @@ -522,12 +493,6 @@ } } }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -547,107 +512,12 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -658,24 +528,12 @@ "ieee754": "^1.2.1" } }, - "buffer-es6": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", - "integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=", - "dev": true - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -816,24 +674,6 @@ "safe-buffer": "~5.1.1" } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -859,25 +699,6 @@ "sha.js": "^2.4.8" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -908,41 +729,12 @@ "object-keys": "^1.0.12" } }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -982,35 +774,6 @@ } } }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -1059,28 +822,12 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "expect.js": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", @@ -1233,41 +980,12 @@ } } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1482,36 +1200,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1667,19 +1355,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -1716,34 +1391,6 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "process-es6": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", - "integrity": "sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1752,16 +1399,6 @@ "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "readdirp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", @@ -1801,61 +1438,21 @@ "inherits": "^2.0.1" } }, - "rollup-plugin-babel": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", - "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", + "rollup": { + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-node-builtins": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.0.0.tgz", - "integrity": "sha1-xvKR4WfpVg6+qH+/3Bq7RLCnweY=", - "dev": true, - "requires": { - "buffer-es6": "^4.9.2", - "crypto-browserify": "^3.11.0", - "process-es6": "^0.11.2" - } - }, - "rollup-plugin-node-globals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz", - "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==", - "dev": true, - "requires": { - "acorn": "^5.7.3", - "buffer-es6": "^4.9.3", - "estree-walker": "^0.5.2", - "magic-string": "^0.22.5", - "process-es6": "^0.11.6", - "rollup-pluginutils": "^2.3.1" + "fsevents": "~2.3.2" }, "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", - "dev": true - }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "vlq": "^0.2.2" - } + "optional": true } } }, @@ -1902,26 +1499,11 @@ } } }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2135,12 +1717,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index b030d46..72a80f7 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,7 @@ "dotenv": "^8.2.0", "expect.js": "^0.3.1", "mocha": "^7.2.0", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-node-builtins": "^2.0.0", - "rollup-plugin-node-globals": "^1.4.0", + "rollup": "^2.60.0", "rollup-plugin-polyfill-node": "^0.7.0", "rollup-plugin-terser": "^7.0.2" } From 01c2864ad5c75370878673d45d11949877e40a06 Mon Sep 17 00:00:00 2001 From: dapiguabc Date: Fri, 26 Nov 2021 13:34:47 +0800 Subject: [PATCH 08/10] add browsers test cases and fix the annotations --- dist/cjs/lamden.js | 16 +- package-lock.json | 3474 +++++++++++++++++++++- package.json | 14 +- src/js/keystore.js | 16 +- test/browsers/encoder-test.js | 295 ++ test/browsers/keystore-test.js | 378 +++ test/browsers/masternode_api-test.js | 341 +++ test/browsers/network-test.js | 132 + test/browsers/test.html | 21 + test/browsers/transactionBatcher-test.js | 242 ++ test/browsers/transactionBuilder-test.js | 437 +++ test/browsers/wallet-test.js | 172 ++ 12 files changed, 5520 insertions(+), 18 deletions(-) create mode 100644 test/browsers/encoder-test.js create mode 100644 test/browsers/keystore-test.js create mode 100644 test/browsers/masternode_api-test.js create mode 100644 test/browsers/network-test.js create mode 100644 test/browsers/test.html create mode 100644 test/browsers/transactionBatcher-test.js create mode 100644 test/browsers/transactionBuilder-test.js create mode 100644 test/browsers/wallet-test.js diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js index 19f92f6..762c94d 100644 --- a/dist/cjs/lamden.js +++ b/dist/cjs/lamden.js @@ -8591,7 +8591,13 @@ class Keystore { } /** * Add a list of keys to add to the keystore - * @param {Array.} keyList An array of 32 character long Lamden private keys + * @typedef {Object} keyinfo + * @property {string} sk - The private key. + * @property {string} nickname - The key nickname. + * @property {string} name - The key name. + * @property {string} network - Network name. + * @property {string} symbol - The token symbol. + * @param {Array.} keyList An array of keyinfo Object */ addKeys(keyList){ assertTypes.isArray(keyList); @@ -8599,7 +8605,13 @@ class Keystore { } /** * Add a key to the keystore - * @param {string} key A 32 character long Lamden private key + * @typedef {Object} keyinfo + * @property {string} sk - The private key. + * @property {string} nickname - The key nickname. + * @property {string} name - The key name. + * @property {string} network - Network name. + * @property {string} symbol - The token symbol. + * @param {keyinfo} keyInfo A keyinfo Object */ addKey(keyInfo){ assertTypes.isObjectWithKeys(keyInfo); diff --git a/package-lock.json b/package-lock.json index 654e41d..1825336 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,2919 @@ { "name": "lamden-js", "version": "2.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "assert": "1.4.1", + "bignumber.js": "^9.0.0", + "bip39": "^3.0.4", + "ed25519-hd-key": "^1.2.0", + "node-cryptojs-aes": "^0.4.0", + "node-fetch": "^2.6.1", + "tweetnacl": "1.0.1", + "types-validate-assert": "^1.0.1" + }, + "devDependencies": { + "@babel/core": "^7.8.4", + "@rollup/plugin-alias": "^3.1.8", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-node-resolve": "^13.0.6", + "buffer": "^6.0.3", + "dotenv": "^8.2.0", + "expect.js": "^0.3.1", + "koa": "^2.13.4", + "koa-static": "^5.0.0", + "mocha": "^7.2.0", + "rollup": "^2.60.0", + "rollup-plugin-polyfill-node": "^0.7.0", + "rollup-plugin-terser": "^7.0.2", + "selenium-webdriver": "^3.6.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.8.3" + } + }, + "node_modules/@babel/core": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz", + "integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helpers": "^7.8.4", + "@babel/parser": "^7.8.4", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", + "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "node_modules/@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", + "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.8.tgz", + "integrity": "sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==", + "dev": true, + "dependencies": { + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.3.tgz", + "integrity": "sha512-lzMXmj0LZjd67MI+M8H9dk/oCxR0TYqYAdZ6ZOejWQLSUtud+FUPu4NCMAO8KyWWAalFo8ean7yFHCMvCNsCZw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + } + }, + "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-inject/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "13.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.2.tgz", + "integrity": "sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dependencies": { + "util": "0.10.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bip39": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", + "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/bip39/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.1" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ed25519-hd-key": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.2.0.tgz", + "integrity": "sha512-pwES3tQ4Z8g3sfIBZEgtuTwFtHq5AlB9L8k9a48k7qPn74q2OmgrrgkdwyJ+P2GVTOBVCClAC7w21Wpksso3gw==", + "dependencies": { + "bip39": "3.0.2", + "create-hmac": "1.1.7", + "tweetnacl": "1.0.3" + } + }, + "node_modules/ed25519-hd-key/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + }, + "node_modules/ed25519-hd-key/node_modules/bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/ed25519-hd-key/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect.js": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", + "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dev": true, + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-send/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/koa-send/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/koa/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 8.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-cryptojs-aes": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-cryptojs-aes/-/node-cryptojs-aes-0.4.0.tgz", + "integrity": "sha1-ZM+6gMH7yfrDR8jrLCwSrb06igc=", + "engines": { + "node": "*" + } + }, + "node_modules/node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "dev": true, + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-polyfill-node": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.7.0.tgz", + "integrity": "sha512-iJLZDfvxcQh3SpC0OiYlZG9ik26aRM29hiC2sARbAPXYunB8rzW8GtVaWuJgiCtX1hNAo/OaYvVXfPp15fMs7g==", + "dev": true, + "dependencies": { + "@rollup/plugin-inject": "^4.0.0" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz", + "integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/types-validate-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/types-validate-assert/-/types-validate-assert-1.0.1.tgz", + "integrity": "sha512-SyTxYwMbxwMtSxmkjbXaWAA+kHWMrZLg4Y72osVwXy3u8LjKvDpye6zrcR4ifj0V0pE7Qa/H0uH9LtmqL0NLew==" + }, + "node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ylru": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", + "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.8.3", @@ -404,6 +3315,16 @@ "integrity": "sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw==", "dev": true }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", @@ -540,6 +3461,16 @@ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", "dev": true }, + "cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -632,6 +3563,12 @@ } } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -665,6 +3602,21 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -674,6 +3626,22 @@ "safe-buffer": "~5.1.1" } }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -714,6 +3682,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -729,6 +3703,24 @@ "object-keys": "^1.0.12" } }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -774,12 +3766,24 @@ } } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, "es-abstract": { "version": "1.17.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", @@ -810,6 +3814,12 @@ "is-symbol": "^1.0.2" } }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -861,6 +3871,12 @@ "is-buffer": "~2.0.3" } }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -943,11 +3959,20 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -986,12 +4011,55 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "requires": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + } + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1055,6 +4123,15 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -1094,6 +4171,12 @@ "has-symbols": "^1.0.1" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1159,6 +4242,138 @@ "minimist": "^1.2.0" } }, + "jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "requires": { + "tsscmp": "1.0.6" + } + }, + "koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dev": true, + "requires": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "requires": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + } + }, + "koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -1194,12 +4409,33 @@ "safe-buffer": "^5.1.2" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1262,6 +4498,12 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, "node-cryptojs-aes": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-cryptojs-aes/-/node-cryptojs-aes-0.4.0.tgz", @@ -1322,6 +4564,15 @@ "es-abstract": "^1.17.0-next.1" } }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1331,6 +4582,18 @@ "wrappy": "1" } }, + "only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1355,6 +4618,18 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -1391,6 +4666,12 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1399,6 +4680,29 @@ "safe-buffer": "^5.1.0" } }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, "readdirp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", @@ -1429,6 +4733,57 @@ "path-parse": "^1.0.6" } }, + "resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "dev": true, + "requires": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -1504,6 +4859,24 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1525,6 +4898,18 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -1576,6 +4961,20 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -1628,14 +5027,6 @@ "es-abstract": "^1.17.5" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -1679,6 +5070,15 @@ } } }, + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1694,11 +5094,33 @@ "is-number": "^7.0.0" } }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true + }, "tweetnacl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz", "integrity": "sha512-kcoMoKTPYnoeS50tzoqjPY3Uv9axeuuFAZY9M/9zFnhoVvRfxz9K29IMPD7jGmt2c8SW7i3gT9WqDl2+nV7p4A==" }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "types-validate-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/types-validate-assert/-/types-validate-assert-1.0.1.tgz", @@ -1717,6 +5139,12 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -1786,6 +5214,22 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -1858,6 +5302,12 @@ "lodash": "^4.17.15", "yargs": "^13.3.0" } + }, + "ylru": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", + "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "dev": true } } } diff --git a/package.json b/package.json index 72a80f7..e1301e2 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "dist/cjs/lamden.js", "module": "dist/esm/lamden.js", "scripts": { - "test": "npm run build && mocha", + "test": "npm run build && mocha --recursive --timeout 10000", "tests": "npm run test", "test-network": "npm run build && mocha test/network-test.js", "test-masternode-api": "npm run build && mocha test/masternode_api-test.js", @@ -14,6 +14,13 @@ "test-wallet": "npm run build && mocha test/wallet-test.js", "test-encoder": "npm run build && mocha test/encoder-test.js", "test-keystore": "npm run build && mocha test/keystore-test.js", + "browsers:test-network": "npm run build && mocha test/browsers/network-test.js --timeout 10000", + "browsers:test-masternode-api": "npm run build && mocha test/browsers/masternode_api-test.js --timeout 10000", + "browsers:test-transaction-builder": "npm run build && mocha test/browsers/transactionBuilder-test.js --timeout 10000", + "browsers:test-transaction-batcher": "npm run build && mocha test/browsers/transactionBatcher-test.js --timeout 10000", + "browsers:test-wallet": "npm run build && mocha test/browsers/wallet-test.js --timeout 10000", + "browsers:test-encoder": "npm run build && mocha test/browsers/encoder-test.js --timeout 10000", + "browsers:test-keystore": "npm run build && mocha test/browsers/keystore-test.js --timeout 10000", "build": "rollup --config", "doc": "doxdox 'src/js/keystore.js' --layout markdown --output docs/keystore.md" }, @@ -51,9 +58,12 @@ "buffer": "^6.0.3", "dotenv": "^8.2.0", "expect.js": "^0.3.1", + "koa": "^2.13.4", + "koa-static": "^5.0.0", "mocha": "^7.2.0", "rollup": "^2.60.0", "rollup-plugin-polyfill-node": "^0.7.0", - "rollup-plugin-terser": "^7.0.2" + "rollup-plugin-terser": "^7.0.2", + "selenium-webdriver": "^3.6.0" } } diff --git a/src/js/keystore.js b/src/js/keystore.js index 569c649..6d48796 100644 --- a/src/js/keystore.js +++ b/src/js/keystore.js @@ -85,7 +85,13 @@ export class Keystore { } /** * Add a list of keys to add to the keystore - * @param {Array.} keyList An array of 32 character long Lamden private keys + * @typedef {Object} keyinfo + * @property {string} sk - The private key. + * @property {string} nickname - The key nickname. + * @property {string} name - The key name. + * @property {string} network - Network name. + * @property {string} symbol - The token symbol. + * @param {Array.} keyList An array of keyinfo Object */ addKeys(keyList){ assertTypes.isArray(keyList) @@ -93,7 +99,13 @@ export class Keystore { } /** * Add a key to the keystore - * @param {string} key A 32 character long Lamden private key + * @typedef {Object} keyinfo + * @property {string} sk - The private key. + * @property {string} nickname - The key nickname. + * @property {string} name - The key name. + * @property {string} network - Network name. + * @property {string} symbol - The token symbol. + * @param {keyinfo} keyInfo A keyinfo Object */ addKey(keyInfo){ assertTypes.isObjectWithKeys(keyInfo) diff --git a/test/browsers/encoder-test.js b/test/browsers/encoder-test.js new file mode 100644 index 0000000..29ef924 --- /dev/null +++ b/test/browsers/encoder-test.js @@ -0,0 +1,295 @@ +const { Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + +const dateString = "2020-07-28T19:16:35.059Z"; +const millisecondsDelta = 475200000; + +describe('Browsers Tests: Test Type Encoder', function () { + let driver; + let server; + const app = new Koa(); + const port = 6800; + + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + await driver.sleep(2000) + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("TYPES", () => { + it("Encoder rejects unknown TYPE", async () => { + await driver.executeScript("return Lamden.Encoder('nope', {})").catch(e=>{ + expect(e.toString()).to.contain("Error: nope is not a valid encoder type"); + }) + }); + }); + + context("BigNumber", () => { + it("Encoder can call BigNumber", async () => { + let val = await driver.executeScript("return Lamden.Encoder.BigNumber.sum(1, 2).toString()"); + expect(val).to.be("3"); + }); + }); + + context("Strings", () => { + it("encodes a string from a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('str', 'string')"); + expect(val).to.be("string"); + }); + it("encodes a number as a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('str', 1)"); + expect(val).to.be("1"); + }); + it("encodes a boolean as a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('str', true)"); + expect(val).to.be("true"); + }); + it("encodes a Date as a string", async () => { + let val = await driver.executeScript(`return Lamden.Encoder('str', new Date('${dateString}'))`); + expect(val).to.be("2020-07-28T19:16:35.059Z"); + }); + it("encodes a Dict as a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('str', {})"); + expect(val).to.be("{}"); + }); + it("encodes a List as a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('str', [])"); + expect(val).to.be("[]"); + }); + }); + +context("Integers", () => { + it("encodes a integer from an integer", async () => { + let val = await driver.executeScript("return Lamden.Encoder('int', 1)"); + expect(val).to.be(1); + }); + it("encodes a integer from a float", async () => { + let val = await driver.executeScript("return Lamden.Encoder('int', 1.5)"); + expect(val).to.be(1); + }); + it("encodes a integer from a string", async () => { + let val = await driver.executeScript("return Lamden.Encoder('int', '1.5')"); + expect(val).to.be(1); + }); + it("fails to encode non-integer values", async () => { + await driver.executeScript("return Lamden.Encoder('int', true)").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + }); + }); + context("Floats", () => { + it("encodes a __fixed__ object from an float", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', 1.5)"))).to.be(JSON.stringify({ __fixed__: "1.5" })); + }); + it("encodes a __fixed__ object to integer", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', 1)"))).to.be(JSON.stringify({ __fixed__: "1.0" })); + }); + it("encodes a __fixed__ object with zeros as decimals to an integer", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', 1.0)"))).to.be(JSON.stringify({ __fixed__: "1.0" })); + }); + it("encodes a __fixed__ object from a string", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', '1.5')"))).to.be(JSON.stringify({ __fixed__: "1.5" })); + }); + it("encodes a __fixed__ object from a float and loses percision", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', 0.9999999999999999999999999999999)"))).to.be(JSON.stringify({ __fixed__: "1.0" })); + }); + it("encodes __fixed__ object float from a string and retains precision", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', '0.9999999999999999999999999999999')"))).to.be(JSON.stringify({ __fixed__: "0.999999999999999999999999999999" })); + }); + it("encodes __fixed__ object float from a bigNumber Object and retains precision", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('float', Lamden.Encoder('bigNumber', '0.9999999999999999999999999999999'))"))).to.be(JSON.stringify({ __fixed__: "0.999999999999999999999999999999" })); + }); + it("fails to encode non-float values", async () => { + await driver.executeScript("return Lamden.Encoder('float', true)").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + }); + }); + context("Boolean", async () => { + it("encodes a boolean from a boolean", async () => { + expect(await driver.executeScript("return Lamden.Encoder('bool', true)")).to.be(true); + expect(await driver.executeScript("return Lamden.Encoder('bool', false)")).to.be(false); + }); + it("encodes a boolean from a number", async () => { + expect( await driver.executeScript("return Lamden.Encoder('bool', 1)")).to.be(true); + expect(await driver.executeScript("return Lamden.Encoder('bool', 0)")).to.be(false); + }); + it("encodes a boolean from a string", async () => { + expect(await driver.executeScript("return Lamden.Encoder('bool', 'true')")).to.be(true); + expect(await driver.executeScript("return Lamden.Encoder('bool', 'false')")).to.be(false); + }); + it("fails to encode non-boolean values", async () => { + await driver.executeScript("return Lamden.Encoder('bool', 'nope')").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + await driver.executeScript("return Lamden.Encoder('bool', 2)").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + await driver.executeScript("return Lamden.Encoder('bool', {})").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + }); + }); + context("Dict Object", () => { + it("encodes a dict from an Object", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('dict', {})"))).to.be(JSON.stringify({})); + }); + it("encodes a dict from a string", async () => { + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('dict','{\"vk\":\"833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7\"}')"))).to.be( + JSON.stringify({ vk: "833f3f66de0da4599ca60ae7854256f37404f543cf7a97c328d38aff9d3f8ac7" }) + ); + }); + it("encodes datetime and float inside a dict from a string", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder('dict', { datetime: new Date('${dateString}'), float: 1.1 })`))).to.be( + '{"datetime":{"__time__":[2020,6,28,19,16,35,59]},"float":{"__fixed__":"1.1"}}' + ); + }); + it("replaces datetime object with value in dict", async () => { + expect( + JSON.stringify(await driver.executeScript(`return Lamden.Encoder("dict", { DateTime: { datetime: new Date('${dateString}') } })`)) + ).to.be('{"DateTime":{"__time__":[2020,6,28,19,16,35,59]}}'); + }); + it("replaces timedelta object with value in dict", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder("dict", { TimeDelta: { timedelta: 1000 } })`))).to.be( + '{"TimeDelta":{"__delta__":[0,1]}}' + ); + }); + it("fails to encode non-objects", async () => { + expect(() => Encoder("dict", undefined)).to.throwError(); + await driver.executeScript("return Lamden.Encoder('dict', undefined)").catch(e=>{ + expect(e.toString()).to.contain("Error:"); + }) + }); + }); + context("Any Object", () => { + it("Any does not do any encoding", async () => { + expect(await driver.executeScript("return Lamden.Encoder('Any', 'string')")).to.be("string"); + expect(await driver.executeScript("return Lamden.Encoder('Any', 1)")).to.be(1); + expect(await driver.executeScript("return Lamden.Encoder('Any', 1.23456)")).to.be(1.23456); + expect(await driver.executeScript("return Lamden.Encoder('Any', true)")).to.be(true); + expect(await driver.executeScript(`return Lamden.Encoder('Any', new Date('${dateString}').toUTCString())`)).to.be( + new Date(dateString).toUTCString() + ); + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('Any', {})"))).to.be(JSON.stringify({})); + expect(JSON.stringify(await driver.executeScript("return Lamden.Encoder('Any', [])"))).to.be(JSON.stringify([])); + }); + }); + + context("DateTime", () => { + it("Encodes a Date into a value list", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder('datetime.datetime', new Date('${dateString}'))`))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + it("Encodes a Date string into a value list", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder('datetime.datetime', '${dateString}')`))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + it("Encodes milliseconds into a value list", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder('datetime.datetime', new Date('${dateString}').getTime())`))).to.be( + JSON.stringify({ __time__: [2020, 6, 28, 19, 16, 35, 59] }) + ); + }); + }); + + context("TimeDelta", () => { + it("Encodes a Date into days seconds", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder("datetime.timedelta", new Date(${millisecondsDelta}))`))).to.be( + JSON.stringify({ __delta__: [5, 43200] }) + ); + }); + it("Encodes a millisenconds into days seconds", async () => { + expect(JSON.stringify(await driver.executeScript(`return Lamden.Encoder("datetime.timedelta", ${millisecondsDelta})`))).to.be( + JSON.stringify({ __delta__: [5, 43200] }) + ); + }); + }); + + context("Stringify()- Parses object and encodes all values", async () => { + let testObj = { + integer: 1, + float: 1.1, + list: [ + 1, + 1.1, + "this is a string", + true, + [1, 2, 3, 4, 5, 6, 7], + [0, 1234567], + [1.1], + { + fixed: 1.1, + DateTime: { datetime: new Date(dateString) }, + TimeDelta: { "datetime.timedelta": millisecondsDelta }, + }, + ], + str: "this is a string", + bool: true, + "datetime.datetime": new Date(dateString), + "datetime.timedelta": millisecondsDelta, + }; + testObj.dict = JSON.parse(JSON.stringify(testObj)); + let temp = await driver.executeScript(`return Lamden.Encoder('object', ${testObj})`) + let encodedObj = JSON.stringify(temp); + + it("encodes an string", () => { + expect(encodedObj.includes('"str":"this is a string"')).to.be(true); + }); + it("encodes an integer", () => { + expect(encodedObj.includes('"integer":1')).to.be(true); + }); + it("encodes a float", () => { + expect(encodedObj.includes('"float":{"__fixed__":"1.1"}')).to.be(true); + }); + it("encodes an bool", () => { + expect(encodedObj.includes('"bool":true')).to.be(true); + }); + it("encodes a datetime.datetime", () => { + expect(encodedObj.includes('"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]}')).to.be( + true + ); + }); + it("encodes an datetime.timdelta", () => { + expect(encodedObj.includes('"datetime.timedelta":{"__delta__":[5,43200]}')).to.be(true); + }); + it("encodes an list", () => { + expect( + encodedObj.includes( + '"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}]' + ) + ).to.be(true); + }); + it("encodes a dict/object", () => { + expect( + encodedObj.includes( + '"dict":{"integer":1,"float":{"__fixed__":"1.1"},"list":[1,{"__fixed__":"1.1"},"this is a string",true,[1,2,3,4,5,6,7],[0,1234567],[{"__fixed__":"1.1"}],{"fixed":{"__fixed__":"1.1"},"DateTime":{"__time__":[2020,6,28,19,16,35,59]},"TimeDelta":{"__delta__":[5,43200]}}],"str":"this is a string","bool":true,"datetime.datetime":{"__time__":[2020,6,28,19,16,35,59]},"datetime.timedelta":{"__delta__":[5,43200]}}' + ) + ).to.be(true); + }); + }); + +}) \ No newline at end of file diff --git a/test/browsers/keystore-test.js b/test/browsers/keystore-test.js new file mode 100644 index 0000000..802d83f --- /dev/null +++ b/test/browsers/keystore-test.js @@ -0,0 +1,378 @@ +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); +const validators = require("types-validate-assert"); +const { validateTypes, assertTypes } = validators; +const Lamden = require('../../dist/cjs/lamden.js') + +// define a plugin for koa to redirect some js resources which will enable the types-valid-assert work in the broswer. +const typeValidAssertMiddleware = async (ctx, next) => { + if (ctx.request.url.indexOf("types-validate-assert") >= 0 && ctx.request.url.indexOf(".js") === -1) { + ctx.redirect(`${ctx.request.url}.js`); + } + await next(); +} + + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + +let KEYSTORE_PASSWORD = "Testing010203"; +const KEYSTORE_HINT = "Testing010203"; + +// Overwritted in "createKeystore() - Can create a keystore" +let KEYSTORE_DATA = { + data: '{"ct":"s6M4AvQvklttEyGq5ebPj/PzAmjNtV6wlS9X8L0RCoZiaqyOz0Y80eZbdf1WRv7gm4Y9aN4vPEoU4oNVVbXoT7QYhuaxMZ+XUyPihcOOnxxmMMGckWD9QOROSgLovvm5yZxp6C2G47dWp7QLkJvubuPgZ+Ws0uexLnkvxXnCikwdZ20yUAFwGN+u3RhQvmgFagCLeuViFXSOtfkDRXmzX4k/7P6cWet8j5rn5gCBbOYHq8rFOxc34ihdhE/8N+x+3MyxGYk2QmwyfzTE9jDEXZwWRlz4GtMXi29ZccRi0z2XEeB7yBl1LTLvngpQM2QnCcX0AQNjHqlPb30bZtQD5shwzgNiRKRon41tKBAH7uvTjw6N39DVIABUkQCusQ1dWWkuvkt79kPjKI/oRF3RH101kXbejFLfDy0eXNUcV3U=","iv":"14e2a23a66fae00bb201f013e9ae1699","s":"5f4b1877b9d4235e"}', + w: "U2FsdGVkX19RU+1vmxcY5wDfbkn1Gq8zOsh9Y4ylvSs=", +}; + +let keyPairs = [Lamden.wallet.new_wallet(), Lamden.wallet.new_wallet()] +let keyList = [ + { + sk: keyPairs[0].sk, + nickname: "key1", + name: "lamden", + network: "lamden", + symbol: "TAU", + }, + { + sk: keyPairs[1].sk, + nickname: "key2", + name: "lamden", + network: "lamden", + symbol: "TAU", + }, +]; + +describe("Browsers Tests: Test Lamden Keystore Class", () => { + let driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(typeValidAssertMiddleware) + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + await driver.sleep(1000) + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + context("keystore construcutor: ", () => { + it("creates an instance with no constructor arguments", async () => { + let res = await driver.executeScript(function(){ + let keystore = new Lamden.Keystore() + return [assertTypes.isSpecificClass(keystore, "Keystore"), keystore.keyList.numOfKeys(), keystore.keyList.getWallets().length] + }); + expect(res[0]).to.be(true); + expect(res[1]).to.be(0); + expect(res[2]).to.be(0); + }); + it("creates an instance by passing a string to the key property", async () => { + let res = await driver.executeScript(function(){ + let keystore = new Lamden.Keystore(arguments[0]) + return [assertTypes.isSpecificClass(keystore, "Keystore"), keystore.keyList.numOfKeys(), keystore.keyList.getWallets().length] + }, { key: keyList[0] }) + expect(res[0]).to.be(true); + expect(res[1]).to.be(1); + expect(res[2]).to.be(1); + }); + it("creates an instance by passing an array to the keys property", async () => { + let res = await driver.executeScript(function(){ + let keystore = new Lamden.Keystore(arguments[0]) + return [assertTypes.isSpecificClass(keystore, "Keystore"), keystore.keyList.numOfKeys(), keystore.keyList.getWallets().length] + }, { keyList }) + expect(res[0]).to.be(true); + expect(res[1]).to.be(2); + expect(res[2]).to.be(2); + }); + it("creates an instance by passing a keystoreData object", async () => { + let res = await driver.executeScript(function(){ + let keystore = new Lamden.Keystore(arguments[0]) + return [assertTypes.isSpecificClass(keystore, "Keystore"), assertTypes.isObjectWithKeys(keystore.encryptedData)] + }, { keystoreData: KEYSTORE_DATA }) + expect(res[0]).to.be(true); + expect(res[1]).to.be(true); + }); + it("creates an instance by passing a keystoreData string", async () => { + let res = await driver.executeScript(function(){ + let keystore = new Lamden.Keystore(arguments[0]) + return [assertTypes.isSpecificClass(keystore, "Keystore"), assertTypes.isObjectWithKeys(keystore.encryptedData)] + }, { keystoreData: JSON.stringify(KEYSTORE_DATA) }) + expect(res[0]).to.be(true); + expect(res[1]).to.be(true); + }); + it('NEGATIVE - Errors on "keyArg" not Array', async () => { + await driver.executeScript(function(){ + new Lamden.Keystore(arguments[0]) + }, { keyList: { key1: "key1" } }).catch((e) => { + expect(e.message).to.contain('Expected type [object Array] but got [object Object]'); + }); + }); + it("NEGATIVE - Errors on if array value is not type string", async () => { + await driver.executeScript(function(){ + new Lamden.Keystore(arguments[0]) + }, { keyList: [keyList[0], 2] }).catch((e) => { + expect(e.message).to.contain('Expected "2" to be [object Object] and have keys'); + });; + }); + }); + context("Adding Keys to the Keystore", () => { + it('addKey() - Can add a single key to the internal "keyList"', async () => { + let res = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore(); + keystore.addKey(keyList[0]); + return keystore.keyList.numOfKeys() + }, keyList) + expect(res).to.be(1); + }); + it("NEGATIVE - addKey() - Errors if value passed is not type string", async () => { + await driver.executeScript(function(){ + let keystore = new Lamden.Keystore(); + keystore.addKey(1); + }).catch(e => { + expect(e.message).to.contain('Expected "1" to be [object Object] and have keys'); + }) + }); + it('addKeys() - Can add to the internal "keyList" via an array of keys', async () => { + let res = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore(); + keystore.addKeys(keyList); + return keystore.keyList.numOfKeys() + }, keyList) + expect(res).to.be(2); + }); + it("addKeys() - Wallets contain metadata", async () => { + let res = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore(); + keystore.addKeys(keyList); + return keystore.wallets + }, keyList) + res.forEach((walletInfo, index) => { + expect(walletInfo.name).to.be(keyList[index].name); + expect(walletInfo.nickname).to.be(keyList[index].nickname); + expect(walletInfo.network).to.be(keyList[index].network); + expect(walletInfo.symbol).to.be(keyList[index].symbol); + }); + }); + it("NEGATIVE - addKeys() - Errors if value passed is not type array", async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore(); + keystore.addKeys({ key1: "key1", key2: "key2" }) + }).catch((e) => { + expect(e.message).to.contain("Expected type [object Array] but got [object Object]"); + }); + }); + }); + context("Deleting Keys from the Keystore", () => { + it("deleteKey() - Can delete a key from the keystore", async () => { + let res = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(0); + return keystore.wallets[0].vk + }, keyList) + expect(res).to.be(keyPairs[1].vk); + }); + it("NEGATIVE - deleteKey() - Errors if argument is not an integer", async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(0.3) + }, keyList).catch(e => { + expect(e.message).to.contain('Expected "0.3" to be an integer but got non-integer value'); + }) + }); + it("NEGATIVE - deleteKey() - Errors if index is out of range, high", async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(2) + }, keyList).catch(e => { + expect(e.message).to.contain('Key index out of range.'); + }) + }); + it("NEGATIVE - deleteKey() - Errors if index is out of range, low", async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(-1) + }, keyList).catch(e => { + expect(e.message).to.contain('Key index out of range.'); + }) + }); + it("NEGATIVE - deleteKey() - Funtion returns no keys in list", async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.deleteKey(0) + },keyList) + + }); + }); + context("Using keystore wallets", () => { + it("keystore.wallets - Deletes keys from the keystore", async () => { + let res = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + return keystore.wallets.length; + }, keyList) + expect(res).to.be(2); + }); + it("getWallet() - Can get a specific wallet", async () => { + let keystoreWallet = await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + return keystore.getWallet(keystore.wallets[0].vk); + }, keyList) + expect(keystoreWallet).to.have.property("sign"); + expect(keystoreWallet).to.have.property("verify"); + expect(keystoreWallet).to.have.property("vk"); + expect(() => assertTypes.isStringHex(keystoreWallet.sk)).throwException(); + }); + }); + context("Clearing a keystore", () => { + it("clearKeys() - Deletes keys from the keystore", async () => { + let res = await driver.executeScript(function(keyList){ + let after, before; + let keystore = new Lamden.Keystore(); + keystore.addKey(keyList[0]); + before = keystore.keyList.numOfKeys(); + keystore.clearKeys(); + after = keystore.keyList.numOfKeys(); + return [before, after]; + }, keyList) + expect(res[0]).to.be(1); + expect(res[1]).to.be(0); + }); + }); + context("Creating a Keystore", () => { + it("createKeystore() - Can create a keystore", async () => { + let res = await driver.executeScript(function(keyList, KEYSTORE_PASSWORD, KEYSTORE_HINT){ + let keystore = new Lamden.Keystore({ keyList }); + let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD, KEYSTORE_HINT); + let keystoreObj = JSON.parse(encryptedKeystore); + return keystoreObj; + }, keyList, KEYSTORE_PASSWORD, KEYSTORE_HINT) + expect(res).to.have.property("data"); + assertTypes.isStringWithValue(res.data); + expect(res).to.have.property("w"); + assertTypes.isStringWithValue(res.w); + }); + it('createKeystore() - Can create a keystore without "hint"', async () => { + let res = await driver.executeScript(function(keyList, KEYSTORE_PASSWORD){ + let keystore = new Lamden.Keystore({ keyList }); + let encryptedKeystore = keystore.createKeystore(KEYSTORE_PASSWORD); + let keystoreObj = JSON.parse(encryptedKeystore); + return keystoreObj; + }, keyList , KEYSTORE_PASSWORD) + + expect(res).to.have.property("data"); + assertTypes.isStringWithValue(res.data); + + expect(res).to.have.property("w"); + assertTypes.isString(res.w); + + expect(() => assertTypes.isStringWithValue(res.w)).throwException((e) => { + expect(e.message).to.be('Expected "" to be [object String] and not empty'); + }); + }); + it('NEGATIVE - createKeystore() - Errors if "password" value passed is not type string', async () => { + await driver.executeScript(function(keyList){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.createKeystore(12345); + }, keyList).catch(e => { + expect(e.message).to.contain('Expected "12345" to be [object String] and not empty'); + }) + }); + it('NEGATIVE - createKeystore() - Errors if a non-string value for "hint" is provided', async () => { + await driver.executeScript(function(keyList, KEYSTORE_PASSWORD){ + let keystore = new Lamden.Keystore({ keyList }); + keystore.createKeystore(KEYSTORE_PASSWORD, 12345); + }, keyList, KEYSTORE_PASSWORD).catch(e => { + expect(e.message).to.contain('Expected "12345" to be [object String] and not empty'); + }) + }); + }); + + context("Keystore password hints", () => { + it("getPasswordHint() - Can get the hint from the keystore instance", async () => { + let res = await driver.executeScript(function(KEYSTORE_DATA){ + let keystore = new Lamden.Keystore({ keystoreData: KEYSTORE_DATA }); + let hint = keystore.getPasswordHint(); + return hint; + }, KEYSTORE_DATA) + expect(res).to.be(KEYSTORE_HINT); + }); + it("getPasswordHint() - Can get the hint from a supplied keystore", async () => { + let res = await driver.executeScript(function(KEYSTORE_DATA){ + let keystore = new Lamden.Keystore(); + let hint = keystore.getPasswordHint(KEYSTORE_DATA); + return hint; + }, KEYSTORE_DATA) + expect(res).to.be(KEYSTORE_HINT); + }); + it("getPasswordHint() - Can get the hint from a supplied string keystore", async () => { + let res = await driver.executeScript(function(KEYSTORE_DATA){ + let keystore = new Lamden.Keystore(); + let hint = keystore.getPasswordHint(JSON.stringify(KEYSTORE_DATA)); + return hint; + }, KEYSTORE_DATA) + expect(res).to.be(KEYSTORE_HINT); + }); + }); + context("Decrypting a Keystore", () => { + it("decryptKeystore() - Can decrypte a keystore", async () => { + let res = await driver.executeScript(function(KEYSTORE_DATA, KEYSTORE_PASSWORD){ + let keystore = new Lamden.Keystore({ keystoreData: KEYSTORE_DATA }); + keystore.decryptKeystore(KEYSTORE_PASSWORD); + return [keystore.keyList.numOfKeys(), keystore.version]; + }, KEYSTORE_DATA, KEYSTORE_PASSWORD) + expect(res[0]).to.be(2); + expect(res[1]).to.be("1.0"); + }); + it("decryptKeystore() - Can decrypte a keystore passed as a string", async () => { + let res = await driver.executeScript(function(KEYSTORE_DATA ,KEYSTORE_PASSWORD){ + let keystore = new Lamden.Keystore({ keystoreData: JSON.stringify(KEYSTORE_DATA) }); + keystore.decryptKeystore(KEYSTORE_PASSWORD); + return [keystore.keyList.numOfKeys(), keystore.version]; + }, KEYSTORE_DATA, KEYSTORE_PASSWORD) + expect(res[0]).to.be(2); + expect(res[1]).to.be("1.0"); + }); + it("decryptKeystore() - Can decrypt a provided keystore", async () => { + let res = await driver.executeScript(function(KEYSTORE_PASSWORD, KEYSTORE_DATA){ + let keystore = new Lamden.Keystore(); + keystore.decryptKeystore(KEYSTORE_PASSWORD, KEYSTORE_DATA); + return [keystore.keyList.numOfKeys(), keystore.version]; + }, KEYSTORE_PASSWORD, KEYSTORE_DATA) + expect(res[0]).to.be(2); + expect(res[1]).to.be("1.0"); + }); + it("NEGATIVE - decryptKeystore() - Reports Incorrect Password", async () => { + await driver.executeScript(function(KEYSTORE_DATA){ + let keystore = new Lamden.Keystore(); + keystore.decryptKeystore("Nope", KEYSTORE_DATA); + }, KEYSTORE_DATA).catch((e) => { + expect(e.message).to.contain("Incorrect Keystore Password."); + }); + }); + it("NEGATIVE - decryptKeystore() - Errors if no keystoreData found", async () => { + await driver.executeScript(function(KEYSTORE_PASSWORD){ + let keystore = new Lamden.Keystore(); + keystore.decryptKeystore(KEYSTORE_PASSWORD); + }, KEYSTORE_PASSWORD).catch((e) => { + expect(e.message).to.contain("No keystoreData to decrypt."); + }); + }); + }); +}); diff --git a/test/browsers/masternode_api-test.js b/test/browsers/masternode_api-test.js new file mode 100644 index 0000000..9395883 --- /dev/null +++ b/test/browsers/masternode_api-test.js @@ -0,0 +1,341 @@ +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + +let goodNetwork = { + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], +}; + +let badNetwork = { + type: "testnet", + name: "Bad Network", + hosts: ["http://badnetwork.lamden.io:18080"], +}; + +function copyObject(object) { + return JSON.parse(JSON.stringify(object)); +} + +const balanceCheckWallet = { + float: "960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb", + int: "01930f6472916ae53c9ebbe7d3faf8979c24cac33d68041aa4ab986401bbf7c3", +}; + +describe("Browsers Tests: Test Masternode API returns", () => { + var driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("constructor", () => { + it("can create an instance", async () => { + let api = await driver.executeScript(function (goodNetwork) { + let api = new Lamden.Masternode_API(goodNetwork) + return { + hosts: api.hosts, + url: api.url + } + }, goodNetwork) + expect(api).to.exist; + expect(JSON.stringify(api.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); + expect(api.url).to.be(goodNetwork.hosts[0]); + }); + it("rejects arg not being an object", async () => { + let error; + try { + await driver.executeScript(function () { + new Lamden.Masternode_API("https://testnet.lamden.io:443") + }) + } catch (e) { + error = e; + } + expect(error.message).to.contain("Expected Object and got Type: string"); + }); + it("rejects missing hosts Array", async () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = []; + await driver.executeScript(function (networkInfo) { + new Lamden.Masternode_API(networkInfo) + }, networkInfo) + } catch (e) { + error = e; + } + expect(error.message).to.contain("HOSTS Required (Type: Array)"); + }); + it("rejects no protocol in host string", async () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = ["missing.protocol.com"]; + await driver.executeScript(function (networkInfo) { + new Lamden.Masternode_API(networkInfo) + }, networkInfo) + } catch (e) { + error = e; + } + expect(error.message).to.contain("Host String must include http:// or https://"); + }); + }); + + context("Masternode_API.pingServer()", async () => { + it("returns true if the server is online", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.pingServer(); + callback(response); + }, goodNetwork).then(res => { + expect(res).to.be(true); + }) + }); + it("returns false if provided network is unresponsive", async () => { + await driver.executeAsyncScript(async function (badNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(badNetwork); + let response = await api.pingServer(); + callback(response); + }, badNetwork).then(res => { + expect(res).to.be(false); + }) + }); + }); + + context("Masternode_API.getCurrencyBalance()", () => { + it("returns the float balance for a vk", async () => { + await driver.executeAsyncScript(async function (goodNetwork, balanceCheckWallet) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getCurrencyBalance(balanceCheckWallet.float); + callback(response); + }, goodNetwork, balanceCheckWallet).then(res => { + expect(res).to.above(0); + }) + }); + it("returns the int balance for a vk", async () => { + await driver.executeAsyncScript(async function (goodNetwork, balanceCheckWallet) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getCurrencyBalance(balanceCheckWallet.int); + callback(response); + }, goodNetwork, balanceCheckWallet).then(res => { + expect(res).to.above(0); + }) + }); + it("returns 0 if the vk does not exist yet", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getCurrencyBalance(Lamden.wallet.new_wallet().vk); + callback(response.toNumber()); + }, goodNetwork).then(res => { + expect(res).to.be(0); + }) + }); + it("returns 0 if provided network is unresponsive", async () => { + await driver.executeAsyncScript(async function (badNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(badNetwork); + let response = await api.getCurrencyBalance(); + callback(response.toNumber()); + }, badNetwork).then(res => { + expect(res).to.be(0); + }) + }); + }); + + context("Masternode_API.contractExists()", () => { + it("returns true if a contract exists on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.contractExists("currency"); + callback(response); + }, goodNetwork).then(res => { + expect(res).to.be(true); + }) + + }); + it("returns false if a contract does not exist on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.contractExists(Lamden.wallet.new_wallet().vk); + callback(response); + }, goodNetwork).then(res => { + expect(res).to.be(false); + }) + }); + it("returns false if provided network is unresponsive", async () => { + await driver.executeAsyncScript(async function (badNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(badNetwork); + let response = await api.contractExists("currency"); + callback(response); + }, badNetwork).then(res => { + expect(res).to.be(false); + }) + }); + }); + + context("Masternode_API.getContractMethods()", () => { + it("returns an array if a contract exists on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getContractMethods("currency"); + callback(response); + }, goodNetwork).then(res => { + expect(Array.isArray(res)).to.be(true); + expect(res.length > 0).to.be(true); + }) + }); + it("returns an empty array if a contract does not exist on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getContractMethods(Lamden.wallet.new_wallet().vk); + callback(response); + }, goodNetwork).then(res => { + expect(Array.isArray(res)).to.be(true); + expect(res.length === 0).to.be(true); + }); + }); + it("returns empty array if provided network is unresponsive", async () => { + await driver.executeAsyncScript(async function (badNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(badNetwork); + let response = await api.getContractMethods("currency"); + callback(response); + }, badNetwork).then(res => { + expect(Array.isArray(res)).to.be(true); + expect(res.length === 0).to.be(true); + }) + }); + }); + + context("Masternode_API.getContractVariables()", () => { + it("returns an array if a contract exists on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getContractVariables("currency"); + callback(response); + }, goodNetwork).then(res => { + expect(Array.isArray(res.variables)).to.be(true); + expect(Array.isArray(res.hashes)).to.be(true); + expect(res.hashes.length > 0).to.be(true); + }) + }); + it("returns an empty Object if a contract does not exist on the blockchain", async () => { + await driver.executeAsyncScript(async function (goodNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(goodNetwork); + let response = await api.getContractVariables(Lamden.wallet.new_wallet().vk); + callback(response); + }, goodNetwork).then(res => { + expect(Array.isArray(res.variables)).to.be(false); + expect(Array.isArray(res.hashes)).to.be(false); + expect(Object.keys(res).length === 0).to.be(true); + }) + }); + it("returns empty Object if provided network is unresponsive", async () => { + await driver.executeAsyncScript(async function (badNetwork) { + let callback = arguments[arguments.length-1]; + let api = new Lamden.Masternode_API(badNetwork); + let response = await api.getContractVariables("currency"); + callback(response); + }, badNetwork).then(res => { + expect(Array.isArray(res.variables)).to.be(false); + expect(Array.isArray(res.hashes)).to.be(false); + expect(Object.keys(res).length === 0).to.be(true); + }) + }); + }); + + // context("Masternode_API.getVariable()", () => { + // it("returns the value of the variable if the key exists", async () => { + // let key = balanceCheckWallet.float; + // let response = await goodNetwork_api.getVariable("currency", "balances", key); + // expect(parseFloat(response.__fixed__)).to.be.above(0); + // }); + // it("returns undefined if the key does not exist in the variable", async () => { + // let key = wallet.new_wallet().vk; + // let response = await goodNetwork_api.getVariable("currency", "balances", key); + // expect(response).to.be(null); + // }); + // it("returns undefined if the contract does not exist", async () => { + // let key = keyPair.vk; + // let response = await goodNetwork_api.getVariable(Lamden.wallet.new_wallet().vk, "balances", key); + // expect(response).to.be(null); + // }); + // it("returns undefined if the variable does not exist", async () => { + // let key = keyPair.vk; + // let response = await goodNetwork_api.getVariable("currency", wallet.new_wallet().vk, key); + // expect(response).to.be(null); + // }); + // it("returns undefined if provided network is unresponsive", async () => { + // let key = keyPair.vk; + // let response = await badNetwork_api.getVariable("currency", "balances", key); + // expect(response).to.be(null); + // }); + // }); + + // context("Masternode_API.getContractInfo()", () => { + // it("returns a contract info object", async () => { + // let response = await goodNetwork_api.getContractInfo("currency"); + // expect(response.name).to.be("currency"); + // expect(response.code.length > 0).to.be(true); + // }); + // it("returns undefined if provided network is unresponsive", async () => { + // let response = await badNetwork_api.getContractInfo("currency"); + // expect(response).to.be(null); + // }); + // }); + + // context("Masternode_API.getNonce()", () => { + // it("returns a nonce and processor value for a vk", async () => { + // let response = await goodNetwork_api.getNonce(keyPair.vk); + // expect(response.nonce).to.exist; + // expect(response.processor).to.exist; + // expect(response.sender).to.be(keyPair.vk); + // }); + // it("returns an error message if vk is not a hex string", async () => { + // let error = await goodNetwork_api.getNonce("this-is-not-a-vk"); + // expect(error).to.be(`this-is-not-a-vk is not a hex string.`); + // }); + // it("returns an error message if provided network is unresponsive", async () => { + // let error = await badNetwork_api.getNonce(keyPair.vk); + // expect(error.includes(`Unable to get nonce for ${keyPair.vk}`)).to.be(true); + // }); + // }); +}); diff --git a/test/browsers/network-test.js b/test/browsers/network-test.js new file mode 100644 index 0000000..a8b67ba --- /dev/null +++ b/test/browsers/network-test.js @@ -0,0 +1,132 @@ +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + + +let goodNetwork = { + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], + lamden: true, + blockExplorer: "https://testnet.lamden.io", +}; + +function copyObject(object) { + return JSON.parse(JSON.stringify(object)); +} + +describe("Browsers Tests: Test Netowrk class", () => { + var driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("Constructor", () => { + it("can create an instance", async () => { + let network = await driver.executeScript("return new Lamden.Network(arguments[0])", goodNetwork); + expect(network).to.exist; + expect(JSON.stringify(network.hosts)).to.be(JSON.stringify(goodNetwork.hosts)); + expect(network.hosts[0]).to.be(goodNetwork.hosts[0]); + expect(network.hosts[0]).to.be(goodNetwork.hosts[0]); + expect(network.type).to.be(goodNetwork.type); + expect(network.name).to.be(goodNetwork.name); + expect(network.lamden).to.be(goodNetwork.lamden); + expect(network.blockExplorer).to.be(goodNetwork.blockExplorer); + }); + + it("rejects missing hosts Array", async () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + delete networkInfo.hosts; + await driver.executeScript("return new Lamden.Network(arguments[0])", networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.contain("HOSTS Required (Type: Array)"); + }); + it("rejects no protocol in host string", async () => { + let error; + try { + let networkInfo = copyObject(goodNetwork); + networkInfo.hosts = ["missing.protocol.com"]; + await driver.executeScript("return new Lamden.Network(arguments[0])", networkInfo); + } catch (e) { + error = e; + } + expect(error.message).to.contain("Host String must include http:// or https://"); + }); + it("defaults missing type to custom", async () => { + let networkInfo = copyObject(goodNetwork); + networkInfo.type = ""; + let network = await driver.executeScript("return new Lamden.Network(arguments[0])", networkInfo); + expect(network.type).to.be("custom"); + }); + it("rejects arg not being an object", async () => { + let error; + try { + await driver.executeScript("return new Lamden.Network(arguments[0])", "https://testnet-master-1.lamden.io:443"); + } catch (e) { + error = e; + } + expect(error.message).to.contain("Expected Network Info Object and got Type: string"); + }); + }); + context("Ping Network", () => { + it("emits online status", async () => { + function pingNetwork(goodNetwork) { + var callback = arguments[arguments.length - 1]; + let network = new Lamden.Network(goodNetwork); + network.events.on("online", (status) => callback(status)); + network.ping(); + } + await driver.executeAsyncScript(pingNetwork, goodNetwork).then(function(res) { + expect(res).to.be(true); + }); + }); + it("return value from method return", async () => { + await driver.executeAsyncScript(function () { + var callback = arguments[arguments.length - 1]; + let network = new Lamden.Network(arguments[0]); + network.ping().then(res => callback(res)); + }, goodNetwork).then(function(res) { + expect(res).to.be(true); + }); + }); + it("returns online status through callback", async () => { + await driver.executeAsyncScript(function () { + var callback = arguments[arguments.length - 1]; + let network = new Lamden.Network(arguments[0]); + network.ping(res => callback(res)); + }, goodNetwork).then(function(res) { + expect(res).to.be(true); + }); + }); + }); +}); diff --git a/test/browsers/test.html b/test/browsers/test.html new file mode 100644 index 0000000..9b04820 --- /dev/null +++ b/test/browsers/test.html @@ -0,0 +1,21 @@ + + + + + + + Document + + +
This is a test page
+ + + + \ No newline at end of file diff --git a/test/browsers/transactionBatcher-test.js b/test/browsers/transactionBatcher-test.js new file mode 100644 index 0000000..f0ab4dd --- /dev/null +++ b/test/browsers/transactionBatcher-test.js @@ -0,0 +1,242 @@ +/* + The Transaction Batcher is in alpha and so I disabled the test cases for it as they cause the suite to fail. + The nonces won't increment properly depending on network lag and I don't have a good solution to it. +*/ +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + +let networkInfo = { + hosts: ["https://testnet-master-1.lamden.io:443"], +}; + +let uid = "randomUIDstring"; + +const senderWallet1 = { + vk: "960c002a36c30c3aec8bc670e9b8b40eebcfd545f4e9237579fd7395a21ccebb", + sk: "c8a3c5333aa3b058c4fa16d48db52355ab62ddc8daa9a183706a912e522440b6", +}; +const senderWallet2 = { + vk: "6a91a9a65eb80829a360efc0555cad8841af64c78375bbf394f6ecb89d5644ee", + sk: "4166ed44f465c51d562895295cdcde64a3444b14ea2a3e477c60cf0ecde65230", +}; + +let recieverWallet = { + vk: "f16c130ceb7ed9bcebde301488cfd507717d5d511674bc269c39ad41fc15d780", +}; + +function sleep(milliseconds) { + const date = Date.now(); + let currentDate = null; + do { + currentDate = Date.now(); + } while (currentDate - date < milliseconds); +} + +const makeTxList = (senderVK, receiver, amount) => { + let txList = []; + for (i = 0; i <= amount - 1; i++) { + txList.push({ + uid, + senderVk: senderVK, + contractName: "currency", + methodName: "transfer", + kwargs: { + to: receiver, + amount: { __fixed__: "0.0005" }, + }, + stampLimit: 500, + }); + } + return txList; +}; + +let keyList = {}; +keyList[senderWallet1.vk] = senderWallet1.sk; +keyList[senderWallet2.vk] = senderWallet2.sk; + +describe("Browsers Tests: Test TransactionBuilder class", async () => { + var driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("new TransactionBuilder", () => { + it("can create an instance", async () => { + let txb = await driver.executeScript(function (networkInfo) { + return new Lamden.TransactionBatcher(networkInfo); + }, networkInfo) + expect(txb.running).to.be(false); + }); + }); /* + context('TransactionBatcher.addTransaction()', () => { + it('can add a list of transactions for 1 sender', () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + txList1.forEach(txInfo => txb.addTransaction(txInfo)) + + expect(txb.txBatches[senderWallet1.vk].length).to.be(txList1.length) + }) + it('can add a list of transactions for 2 sender', () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + const txList2 = makeTxList(senderWallet2.vk, recieverWallet.vk, 15) + + txList1.forEach(txInfo => txb.addTransaction(txInfo)) + txList2.forEach(txInfo => txb.addTransaction(txInfo)) + + expect(txb.txBatches[senderWallet1.vk].length).to.be(txList1.length) + expect(txb.txBatches[senderWallet2.vk].length).to.be(txList2.length) + expect(Object.keys(txb.txBatches).length).to.be(2) + }) + it('can add a list of transactions and split info into senders', () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + const txList2 = makeTxList(senderWallet2.vk, recieverWallet.vk, 15) + + txb.addTransactionList([...txList1, ...txList2]) + + expect(txb.txBatches[senderWallet1.vk].length).to.be(txList1.length) + expect(txb.txBatches[senderWallet2.vk].length).to.be(txList2.length) + expect(Object.keys(txb.txBatches).length).to.be(2) + }) + }) + context('TransactionBatcher.getStartingNonce()', () => { + it('can the starting nonce for a senderVk', async () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + let response = await txb.getStartingNonce(senderWallet1.vk) + + expect(response.nonce >= 0).to.be(true) + }) + }) + context('TransactionBatcher.setBatchNonces()', () => { + it('can increment the nonces in a txList', async () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + let response = await txb.getStartingNonce(senderWallet1.vk) + + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + + let newList = txb.setBatchNonces(response, txList1) + + newList.forEach((txbuilder, index) => { + expect(txbuilder.nonce).to.be(response.nonce + index) + }) + }) + }) + context('TransactionBatcher.signBatch()', () => { + it('can sign a list of transactions', async () => { + let txb = new Lamden.TransactionBatcher(networkInfo) + let response = await txb.getStartingNonce(senderWallet1.vk) + + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + + let newList = txb.setBatchNonces(response, txList1) + txb.signBatch(newList, senderWallet1.sk) + + newList.forEach((txbuilder) => { + expect(txbuilder.signature.length > 0).to.be(true) + expect(txbuilder.transactionSigned).to.be(true) + }) + }) + }) + context('TransactionBatcher.sendBatch()', () => { + it('can send a batch of successful transactions', async function () { + this.timeout(60000); + let txb = new Lamden.TransactionBatcher(networkInfo) + let response = await txb.getStartingNonce(senderWallet1.vk) + + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + + let newList = txb.setBatchNonces(response, txList1) + txb.signBatch(newList, senderWallet1.sk) + + let sentBatch = await txb.sendBatch(newList) + + sentBatch.forEach(async (promise) => { + let txBuilder = await promise + if (!txBuilder.txSendResult.hash) console.log(txBuilder.nonce + ": " + txBuilder.txSendResult.errors) + expect(typeof txBuilder.txSendResult.hash === 'string').to.be(true) + }) + + expect(txb.hasTransactions()).to.be(false) + }) + }) + + context('TransactionBatcher.sendAllBatches()', () => { + it('Can send batches from all senders', async function () { + this.timeout(60000); + sleep(1500) + let txb = new Lamden.TransactionBatcher(networkInfo) + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 15) + const txList2 = makeTxList(senderWallet2.vk, recieverWallet.vk, 15) + + txb.addTransactionList([...txList1, ...txList2]) + + let sentBatchs = await txb.sendAllBatches(keyList) + + sentBatchs.forEach(txBuilder => { + if (!txBuilder.txSendResult.hash) console.log(txBuilder.nonce + ": " + txBuilder.txSendResult.errors) + expect(typeof txBuilder.txSendResult.hash === 'string').to.be(true) + }) + + expect(txb.hasTransactions()).to.be(false) + }) + it('Can process overflow', async function () { + this.timeout(30000); + sleep(1500) + let txb = new Lamden.TransactionBatcher(networkInfo) + const txList1 = makeTxList(senderWallet1.vk, recieverWallet.vk, 1) + const txList2 = makeTxList(senderWallet2.vk, recieverWallet.vk, 1) + + txb.addTransactionList([...txList1, ...txList2]) + let txPromise = txb.sendAllBatches(keyList) + txb.addTransactionList([...txList1, ...txList2]) + + let sentBatchs1 = await txPromise + sentBatchs1.forEach(txBuilder => { + if (!txBuilder.txSendResult.hash) console.log(txBuilder.nonce + ": " + txBuilder.txSendResult.errors) + expect(typeof txBuilder.txSendResult.hash === 'string').to.be(true) + }) + + expect(txb.hasTransactions()).to.be(true) + + let sentBatchs2 = await txb.sendAllBatches(keyList) + sleep(1500) + sentBatchs2.forEach(txBuilder => { + if (!txBuilder.txSendResult.hash) console.log(txBuilder.nonce + ": " + txBuilder.txSendResult.errors) + expect(typeof txBuilder.txSendResult.hash === 'string').to.be(true) + }) + + expect(txb.hasTransactions()).to.be(false) + + }) + })*/ +}); diff --git a/test/browsers/transactionBuilder-test.js b/test/browsers/transactionBuilder-test.js new file mode 100644 index 0000000..175919a --- /dev/null +++ b/test/browsers/transactionBuilder-test.js @@ -0,0 +1,437 @@ +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); +const expect = require("expect.js"); +const Lamden = require("../../dist/cjs/lamden"); +require("dotenv").config(); + + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + + +const { vk, sk } = process.env; + +let goodNetwork = { + type: "testnet", + name: "Lamden Public Testnet", + hosts: ["https://testnet-master-1.lamden.io:443"], +}; + +let badNetwork = { + type: "testnet", + name: "Bad Network", + hosts: ["http://badnetwork.lamden.io:18080"], +}; + +let uid = "randomUIDstring"; + +const senderWallet = { vk, sk }; + +let recieverWallet = Lamden.wallet.new_wallet(); + +let senderVk = senderWallet.vk; +let contractName = "currency"; +let methodName = "transfer"; +let stampLimit = 100; +let nonce = 0; +let processor = "0000000000000000000000000000000000000000000000000000000000000000"; + +let kwargs = { + to: recieverWallet.vk, + amount: 1, +}; + +let valuesTxInfo = { + senderVk: senderWallet.vk, + contractName: "con_values_testing_2", + methodName: "test_values", + stampLimit: 100, + kwargs: { + UID: "lamdenjs-testing", + Str: "test string", + Int: 1, + Float: 1.01, + Bool: false, + Dict: { s: "test", i: 1, f: 1.1, b: true, d: { f: 1.1, l: [1, 1.1] }, l: [1, 1.1] }, + List: ["test", 1, 1.1, false, { f: 1.1, l: [1, 1.1] }, [1, 1.1]], + ANY: { f: 1.1, l: [1, 1.1] }, + DateTime: { datetime: "2020-07-28T19:16:35.059Z" }, + TimeDelta: { timedelta: 1000 }, + }, +}; + +let txInfo_noNonce = { uid, senderVk, contractName, methodName, kwargs, stampLimit }; +let txInfo_withNonce = { + uid, + senderVk, + contractName, + methodName, + kwargs, + stampLimit, + nonce, + processor, +}; + +describe("Browsers Tests: Test TransactionBuilder class", () => { + var driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("new TransactionBuilder", () => { + it("can create an instance without nonce or processor", async () => { + const {newTx, newTxInfo} = await driver.executeScript(function (goodNetwork, txInfo_noNonce) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + let newTxInfo = newTx.getAllInfo(); + return {newTx, newTxInfo} + }, goodNetwork, txInfo_noNonce) + expect(newTx).to.exist; + //Validate TX Info propagated in the class + expect(newTxInfo.uid).to.be(txInfo_noNonce.uid); + expect(newTxInfo.txInfo.senderVk).to.be(txInfo_noNonce.senderVk); + expect(newTxInfo.txInfo.contractName).to.be(txInfo_noNonce.contractName); + expect(newTxInfo.txInfo.methodName).to.be(txInfo_noNonce.methodName); + expect(newTxInfo.txInfo.kwargs.to).to.be(txInfo_noNonce.kwargs.to); + expect(newTxInfo.txInfo.kwargs.amount).to.be(txInfo_noNonce.kwargs.amount); + //Validate internal properties + expect(newTxInfo.signed).to.be(false); + expect(newTxInfo.signature).to.be(null); + expect(JSON.stringify(newTxInfo.txSendResult)).to.be(JSON.stringify({ errors: [] })); + expect(JSON.stringify(newTxInfo.txBlockResult)).to.be(JSON.stringify({})); + expect(JSON.stringify(newTxInfo.nonceResult)).to.be(JSON.stringify({})); + }); + it("can create an instance by providing nonce and processor", async () => { + const {newTx, newTxInfo} = await driver.executeScript(function (goodNetwork, txInfo_withNonce) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + let newTxInfo = newTx.getAllInfo(); + return {newTx, newTxInfo} + }, goodNetwork, txInfo_withNonce) + expect(newTx).to.exist; + expect(newTxInfo.txInfo.nonce).to.exist; + expect(newTxInfo.txInfo.processor).to.exist; + }); + + it("it throws error when missing arguments", async() => { + async function testValues( + argName, + networkInfo, + senderVk, + contractName, + methodName, + kwargs, + stampLimit + ) { + let txInfo = { senderVk, contractName, methodName, kwargs, stampLimit }; + try { + return await driver.executeScript(function (networkInfo, txInfo) { + return new Lamden.TransactionBuilder(networkInfo, txInfo) + }, networkInfo, txInfo) + } catch (e) { + expect(e.message.includes(argName)).to.be(true); + } + } + let newTx = undefined; + + newTx = await testValues( + "Network Info", + undefined, + senderWallet.vk, + "currency", + "transfer", + kwargs, + 50000 + ); + newTx = await testValues("Sender", goodNetwork, undefined, "currency", "transfer", kwargs, 50000); + newTx = await testValues( + "Contract", + goodNetwork, + senderWallet.vk, + undefined, + "transfer", + kwargs, + 50000 + ); + newTx = await testValues( + "Method", + goodNetwork, + senderWallet.vk, + "currency", + undefined, + kwargs, + 50000 + ); + newTx = await testValues( + "Stamps", + goodNetwork, + senderWallet.vk, + "currency", + "transfer", + kwargs, + undefined + ); + expect(typeof newTx).to.be("undefined"); + }); + + it("it can create an instance with a Lamden Network Object as first arg", async () => { + let error = ""; + let newTx = await driver.executeScript(function (goodNetwork, txInfo_withNonce) { + let network = new Lamden.Network(goodNetwork); + let newTx = new Lamden.TransactionBuilder(network, txInfo_withNonce); + return newTx + }, goodNetwork, txInfo_withNonce).catch(e => { + error = e; + }) + expect(newTx).to.exist; + expect(error === "").to.be(true); + }); + }); + + context("TransactionBuilder.sign()", () => { + it("can sign and verify a transaction", async () => { + let res = await driver.executeScript(function (goodNetwork, txInfo_withNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + newTx.sign(senderWallet.sk); + return [newTx.transactionSigned, newTx.verifySignature()]; + }, goodNetwork, txInfo_withNonce, senderWallet) + expect(res[0]).to.be(true); + expect(res[1]).to.be(true); + }); + it("can sign and verify a transaction using a keystore wallet", async () => { + let res = await driver.executeScript(function (goodNetwork, txInfo_withNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_withNonce); + let stringBuffer = Buffer.from(newTx.sortedPayload.json); + let message = new Uint8Array(stringBuffer); + let keystore = new Lamden.Keystore({ key: { sk: senderWallet.sk } }); + newTx.sign(null, keystore.wallets[0]); + return [newTx.transactionSigned, newTx.verifySignature(), keystore.wallets[0].verify(message, newTx.signature)]; + }, goodNetwork, txInfo_withNonce, senderWallet) + expect(res[0]).to.be(true); + expect(res[1]).to.be(true); + expect(res[2]).to.be(true); + }); + it("throws and error if nonce not set ", async () => { + let res = await driver.executeScript(function (goodNetwork, txInfo_noNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + let error = "" + try { + newTx.sign(senderWallet.sk); + } catch(e){ + error = e + } + return [newTx, error]; + }, goodNetwork, txInfo_noNonce, senderWallet) + expect(res[0].nonce).to.not.exist; + expect(res[0].processor).to.not.exist; + }); + }); + + context("TransactionBuilder.getNonce()", () => { + it("can retrieve nonce and processor from the masternode", async () => { + const {newTx, response} =await driver.executeScript(async function (goodNetwork, txInfo_noNonce){ + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + let response = await newTx.getNonce(); + return {newTx, response} + }, goodNetwork, txInfo_noNonce) + expect(newTx.nonce).to.not.exist; + expect(newTx.processor).to.not.exist; + + //Validate Nonce was retrieved + expect(response.nonce).to.exist; + expect(response.processor).to.exist; + expect(response.sender).to.exist; + expect(newTx.nonce).to.be(response.nonce); + expect(newTx.processor).to.be(response.processor); + expect(newTx.sender).to.be(response.sender); + expect(goodNetwork.hosts.includes(newTx.nonceMasternode)).to.be(true); + }); + it("throws error if vk is not correct type, missing or invalid", async () => { + await driver.executeScript(async function (goodNetwork, txInfo_noNonce){ + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.sender = "not-a-good-vk"; + await newTx.getNonce(); + }, goodNetwork, txInfo_noNonce).catch(e =>{ + expect(e.message).to.contain(`is not a hex string.`); + }); + }); + it("throws error if provided network is unresponsive", async () => { + let res = await driver.executeScript(async function (badNetwork, txInfo_noNonce){ + let flag = false; + let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_noNonce); + try{ + await newTx.getNonce(); + } catch(e) { + if(e.message.includes(`Unable to get nonce for ${newTx.sender} on network ${newTx.url}`)) { + flag = true + } + } + return flag + }, badNetwork, txInfo_noNonce) + expect(res).to.be(true); + }); + }); + + context("TransactionBuilder.send()", () => { + let oldResultInfo,resultInfo, txSendResult, txBlockResult, newTx1; + it("Sends a transaction and receives a hash back", async function () { + this.timeout(20000); + await driver.executeAsyncScript(async function (goodNetwork, txInfo_noNonce, senderWallet) { + let callback = arguments[arguments.length-1] + let newTx1 = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + await newTx1.getNonce(); + //Sign transaction + newTx1.sign(senderWallet.sk); + //Send Tx + await newTx1.send(); + let oldResultInfo = newTx1.resultInfo + let txSendResult = newTx1.txSendResult; + await newTx1.checkForTransactionResult(); + let txBlockResult = newTx1.txBlockResult; + callback([newTx1.transactionSigned, newTx1.verifySignature(), txSendResult, oldResultInfo, txBlockResult, newTx1.resultInfo, newTx1]) + }, goodNetwork, txInfo_noNonce, senderWallet).then(res => { + expect(res[0]).to.be(true); + expect(res[1]).to.be(true); + expect(res[2].success).to.contain("Transaction successfully submitted to the network."); + expect(res[2].hash).to.exist; + expect(res[2].timestamp).to.exist; + txSendResult = res[2]; + oldResultInfo = res[3]; + txBlockResult = res[4]; + resultInfo = res[5] + newTx1 = res[6]; + }) + }); + it("Creates ResultInfo object based on txSendResult", function () { + expect(oldResultInfo.title).to.equal("Transaction Pending"); + expect(oldResultInfo.subtitle).to.equal("Your transaction was submitted and is being processed"); + expect(oldResultInfo.message).to.equal(`Tx Hash: ${txSendResult.hash}`); + expect(oldResultInfo.type).to.equal("success"); + }); + it("Sends transactions and can get hash result from masternode", function () { + expect(txBlockResult.hash).to.equal(txSendResult.hash); + expect(txBlockResult.result).to.equal("None"); + expect(txBlockResult.stamps_used > 0).to.be(true); + expect(txBlockResult.state.length).to.equal(2); + expect(txBlockResult.status).to.equal(0); + expect(JSON.stringify(txBlockResult.transaction)).to.equal(JSON.stringify(newTx1.tx)); + expect(txBlockResult.timestamp).to.exist; + }); + it("Creates ResultInfo object based on txBlockResult", async function () { + expect(resultInfo.title).to.equal("Transaction Successful"); + expect(resultInfo.subtitle).to.equal(`Your transaction used ${resultInfo.stampsUsed} stamps`); + expect(resultInfo.message).to.equal(""); + expect(resultInfo.type).to.equal("success"); + expect(resultInfo.errorInfo).to.equal(null); + expect(resultInfo.stampsUsed?resultInfo.stampsUsed:undefined).to.equal(txBlockResult.stamps_used); + expect(resultInfo.statusCode).to.equal(0); + expect(resultInfo.returnResult).to.equal("None"); + }); + it("gets nonce and signs transacation automatically if sk is provided", async function () { + this.timeout(30000) + let txSendResult = await driver.executeScript(async function (goodNetwork, txInfo_noNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + await newTx.send(senderWallet.sk); + let txSendResult = newTx.txSendResult; + return txSendResult; + }, goodNetwork, txInfo_noNonce, senderWallet) + + expect(txSendResult.success).to.equal("Transaction successfully submitted to the network."); + expect(txSendResult.hash).to.exist; + expect(txSendResult.timestamp).to.exist; + }); + it("throws error if provided network is unresponsive", async function () { + let response = await driver.executeScript(async function (badNetwork, txInfo_withNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(badNetwork, txInfo_withNonce) + let res = await newTx.send(senderWallet.sk); + return res + }, badNetwork, txInfo_withNonce, senderWallet) + expect(response.errors[0]).to.be( + "TypeError: Failed to fetch" + ); + }); + it("can return execution errors list", async function () { + this.timeout(30000) + let {resultInfo, txBlockResult} = await driver.executeScript(async function (goodNetwork, txInfo_noNonce, senderWallet) { + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.stampLimit = 0; + //Send Tx + await newTx.send(senderWallet.sk); + await newTx.checkForTransactionResult(); + let resultInfo = newTx.resultInfo; + let txBlockResult = newTx.txBlockResult; + return {resultInfo, txBlockResult} + }, goodNetwork, txInfo_noNonce, senderWallet) + + expect(resultInfo.title).to.equal("Transaction Failed"); + expect(resultInfo.subtitle).to.equal( + `Your transaction returned status code 1 and used ${resultInfo.stampsUsed} stamps` + ); + expect(resultInfo.message).to.equal("This transaction returned 1 errors."); + expect(resultInfo.type).to.equal("error"); + expect(resultInfo.errorInfo.length).to.equal(2); + expect(resultInfo.errorInfo[0]).to.equal("This transaction returned a non-zero status code"); + expect(resultInfo.errorInfo[1].includes("The cost has exceeded the stamp supplied!")).to.be( + true + ); + expect(resultInfo.stampsUsed).to.equal(txBlockResult.stamps_used); + expect(resultInfo.statusCode).to.equal(1); + expect(resultInfo.returnResult.includes("The cost has exceeded the stamp supplied!")).to.be( + true + ); + }); + it("can return transaction validation errors list", async function () { + this.timeout(30000) + let response = await driver.executeScript(async function (goodNetwork, txInfo_noNonce) { + let sender = Lamden.wallet.new_wallet(); + let newTx = new Lamden.TransactionBuilder(goodNetwork, txInfo_noNonce); + newTx.sender = sender.vk; + //Send Transaction + let response = await newTx.send(sender.sk) + return response + }, goodNetwork, txInfo_noNonce) + expect(response.errors.length > 0).to.be(true); + expect(response.errors[0]).to.be( + "Transaction sender has too few stamps for this transaction." + ); + }); + it("can encode and send all annotation types", async function () { + this.timeout(30000); + const {response, check} = await driver.executeScript(async function (valuesTxInfo,goodNetwork,senderWallet){ + valuesTxInfo.kwargs = Lamden.Encoder("object", valuesTxInfo.kwargs); + + let newTx = new Lamden.TransactionBuilder(goodNetwork, valuesTxInfo); + + //Send Transaction + let response = await newTx.send(senderWallet.sk); + //Check Transaction + let check = await newTx.checkForTransactionResult(); + return {response, check} + },valuesTxInfo,goodNetwork,senderWallet) + + expect(response.success).to.be("Transaction successfully submitted to the network."); + expect(check.status).to.be(0); + }); + }); +}); diff --git a/test/browsers/wallet-test.js b/test/browsers/wallet-test.js new file mode 100644 index 0000000..d6d724f --- /dev/null +++ b/test/browsers/wallet-test.js @@ -0,0 +1,172 @@ +const expect = require("expect.js"); +const validators = require("types-validate-assert"); +const { validateTypes, assertTypes } = validators; +const {Builder, logging, Capabilities } = require('selenium-webdriver'); +const Koa = require('koa'); +const KoaStatic = require('koa-static'); +const path = require('path'); + +// https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/logging.html +const prefs = new logging.Preferences(); +prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); +const caps = Capabilities.chrome(); +caps.setLoggingPrefs(prefs); + + +describe("Browsers Tests: Test Lamden Wallet methods", async () => { + var driver; + let server; + const app = new Koa(); + const port = 6800; + before(async function() { + // Start a http server + app.use(KoaStatic(path.join(__dirname,'../../'))); + server = app.listen(port, () => console.log(`\n\x1B[32mKoa Server running at http://127.0.0.1:${port}/\x1B[0m`)) + + driver = await new Builder() + .withCapabilities(caps) + .forBrowser("chrome") + .build(); + + // Load the test.html + await driver.get(`http://127.0.0.1:${port}/test/browsers/test.html`); + }); + + after(() => { + driver && driver.quit(); + server && server.close(); + }); + + context("wallet.create_wallet_bip39: ", () => { + it("creates a bip39 / bip32 compatible lamden keypair", async () => { + let newWallet = await driver.executeScript("return Lamden.wallet.new_wallet_bip39()"); + + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk.length).to.be(64); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk.length).to.be(64); + expect(validateTypes.isStringWithValue(newWallet.mnemonic)).to.be(true); + expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); + expect(newWallet.derivationIndex).to.be(0); + }), + it("creates a bip39 / bip32 compatible lamden keypair from mnemonic", async () => { + const mnemonic = + "ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort"; + const derivationIndex = 127; + + let newWallet = await driver.executeScript(`return Lamden.wallet.new_wallet_bip39('${mnemonic}', ${derivationIndex})`); + + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk).to.be( + "d0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607" + ); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk).to.be( + "86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8" + ); + expect(newWallet.mnemonic).to.be(mnemonic); + expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); + expect(newWallet.derivationIndex).to.be(127); + }); + }); + + context("wallet.new_wallet(): ", () => { + it("creates a lamden keypair", async () => { + let newWallet = await driver.executeScript("return Lamden.wallet.new_wallet();"); + expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); + expect(newWallet.vk.length).to.be(64); + expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); + expect(newWallet.sk.length).to.be(64); + }); + }); + + context("wallet.get_vk(): ", () => { + it("can create a vk from an sk", async () => { + let res = await driver.executeScript(function () { + let newWallet = Lamden.wallet.new_wallet(); + return [Lamden.wallet.get_vk(newWallet.sk), newWallet.vk] + }); + expect(res[0]).to.be(res[1]); + }); + }); + context("wallet.sign(): ", () => { + it("can sign a message", async () => { + let signedMessage = await driver.executeScript(function () { + let newWallet = Lamden.wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = Lamden.wallet.sign(newWallet.sk, message); + return signedMessage + }); + expect(validateTypes.isStringHex(signedMessage)).to.be(true); + }); + }); + + context("wallet.verify(): ", () => { + it("can validate a correct signature", async () => { + let res = await driver.executeScript(function () { + let newWallet = Lamden.wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = Lamden.wallet.sign(newWallet.sk, message); + return Lamden.wallet.verify(newWallet.vk, message, signedMessage) + }); + expect(res).to.be(true); + }); + it("can validate an incorrect signature", async () => { + let res = await driver.executeScript(function () { + let newWallet = Lamden.wallet.new_wallet(); + let newWallet2 = Lamden.wallet.new_wallet(); + let message = new Uint8Array("this is a message"); + let signedMessage = Lamden.wallet.sign(newWallet.sk, message); + return Lamden.wallet.verify(newWallet2.vk, message, signedMessage) + }); + expect(res).to.be(false); + }); + }); + + context("wallet.create_wallet(): ", () => { + it("can create a new wallet object", async () => { + let newWallet = await driver.executeScript("return Lamden.wallet.create_wallet();"); + expect(newWallet).to.have.property("sign"); + expect(newWallet).to.have.property("verify"); + expect(newWallet).to.have.property("vk"); + expect(newWallet).to.have.property("sk"); + assertTypes.isStringHex(newWallet.vk); + assertTypes.isStringHex(newWallet.sk); + }); + it("can create a new wallet from a private key", async () => { + let newWallet = await driver.executeScript(function () { + let keypair = Lamden.wallet.new_wallet(); + let newWallet = Lamden.wallet.create_wallet({ sk: keypair.sk }); + return newWallet + }); + expect(newWallet).to.have.property("sign"); + expect(newWallet).to.have.property("verify"); + expect(newWallet).to.have.property("vk"); + expect(newWallet).to.have.property("sk"); + assertTypes.isStringHex(newWallet.vk); + assertTypes.isStringHex(newWallet.sk); + }); + it("secret key is not accessible is set to private", async () => { + let newWallet = await driver.executeScript("return Lamden.wallet.create_wallet({ keepPrivate: true });"); + expect(() => assertTypes.isStringHex(newWallet.sk)).throwException(); + }); + it("wallet object can sign messages", async () => { + let res = await driver.executeScript(function () { + let newWallet = Lamden.wallet.create_wallet({ keepPrivate: true }); + let message = new Uint8Array("this is a message"); + let signedMessage = newWallet.sign(message); + return Lamden.wallet.verify(newWallet.vk, message, signedMessage) + }) + expect(res).to.be(true); + }); + it("wallet object can verify a messages", async () => { + let res = await driver.executeScript(function () { + let newWallet = Lamden.wallet.create_wallet({ keepPrivate: true }); + let message = new Uint8Array("this is a message"); + let signedMessage = newWallet.sign(message); + return newWallet.verify(message, signedMessage) + }) + expect(res).to.be(true); + }); + }); +}); From 0c0937e1490d8079c3ad08d244569982d3d25a86 Mon Sep 17 00:00:00 2001 From: dapiguabc Date: Fri, 26 Nov 2021 22:46:34 +0800 Subject: [PATCH 09/10] fix some issues --- dist/cjs/lamden.js | 3 +-- dist/esm/lamden.js | 2 +- src/js/network.js | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js index 762c94d..dad10ab 100644 --- a/dist/cjs/lamden.js +++ b/dist/cjs/lamden.js @@ -8013,8 +8013,7 @@ class Network { get url() { return this.host; } - async getNetworkInfo() { - await this.ping(); + getNetworkInfo() { return { name: this.name, lamden: this.lamden, diff --git a/dist/esm/lamden.js b/dist/esm/lamden.js index 4ec7c58..266fc16 100644 --- a/dist/esm/lamden.js +++ b/dist/esm/lamden.js @@ -19,4 +19,4 @@ var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a */ function(e){const t=Pe,r=$e,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|d(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return f(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return f(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|c(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||V(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return u(e),o(e<0?0:0|c(e))}function l(e){const t=e.length<0?0:0|c(e.length),r=o(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function d(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:K(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return A(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){let o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(o=u));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(u=(15&t)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=d,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(t+=" ... "),""},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if($(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const u=Math.min(o,s),h=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return v(this,e,t,r);case"ascii":case"latin1":case"binary":return w(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function j(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function U(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function I(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function C(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=J((function(e,t=0){return L(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=J((function(e,t=0){return j(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=J((function(e,t=0){return L(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=J((function(e,t=0){return j(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return I(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return I(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return C(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return C(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function z(e,t,r,n,i,o){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||W(t,e.length-(r+1))}(n,i,o)}function q(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,r){if(Math.floor(e)!==e)throw q(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}P("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),P("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),P("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=D(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=D(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const F=/[^+/0-9A-Za-z-_]/g;function K(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const G=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function J(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}}(Ne),function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Ce,Ce.exports),Ve.prototype=Object.create(null),Ge.EventEmitter=Ge,Ge.usingDomains=!1,Ge.prototype.domain=void 0,Ge.prototype._events=void 0,Ge.prototype._maxListeners=void 0,Ge.defaultMaxListeners=10,Ge.init=function(){this.domain=null,Ge.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ve,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ge.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ge.prototype.getMaxListeners=function(){return Je(this)},Ge.prototype.emit=function(e){var t,r,n,i,o,a,s,u="error"===e;if(a=this._events)u=u&&null==a.error;else if(!u)return!1;if(s=this.domain,u){if(t=arguments[1],!s){if(t instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:Xe(r,l,this);break;case 2:Ze(r,l,this,arguments[1]);break;case 3:Qe(r,l,this,arguments[1],arguments[2]);break;case 4:et(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ve,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var at=Object.freeze({__proto__:null,default:Ge,EventEmitter:Ge});function st(){throw new Error("setTimeout has not been defined")}function ut(){throw new Error("clearTimeout has not been defined")}var ht=st,lt=ut;function ft(e){if(ht===setTimeout)return setTimeout(e,0);if((ht===st||!ht)&&setTimeout)return ht=setTimeout,setTimeout(e,0);try{return ht(e,0)}catch(t){try{return ht.call(null,e,0)}catch(t){return ht.call(this,e,0)}}}"function"==typeof N.setTimeout&&(ht=setTimeout),"function"==typeof N.clearTimeout&&(lt=clearTimeout);var ct,dt=[],pt=!1,gt=-1;function yt(){pt&&ct&&(pt=!1,ct.length?dt=ct.concat(dt):gt=-1,dt.length&&bt())}function bt(){if(!pt){var e=ft(yt);pt=!0;for(var t=dt.length;t;){for(ct=dt,dt=[];++gt1)for(var r=1;r=a)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),u=i[n];n=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),c(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),u(n,e,n.depth)}function a(e,t){var r=o.styles[t];return r?"["+o.colors[r][0]+"m"+e+"["+o.colors[r][1]+"m":e}function s(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&_(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(g(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(p(t))return e.stylize(""+t,"number");if(c(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(o)return o;var a=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),w(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(_(r)){var m=r.name?": "+r.name:"";return e.stylize("[Function"+m+"]","special")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(v(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var E,S="",k=!1,x=["{","}"];(f(r)&&(k=!0,x=["[","]"]),_(r))&&(S=" [Function"+(r.name?": "+r.name:"")+"]");return b(r)&&(S=" "+RegExp.prototype.toString.call(r)),v(r)&&(S=" "+Date.prototype.toUTCString.call(r)),w(r)&&(S=" "+h(r)),0!==a.length||k&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),E=k?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(E,S,x)):x[0]+S+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function l(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),R(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=d(r)?u(e,h.value,null):u(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function c(e){return"boolean"==typeof e}function d(e){return null===e}function p(e){return"number"==typeof e}function g(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return m(e)&&"[object RegExp]"===E(e)}function m(e){return"object"==typeof e&&null!==e}function v(e){return m(e)&&"[object Date]"===E(e)}function w(e){return m(e)&&("[object Error]"===E(e)||e instanceof Error)}function _(e){return"function"==typeof e}function E(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(n)&&(n=Mt.env.NODE_DEBUG||""),e=e.toUpperCase(),!i[e])if(new RegExp("\\b"+e+"\\b","i").test(n)){var r=Mt.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=c,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=p,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=m,t.isDate=v,t.isError=w,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=jt;var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",x(),t.format.apply(t,arguments))},t.inherits=Ie.exports,t._extend=function(e,t){if(!t||!m(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}(Lt),Ut.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},Ut.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},Ut.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},Ut.prototype.clear=function(){this.head=this.tail=null,this.length=0},Ut.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},Ut.prototype.concat=function(e){if(0===this.length)return Ne.Buffer.alloc(0);if(1===this.length)return this.head.data;for(var t=Ne.Buffer.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var It={},Ct=Ce.exports.Buffer,Nt=Ct.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};var Pt=It.StringDecoder=Dt;function Dt(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(Ct.isEncoding===Nt||!Nt(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=Wt,this.end=Ft,t=4;break;case"utf8":this.fillLast=qt,t=4;break;case"base64":this.text=Kt,this.end=Yt,t=3;break;default:return this.write=Ht,void(this.end=$t)}this.lastNeed=0,this.lastTotal=0,this.lastChar=Ct.allocUnsafe(t)}function zt(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function qt(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function Wt(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Ft(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Kt(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Yt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ht(e){return e.toString(this.encoding)}function $t(e){return e&&e.length?this.write(e):""}Dt.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Dt.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Jt.ReadableState=Gt;var Vt=Lt.debuglog("stream");function Gt(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Sr&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ut,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Pt(e.encoding),this.encoding=e.encoding)}function Jt(e){if(!(this instanceof Jt))return new Jt(e);this._readableState=new Gt(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),Ge.call(this)}function Xt(e,t,r,n,i){var o=function(e,t){var r=null;X.isBuffer(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,Qt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&Qt(e))),function(e,t){t.readingMore||(t.readingMore=!0,mt(tr,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Qt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Vt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?mt(er,e):er(e))}function er(e){Vt("emit readable"),e.emit("readable"),ir(e)}function tr(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=X.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function ar(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,mt(sr,t,e))}function sr(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function ur(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return Vt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ar(this):Qt(this),null;if(0===(e=Zt(e,t))&&t.ended)return 0===t.length&&ar(this),null;var n,i=t.needReadable;return Vt("need readable",i),(0===t.length||t.length-e0?or(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ar(this)),null!==n&&this.emit("data",n),n},Jt.prototype._read=function(e){this.emit("error",new Error("not implemented"))},Jt.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,Vt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:h;function o(e){Vt("onunpipe"),e===r&&h()}function a(){Vt("onend"),e.end()}n.endEmitted?mt(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;Vt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,ir(e))}}(r);e.on("drain",s);var u=!1;function h(){Vt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",c),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",h),r.removeListener("data",f),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var l=!1;function f(t){Vt("ondata"),l=!1,!1!==e.write(t)||l||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ur(n.pipes,e))&&!u&&(Vt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function c(t){var r;Vt("onerror",t),g(),e.removeListener("error",c),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),g()}function p(){Vt("onfinish"),e.removeListener("close",d),g()}function g(){Vt("unpipe"),r.unpipe(e)}return r.on("data",f),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",c),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(Vt("pipe resume"),r.resume()),e},Jt.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this)),this;if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},cr.prototype._write=function(e,t,r){r(new Error("not implemented"))},cr.prototype._writev=null,cr.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,mr(e,t),r&&(t.finished?mt(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Lt.inherits(Sr,Jt);for(var wr=Object.keys(cr.prototype),_r=0;_r64?t=e(t):t.length<64&&(t=Pr.concat([t,zr],64));for(var r=this._ipad=Pr.allocUnsafe(64),n=this._opad=Pr.allocUnsafe(64),i=0;i<64;i++)r[i]=54^t[i],n[i]=92^t[i];this._hash=[r]}Nr(qr,Dr),qr.prototype._update=function(e){this._hash.push(e)},qr.prototype._final=function(){var e=this._alg(Pr.concat(this._hash));return this._alg(Pr.concat([this._opad,e]))};var Wr=qr,Fr={exports:{}}; /*! safe-buffer. MIT License. Feross Aboukhadijeh */ -!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}async getNetworkInfo(){return await this.ping(),{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=10,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; +!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}getNetworkInfo(){return{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=10,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; diff --git a/src/js/network.js b/src/js/network.js index d8b98f6..949848f 100644 --- a/src/js/network.js +++ b/src/js/network.js @@ -64,8 +64,7 @@ export class Network { get url() { return this.host; } - async getNetworkInfo() { - await this.ping(); + getNetworkInfo() { return { name: this.name, lamden: this.lamden, From 82028064970ff9b5616891e344195695a0a7c97b Mon Sep 17 00:00:00 2001 From: dapiguabc Date: Sat, 27 Nov 2021 02:34:05 +0800 Subject: [PATCH 10/10] updated tests and fixed issues --- dist/cjs/lamden.js | 52 +++++++++++++++++---------------- dist/esm/lamden.js | 2 +- package.json | 6 ++-- src/js/wallet.js | 4 +-- test/browsers/wallet-test.js | 18 +++++------- test/transactionBuilder-test.js | 2 +- test/wallet-test.js | 17 ----------- 7 files changed, 41 insertions(+), 60 deletions(-) diff --git a/dist/cjs/lamden.js b/dist/cjs/lamden.js index dad10ab..36a9b04 100644 --- a/dist/cjs/lamden.js +++ b/dist/cjs/lamden.js @@ -2902,28 +2902,28 @@ function new_wallet(seed = null) { /** * - * @param mnemonic 24 word seed phrase + * @param seed Bip39 seed phrase (128 characters in hex) * @param derivationIndex bip32 derivation key index * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} * derivationIndex: bip32 derivation key index * vk: Verify Key (VK) represented as a 64 character hex string * sk: Signing Key (SK) represented as a 64 character hex string - * mnemonic: 24 word seed phrase - + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { - let finalMnemonic; - - if (mnemonic !== undefined) { - finalMnemonic = mnemonic; - } else { - finalMnemonic = bip39__namespace.generateMnemonic(256); - } - - const seed = bip39__namespace.mnemonicToSeedSync(finalMnemonic).toString("hex"); +function generate_keys_bip39(seed = undefined, derivationIndex = 0) { + let finalSeed; + let finalMnemonic; + + if (seed !== undefined){ + finalSeed = seed; + }else { + finalMnemonic = bip39__namespace.generateMnemonic(256); + finalSeed = bip39__namespace.mnemonicToSeedSync(finalMnemonic).toString('hex'); + } - const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; - const { key, chainCode } = bip32__default["default"].derivePath(derivationPath, seed, 0x80000000); + const derivationPath = "m/44'/789'/" + derivationIndex + "'/0'/0'"; + const { key, chainCode } = bip32__default["default"].derivePath(derivationPath, finalSeed, 0x80000000); const privateKey = key.toString("hex"); const publicKey = bip32__default["default"].getPublicKey(key, false).toString("hex"); @@ -2932,26 +2932,28 @@ function generate_keys_bip39(mnemonic = undefined, derivationIndex = 0) { throw Error("Bip32 public key does not match with Lamden public key!"); } - return { - sk: privateKey, - vk: publicKey, - derivationIndex: derivationIndex, - mnemonic: finalMnemonic, - }; + return { + sk: privateKey, + vk: publicKey, + derivationIndex: derivationIndex, + seed: seed !== undefined ? null : finalSeed, + mnemonic: seed !== undefined ? null : finalMnemonic, + } } /** - * @param mnemonic 24 word seed phrase + * @param seed Bip39 seed phrase (128 characters in hex) * @param derivationIndex bip32 derivation key index * * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } * sk: Signing Key (SK) represented as a 64 character hex string * vk: Verify Key (VK) represented as a 64 character hex string * derivationIndex: Bip32 derivation index - * mnemonic: 24 word seed phrase + * seed: Bip39 seed phrase (128 characters in hex) + * mnemonic: Bip39 24 words mnemonic */ -function new_wallet_bip39(mnemonic = undefined, derivationIndex = 0) { - return generate_keys_bip39(mnemonic, derivationIndex); +function new_wallet_bip39(seed = undefined, derivationIndex = 0) { + return generate_keys_bip39(seed, derivationIndex); } /** diff --git a/dist/esm/lamden.js b/dist/esm/lamden.js index 266fc16..7569dcd 100644 --- a/dist/esm/lamden.js +++ b/dist/esm/lamden.js @@ -19,4 +19,4 @@ var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a */ function(e){const t=Pe,r=$e,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return h(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|d(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if($(e,Uint8Array)){const t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if($(e,ArrayBuffer)||e&&$(e.buffer,ArrayBuffer))return f(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&($(e,SharedArrayBuffer)||e&&$(e.buffer,SharedArrayBuffer)))return f(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|c(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||V(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return u(e),o(e<0?0:0|c(e))}function l(e){const t=e.length<0?0:0|c(e.length),r=o(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function d(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||$(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:K(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return A(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),V(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){let o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function h(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(u=(31&t)<<6|63&r,u>127&&(o=u));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(u=(15&t)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=d,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(t+=" ... "),""},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if($(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const u=Math.min(o,s),h=this.slice(n,i),l=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return v(this,e,t,r);case"ascii":case"latin1":case"binary":return w(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function R(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;in)&&(r=n);let i="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function j(e,t,r,n,i){z(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function U(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function I(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function C(e,t,n,i,o){return t=+t,n>>>=0,o||U(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=J((function(e){q(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||W(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,!n){M(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=J((function(e,t=0){return L(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=J((function(e,t=0){return j(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);M(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=J((function(e,t=0){return L(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=J((function(e,t=0){return j(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return I(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return I(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return C(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return C(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function z(e,t,r,n,i,o){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){q(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||W(t,e.length-(r+1))}(n,i,o)}function q(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,r){if(Math.floor(e)!==e)throw q(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}P("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),P("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),P("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=D(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=D(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const F=/[^+/0-9A-Za-z-_]/g;function K(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function $(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const G=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function J(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}}(Ne),function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Ce,Ce.exports),Ve.prototype=Object.create(null),Ge.EventEmitter=Ge,Ge.usingDomains=!1,Ge.prototype.domain=void 0,Ge.prototype._events=void 0,Ge.prototype._maxListeners=void 0,Ge.defaultMaxListeners=10,Ge.init=function(){this.domain=null,Ge.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ve,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ge.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ge.prototype.getMaxListeners=function(){return Je(this)},Ge.prototype.emit=function(e){var t,r,n,i,o,a,s,u="error"===e;if(a=this._events)u=u&&null==a.error;else if(!u)return!1;if(s=this.domain,u){if(t=arguments[1],!s){if(t instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:Xe(r,l,this);break;case 2:Ze(r,l,this,arguments[1]);break;case 3:Qe(r,l,this,arguments[1],arguments[2]);break;case 4:et(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ve,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n0?Reflect.ownKeys(this._events):[]};var at=Object.freeze({__proto__:null,default:Ge,EventEmitter:Ge});function st(){throw new Error("setTimeout has not been defined")}function ut(){throw new Error("clearTimeout has not been defined")}var ht=st,lt=ut;function ft(e){if(ht===setTimeout)return setTimeout(e,0);if((ht===st||!ht)&&setTimeout)return ht=setTimeout,setTimeout(e,0);try{return ht(e,0)}catch(t){try{return ht.call(null,e,0)}catch(t){return ht.call(this,e,0)}}}"function"==typeof N.setTimeout&&(ht=setTimeout),"function"==typeof N.clearTimeout&&(lt=clearTimeout);var ct,dt=[],pt=!1,gt=-1;function yt(){pt&&ct&&(pt=!1,ct.length?dt=ct.concat(dt):gt=-1,dt.length&&bt())}function bt(){if(!pt){var e=ft(yt);pt=!0;for(var t=dt.length;t;){for(ct=dt,dt=[];++gt1)for(var r=1;r=a)return e;switch(e){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(e){return"[Circular]"}default:return e}})),u=i[n];n=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),c(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=a),u(n,e,n.depth)}function a(e,t){var r=o.styles[t];return r?"["+o.colors[r][0]+"m"+e+"["+o.colors[r][1]+"m":e}function s(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&_(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return g(i)||(i=u(e,i,n)),i}var o=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(g(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(p(t))return e.stylize(""+t,"number");if(c(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(o)return o;var a=Object.keys(r),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),w(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(_(r)){var m=r.name?": "+r.name:"";return e.stylize("[Function"+m+"]","special")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(v(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var E,S="",k=!1,x=["{","}"];(f(r)&&(k=!0,x=["[","]"]),_(r))&&(S=" [Function"+(r.name?": "+r.name:"")+"]");return b(r)&&(S=" "+RegExp.prototype.toString.call(r)),v(r)&&(S=" "+Date.prototype.toUTCString.call(r)),w(r)&&(S=" "+h(r)),0!==a.length||k&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),E=k?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(E,S,x)):x[0]+S+x[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function l(e,t,r,n,i,o){var a,s,h;if((h=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=h.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):h.set&&(s=e.stylize("[Setter]","special")),R(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(h.value)<0?(s=d(r)?u(e,h.value,null):u(e,h.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function f(e){return Array.isArray(e)}function c(e){return"boolean"==typeof e}function d(e){return null===e}function p(e){return"number"==typeof e}function g(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return m(e)&&"[object RegExp]"===E(e)}function m(e){return"object"==typeof e&&null!==e}function v(e){return m(e)&&"[object Date]"===E(e)}function w(e){return m(e)&&("[object Error]"===E(e)||e instanceof Error)}function _(e){return"function"==typeof e}function E(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(n)&&(n=Mt.env.NODE_DEBUG||""),e=e.toUpperCase(),!i[e])if(new RegExp("\\b"+e+"\\b","i").test(n)){var r=Mt.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=f,t.isBoolean=c,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=p,t.isString=g,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=m,t.isDate=v,t.isError=w,t.isFunction=_,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=jt;var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(){var e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":");return[e.getDate(),k[e.getMonth()],t].join(" ")}function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",x(),t.format.apply(t,arguments))},t.inherits=Ie.exports,t._extend=function(e,t){if(!t||!m(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}(Lt),Ut.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},Ut.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},Ut.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},Ut.prototype.clear=function(){this.head=this.tail=null,this.length=0},Ut.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},Ut.prototype.concat=function(e){if(0===this.length)return Ne.Buffer.alloc(0);if(1===this.length)return this.head.data;for(var t=Ne.Buffer.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var It={},Ct=Ce.exports.Buffer,Nt=Ct.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};var Pt=It.StringDecoder=Dt;function Dt(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(Ct.isEncoding===Nt||!Nt(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=Wt,this.end=Ft,t=4;break;case"utf8":this.fillLast=qt,t=4;break;case"base64":this.text=Kt,this.end=Yt,t=3;break;default:return this.write=Ht,void(this.end=$t)}this.lastNeed=0,this.lastTotal=0,this.lastChar=Ct.allocUnsafe(t)}function zt(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function qt(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function Wt(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function Ft(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function Kt(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function Yt(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Ht(e){return e.toString(this.encoding)}function $t(e){return e&&e.length?this.write(e):""}Dt.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},Dt.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Jt.ReadableState=Gt;var Vt=Lt.debuglog("stream");function Gt(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Sr&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ut,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Pt(e.encoding),this.encoding=e.encoding)}function Jt(e){if(!(this instanceof Jt))return new Jt(e);this._readableState=new Gt(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),Ge.call(this)}function Xt(e,t,r,n,i){var o=function(e,t){var r=null;X.isBuffer(t)||"string"==typeof t||null==t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(t,r);if(o)e.emit("error",o);else if(null===r)t.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,Qt(e)}(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");e.emit("error",a)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var u;!t.decoder||i||n||(r=t.decoder.write(r),u=!t.objectMode&&0===r.length),i||(t.reading=!1),u||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&Qt(e))),function(e,t){t.readingMore||(t.readingMore=!0,mt(tr,e,t))}(e,t)}else i||(t.reading=!1);return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Qt(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Vt("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?mt(er,e):er(e))}function er(e){Vt("emit readable"),e.emit("readable"),ir(e)}function tr(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=X.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function ar(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,mt(sr,t,e))}function sr(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function ur(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return Vt("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?ar(this):Qt(this),null;if(0===(e=Zt(e,t))&&t.ended)return 0===t.length&&ar(this),null;var n,i=t.needReadable;return Vt("need readable",i),(0===t.length||t.length-e0?or(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&ar(this)),null!==n&&this.emit("data",n),n},Jt.prototype._read=function(e){this.emit("error",new Error("not implemented"))},Jt.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,Vt("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||!1!==t.end?a:h;function o(e){Vt("onunpipe"),e===r&&h()}function a(){Vt("onend"),e.end()}n.endEmitted?mt(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;Vt("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,ir(e))}}(r);e.on("drain",s);var u=!1;function h(){Vt("cleanup"),e.removeListener("close",d),e.removeListener("finish",p),e.removeListener("drain",s),e.removeListener("error",c),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",h),r.removeListener("data",f),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s()}var l=!1;function f(t){Vt("ondata"),l=!1,!1!==e.write(t)||l||((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ur(n.pipes,e))&&!u&&(Vt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function c(t){var r;Vt("onerror",t),g(),e.removeListener("error",c),0===(r="error",e.listeners(r).length)&&e.emit("error",t)}function d(){e.removeListener("finish",p),g()}function p(){Vt("onfinish"),e.removeListener("close",d),g()}function g(){Vt("unpipe"),r.unpipe(e)}return r.on("data",f),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",c),e.once("close",d),e.once("finish",p),e.emit("pipe",r),n.flowing||(Vt("pipe resume"),r.resume()),e},Jt.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this)),this;if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},cr.prototype._write=function(e,t,r){r(new Error("not implemented"))},cr.prototype._writev=null,cr.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,mr(e,t),r&&(t.finished?mt(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Lt.inherits(Sr,Jt);for(var wr=Object.keys(cr.prototype),_r=0;_r64?t=e(t):t.length<64&&(t=Pr.concat([t,zr],64));for(var r=this._ipad=Pr.allocUnsafe(64),n=this._opad=Pr.allocUnsafe(64),i=0;i<64;i++)r[i]=54^t[i],n[i]=92^t[i];this._hash=[r]}Nr(qr,Dr),qr.prototype._update=function(e){this._hash.push(e)},qr.prototype._final=function(){var e=this._alg(Pr.concat(this._hash));return this._alg(Pr.concat([this._opad,e]))};var Wr=qr,Fr={exports:{}}; /*! safe-buffer. MIT License. Feross Aboukhadijeh */ -!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r;r=void 0!==e?e:C.exports.generateMnemonic(256);const n=C.exports.mnemonicToSeedSync(r).toString("hex"),i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,n,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,mnemonic:r}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}getNetworkInfo(){return{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=10,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; +!function(e,t){var r=Ne,n=r.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function o(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=o),o.prototype=Object.create(n.prototype),i(n,o),o.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},o.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=n(e);return void 0!==t?"string"==typeof r?i.fill(t,r):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}}(Fr,Fr.exports);var Kr={exports:{}},Yr=r(at),Hr=Yr.EventEmitter;function $r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Gr(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return Jr.alloc(0);for(var t,r,n,i=Jr.allocUnsafe(e>>>0),o=this.head,a=0;o;)t=o.data,r=i,n=a,Jr.prototype.copy.call(t,r,n),a+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=Jr.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:Zr,value:function(e,t){return Xr(this,function(e){for(var t=1;t2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}sn("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),sn("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,o,a;if("string"==typeof t&&(i="not ",t.substr(!o||o<0?0:+o,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))a="The ".concat(e," ").concat(n," ").concat(un(t,"type"));else{var s=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";a='The "'.concat(e,'" ').concat(s," ").concat(n," ").concat(un(t,"type"))}return a+=". Received type ".concat(typeof r)}),TypeError),sn("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),sn("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),sn("ERR_STREAM_PREMATURE_CLOSE","Premature close"),sn("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),sn("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),sn("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),sn("ERR_STREAM_WRITE_AFTER_END","write after end"),sn("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),sn("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),sn("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),on.codes=an;var hn=on.codes.ERR_INVALID_OPT_VALUE;var ln={getHighWaterMark:function(e,t,r,n){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new hn(n?r:"highWaterMark",i);return Math.floor(i)}return e.objectMode?16:16384}},fn={exports:{}};"function"==typeof Object.create?fn.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:fn.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}};var cn=function(e,t){if(dn("noDeprecation"))return e;var r=!1;return function(){if(!r){if(dn("throwDeprecation"))throw new Error(t);dn("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}};function dn(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}var pn,gn=Cn;function yn(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}Cn.WritableState=In;var bn={deprecate:cn},mn=Hr,vn=Ne.Buffer,wn=e.Uint8Array||function(){};var _n,En=nn,Sn=ln.getHighWaterMark,kn=on.codes,xn=kn.ERR_INVALID_ARG_TYPE,Rn=kn.ERR_METHOD_NOT_IMPLEMENTED,An=kn.ERR_MULTIPLE_CALLBACK,Tn=kn.ERR_STREAM_CANNOT_PIPE,Bn=kn.ERR_STREAM_DESTROYED,On=kn.ERR_STREAM_NULL_VALUES,Mn=kn.ERR_STREAM_WRITE_AFTER_END,Ln=kn.ERR_UNKNOWN_ENCODING,jn=En.errorOrDestroy;function Un(){}function In(e,t,r){pn=pn||Kn,e=e||{},"boolean"!=typeof r&&(r=t instanceof pn),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=Sn(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=!1===e.decodeStrings;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new An;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(Mt.nextTick(i,n),Mt.nextTick(Wn,e,t),e._writableState.errorEmitted=!0,jn(e,n)):(i(n),e._writableState.errorEmitted=!0,jn(e,n),Wn(e,t))}(e,r,n,t,i);else{var o=zn(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||Dn(e,r),n?Mt.nextTick(Pn,e,r,o,i):Pn(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new yn(this)}function Cn(e){var t=this instanceof(pn=pn||Kn);if(!t&&!_n.call(Cn,this))return new Cn(e);this._writableState=new In(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),mn.call(this)}function Nn(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new Bn("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function Pn(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),Wn(e,t)}function Dn(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,s=!0;r;)i[a]=r,r.isBuf||(s=!1),r=r.next,a+=1;i.allBuffers=s,Nn(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new yn(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,h=r.encoding,l=r.callback;if(Nn(e,t,!1,t.objectMode?1:u.length,u,h,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function zn(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function qn(e,t){e._final((function(r){t.pendingcb--,r&&jn(e,r),t.prefinished=!0,e.emit("prefinish"),Wn(e,t)}))}function Wn(e,t){var r=zn(t);if(r&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,Mt.nextTick(qn,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}fn.exports(Cn,mn),In.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(In.prototype,"buffer",{get:bn.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_n=Function.prototype[Symbol.hasInstance],Object.defineProperty(Cn,Symbol.hasInstance,{value:function(e){return!!_n.call(this,e)||this===Cn&&(e&&e._writableState instanceof In)}})):_n=function(e){return e instanceof this},Cn.prototype.pipe=function(){jn(this,new Tn)},Cn.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,a=!i.objectMode&&(n=e,vn.isBuffer(n)||n instanceof wn);return a&&!vn.isBuffer(e)&&(e=function(e){return vn.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=Un),i.ending?function(e,t){var r=new Mn;jn(e,r),Mt.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i;return null===r?i=new On:"string"==typeof r||t.objectMode||(i=new xn("chunk",["string","Buffer"],r)),!i||(jn(e,i),Mt.nextTick(n,i),!1)}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=vn.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new Ln(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Cn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Cn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Cn.prototype._write=function(e,t,r){r(new Rn("_write()"))},Cn.prototype._writev=null,Cn.prototype.end=function(e,t,r){var n=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,Wn(e,t),r&&(t.finished?Mt.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Cn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Cn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Cn.prototype.destroy=En.destroy,Cn.prototype._undestroy=En.undestroy,Cn.prototype._destroy=function(e,t){t(e)};var Fn=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t},Kn=Jn,Yn=wi,Hn=gn;fn.exports(Jn,Yn);for(var $n=Fn(Hn.prototype),Vn=0;Vn<$n.length;Vn++){var Gn=$n[Vn];Jn.prototype[Gn]||(Jn.prototype[Gn]=Hn.prototype[Gn])}function Jn(e){if(!(this instanceof Jn))return new Jn(e);Yn.call(this,e),Hn.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",Xn)))}function Xn(){this._writableState.ended||Mt.nextTick(Zn,this)}function Zn(e){e.end()}Object.defineProperty(Jn.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Jn.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Jn.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(Jn.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}});var Qn=on.codes.ERR_STREAM_PREMATURE_CLOSE;function ei(){}var ti,ri=function e(t,r,n){if("function"==typeof r)return e(t,null,r);r||(r={}),n=function(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===Si.prototype||(t=function(e){return Si.from(e)}(t)),n)a.endEmitted?Pi(e,new Ni):Fi(e,a,t,!0);else if(a.ended)Pi(e,new Ii);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?Fi(e,a,t,!1):$i(e,a)):Fi(e,a,t,!1)}else n||(a.reading=!1,$i(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function Yi(e){var t=e._readableState;xi("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(xi("emitReadable",t.flowing),t.emittedReadable=!0,Mt.nextTick(Hi,e))}function Hi(e){var t=e._readableState;xi("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,Zi(e)}function $i(e,t){t.readingMore||(t.readingMore=!0,Mt.nextTick(Vi,e,t))}function Vi(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function Ji(e){xi("readable nexttick read 0"),e.read(0)}function Xi(e,t){xi("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),Zi(e),t.flowing&&!t.reading&&e.read(0)}function Zi(e){var t=e._readableState;for(xi("flow",t.flowing);t.flowing&&null!==e.read(););}function Qi(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function eo(e){var t=e._readableState;xi("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,Mt.nextTick(to,t,e))}function to(e,t){if(xi("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function ro(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return xi("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?eo(this):Yi(this),null;if(0===(e=Ki(e,t))&&t.ended)return 0===t.length&&eo(this),null;var n,i=t.needReadable;return xi("need readable",i),(0===t.length||t.length-e0?Qi(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&eo(this)),null!==n&&this.emit("data",n),n},qi.prototype._read=function(e){Pi(this,new Ci("_read()"))},qi.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,xi("pipe count=%d opts=%j",n.pipesCount,t);var i=(!t||!1!==t.end)&&e!==Mt.stdout&&e!==Mt.stderr?a:d;function o(t,i){xi("onunpipe"),t===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,xi("cleanup"),e.removeListener("close",f),e.removeListener("finish",c),e.removeListener("drain",s),e.removeListener("error",l),e.removeListener("unpipe",o),r.removeListener("end",a),r.removeListener("end",d),r.removeListener("data",h),u=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||s())}function a(){xi("onend"),e.end()}n.endEmitted?Mt.nextTick(i):r.once("end",i),e.on("unpipe",o);var s=function(e){return function(){var t=e._readableState;xi("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&_i(e,"data")&&(t.flowing=!0,Zi(e))}}(r);e.on("drain",s);var u=!1;function h(t){xi("ondata");var i=e.write(t);xi("dest.write",i),!1===i&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==ro(n.pipes,e))&&!u&&(xi("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function l(t){xi("onerror",t),d(),e.removeListener("error",l),0===_i(e,"error")&&Pi(e,t)}function f(){e.removeListener("finish",c),d()}function c(){xi("onfinish"),e.removeListener("close",f),d()}function d(){xi("unpipe"),r.unpipe(e)}return r.on("data",h),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",l),e.once("close",f),e.once("finish",c),e.emit("pipe",r),n.flowing||(xi("pipe resume"),r.resume()),e},qi.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==n.flowing&&this.resume()):"readable"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,xi("on readable",n.length,n.reading),n.length?Yi(this):n.reading||Mt.nextTick(Ji,this))),r},qi.prototype.addListener=qi.prototype.on,qi.prototype.removeListener=function(e,t){var r=Ei.prototype.removeListener.call(this,e,t);return"readable"===e&&Mt.nextTick(Gi,this),r},qi.prototype.removeAllListeners=function(e){var t=Ei.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||Mt.nextTick(Gi,this),t},qi.prototype.resume=function(){var e=this._readableState;return e.flowing||(xi("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,Mt.nextTick(Xi,e,t))}(this,e)),e.paused=!1,this},qi.prototype.pause=function(){return xi("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(xi("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},qi.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(xi("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){(xi("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i)||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var o=0;o0,(function(e){n||(n=e),e&&o.forEach(ko),a||(o.forEach(ko),i(n))}))}));return t.reduce(xo)};!function(e,t){(t=Kr.exports=wi).Stream=t,t.Readable=t,t.Writable=gn,t.Duplex=Kn,t.Transform=no,t.PassThrough=yo,t.finished=ri,t.pipeline=Ao}(0,Kr.exports);var To=Fr.exports.Buffer,Bo=Kr.exports.Transform;function Oo(e){Bo.call(this),this._block=To.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}(0,fn.exports)(Oo,Bo),Oo.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},Oo.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},Oo.prototype.update=function(e,t){if(function(e,t){if(!To.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");To.isBuffer(e)||(e=To.from(e,t));for(var r=this._block,n=0;this._blockOffset+e.length-n>=this._blockSize;){for(var i=this._blockOffset;i0;++o)this._length[o]+=a,(a=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*a);return this},Oo.prototype._update=function(){throw new Error("_update is not implemented")},Oo.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},Oo.prototype._digest=function(){throw new Error("_digest is not implemented")};var Mo=Oo,Lo=Ie.exports,jo=Mo,Uo=Ce.exports.Buffer,Io=new Array(16);function Co(){jo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function No(e,t){return e<>>32-t}function Po(e,t,r,n,i,o,a){return No(e+(t&r|~t&n)+i+o|0,a)+t|0}function Do(e,t,r,n,i,o,a){return No(e+(t&n|r&~n)+i+o|0,a)+t|0}function zo(e,t,r,n,i,o,a){return No(e+(t^r^n)+i+o|0,a)+t|0}function qo(e,t,r,n,i,o,a){return No(e+(r^(t|~n))+i+o|0,a)+t|0}Lo(Co,jo),Co.prototype._update=function(){for(var e=Io,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=Po(r,n,i,o,e[0],3614090360,7),o=Po(o,r,n,i,e[1],3905402710,12),i=Po(i,o,r,n,e[2],606105819,17),n=Po(n,i,o,r,e[3],3250441966,22),r=Po(r,n,i,o,e[4],4118548399,7),o=Po(o,r,n,i,e[5],1200080426,12),i=Po(i,o,r,n,e[6],2821735955,17),n=Po(n,i,o,r,e[7],4249261313,22),r=Po(r,n,i,o,e[8],1770035416,7),o=Po(o,r,n,i,e[9],2336552879,12),i=Po(i,o,r,n,e[10],4294925233,17),n=Po(n,i,o,r,e[11],2304563134,22),r=Po(r,n,i,o,e[12],1804603682,7),o=Po(o,r,n,i,e[13],4254626195,12),i=Po(i,o,r,n,e[14],2792965006,17),r=Do(r,n=Po(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=Do(o,r,n,i,e[6],3225465664,9),i=Do(i,o,r,n,e[11],643717713,14),n=Do(n,i,o,r,e[0],3921069994,20),r=Do(r,n,i,o,e[5],3593408605,5),o=Do(o,r,n,i,e[10],38016083,9),i=Do(i,o,r,n,e[15],3634488961,14),n=Do(n,i,o,r,e[4],3889429448,20),r=Do(r,n,i,o,e[9],568446438,5),o=Do(o,r,n,i,e[14],3275163606,9),i=Do(i,o,r,n,e[3],4107603335,14),n=Do(n,i,o,r,e[8],1163531501,20),r=Do(r,n,i,o,e[13],2850285829,5),o=Do(o,r,n,i,e[2],4243563512,9),i=Do(i,o,r,n,e[7],1735328473,14),r=zo(r,n=Do(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=zo(o,r,n,i,e[8],2272392833,11),i=zo(i,o,r,n,e[11],1839030562,16),n=zo(n,i,o,r,e[14],4259657740,23),r=zo(r,n,i,o,e[1],2763975236,4),o=zo(o,r,n,i,e[4],1272893353,11),i=zo(i,o,r,n,e[7],4139469664,16),n=zo(n,i,o,r,e[10],3200236656,23),r=zo(r,n,i,o,e[13],681279174,4),o=zo(o,r,n,i,e[0],3936430074,11),i=zo(i,o,r,n,e[3],3572445317,16),n=zo(n,i,o,r,e[6],76029189,23),r=zo(r,n,i,o,e[9],3654602809,4),o=zo(o,r,n,i,e[12],3873151461,11),i=zo(i,o,r,n,e[15],530742520,16),r=qo(r,n=zo(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=qo(o,r,n,i,e[7],1126891415,10),i=qo(i,o,r,n,e[14],2878612391,15),n=qo(n,i,o,r,e[5],4237533241,21),r=qo(r,n,i,o,e[12],1700485571,6),o=qo(o,r,n,i,e[3],2399980690,10),i=qo(i,o,r,n,e[10],4293915773,15),n=qo(n,i,o,r,e[1],2240044497,21),r=qo(r,n,i,o,e[8],1873313359,6),o=qo(o,r,n,i,e[15],4264355552,10),i=qo(i,o,r,n,e[6],2734768916,15),n=qo(n,i,o,r,e[13],1309151649,21),r=qo(r,n,i,o,e[4],4149444226,6),o=qo(o,r,n,i,e[11],3174756917,10),i=qo(i,o,r,n,e[2],718787259,15),n=qo(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},Co.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Uo.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e};var Wo=Co,Fo=Ne.Buffer,Ko=Ie.exports,Yo=Mo,Ho=new Array(16),$o=[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],Vo=[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],Go=[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],Jo=[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],Xo=[0,1518500249,1859775393,2400959708,2840853838],Zo=[1352829926,1548603684,1836072691,2053994217,0];function Qo(){Yo.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function ea(e,t){return e<>>32-t}function ta(e,t,r,n,i,o,a,s){return ea(e+(t^r^n)+o+a|0,s)+i|0}function ra(e,t,r,n,i,o,a,s){return ea(e+(t&r|~t&n)+o+a|0,s)+i|0}function na(e,t,r,n,i,o,a,s){return ea(e+((t|~r)^n)+o+a|0,s)+i|0}function ia(e,t,r,n,i,o,a,s){return ea(e+(t&n|r&~n)+o+a|0,s)+i|0}function oa(e,t,r,n,i,o,a,s){return ea(e+(t^(r|~n))+o+a|0,s)+i|0}Ko(Qo,Yo),Qo.prototype._update=function(){for(var e=Ho,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,a=0|this._e,s=0|this._a,u=0|this._b,h=0|this._c,l=0|this._d,f=0|this._e,c=0;c<80;c+=1){var d,p;c<16?(d=ta(r,n,i,o,a,e[$o[c]],Xo[0],Go[c]),p=oa(s,u,h,l,f,e[Vo[c]],Zo[0],Jo[c])):c<32?(d=ra(r,n,i,o,a,e[$o[c]],Xo[1],Go[c]),p=ia(s,u,h,l,f,e[Vo[c]],Zo[1],Jo[c])):c<48?(d=na(r,n,i,o,a,e[$o[c]],Xo[2],Go[c]),p=na(s,u,h,l,f,e[Vo[c]],Zo[2],Jo[c])):c<64?(d=ia(r,n,i,o,a,e[$o[c]],Xo[3],Go[c]),p=ra(s,u,h,l,f,e[Vo[c]],Zo[3],Jo[c])):(d=oa(r,n,i,o,a,e[$o[c]],Xo[4],Go[c]),p=ta(s,u,h,l,f,e[Vo[c]],Zo[4],Jo[c])),r=a,a=o,o=ea(i,10),i=n,n=d,s=f,f=l,l=ea(h,10),h=u,u=p}var g=this._b+i+l|0;this._b=this._c+o+f|0,this._c=this._d+a+s|0,this._d=this._e+r+u|0,this._e=this._a+n+h|0,this._a=g},Qo.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=Fo.alloc?Fo.alloc(20):new Fo(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e};var aa=Qo,sa={exports:{}},ua=Ce.exports.Buffer;function ha(e,t){this._block=ua.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}ha.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=ua.from(e,t));for(var r=this._block,n=this._blockSize,i=e.length,o=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},ha.prototype._update=function(){throw new Error("_update must be implemented by subclass")};var la=ha,fa=Ie.exports,ca=la,da=Ce.exports.Buffer,pa=[1518500249,1859775393,-1894007588,-899497514],ga=new Array(80);function ya(){this.init(),this._w=ga,ca.call(this,64,56)}function ba(e){return e<<30|e>>>2}function ma(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}fa(ya,ca),ya.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},ya.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var h=0;h<80;++h){var l=~~(h/20),f=0|((t=n)<<5|t>>>27)+ma(l,i,o,a)+s+r[h]+pa[l];s=a,a=o,o=ba(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},ya.prototype._hash=function(){var e=da.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var va=ya,wa=Ie.exports,_a=la,Ea=Ce.exports.Buffer,Sa=[1518500249,1859775393,-1894007588,-899497514],ka=new Array(80);function xa(){this.init(),this._w=ka,_a.call(this,64,56)}function Ra(e){return e<<5|e>>>27}function Aa(e){return e<<30|e>>>2}function Ta(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}wa(xa,_a),xa.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},xa.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0;u<16;++u)r[u]=e.readInt32BE(4*u);for(;u<80;++u)r[u]=(t=r[u-3]^r[u-8]^r[u-14]^r[u-16])<<1|t>>>31;for(var h=0;h<80;++h){var l=~~(h/20),f=Ra(n)+Ta(l,i,o,a)+s+r[h]+Sa[l]|0;s=a,a=o,o=Aa(i),i=n,n=f}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0},xa.prototype._hash=function(){var e=Ea.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e};var Ba=xa,Oa=Ie.exports,Ma=la,La=Ce.exports.Buffer,ja=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Ua=new Array(64);function Ia(){this.init(),this._w=Ua,Ma.call(this,64,56)}function Ca(e,t,r){return r^e&(t^r)}function Na(e,t,r){return e&t|r&(e|t)}function Pa(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function Da(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function za(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}Oa(Ia,Ma),Ia.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Ia.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,s=0|this._e,u=0|this._f,h=0|this._g,l=0|this._h,f=0;f<16;++f)r[f]=e.readInt32BE(4*f);for(;f<64;++f)r[f]=0|(((t=r[f-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[f-7]+za(r[f-15])+r[f-16];for(var c=0;c<64;++c){var d=l+Da(s)+Ca(s,u,h)+ja[c]+r[c]|0,p=Pa(n)+Na(n,i,o)|0;l=h,h=u,u=s,s=a+d|0,a=o,o=i,i=n,n=d+p|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=h+this._g|0,this._h=l+this._h|0},Ia.prototype._hash=function(){var e=La.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e};var qa=Ia,Wa=Ie.exports,Fa=qa,Ka=la,Ya=Ce.exports.Buffer,Ha=new Array(64);function $a(){this.init(),this._w=Ha,Ka.call(this,64,56)}Wa($a,Fa),$a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},$a.prototype._hash=function(){var e=Ya.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e};var Va=$a,Ga=Ie.exports,Ja=la,Xa=Ce.exports.Buffer,Za=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Qa=new Array(160);function es(){this.init(),this._w=Qa,Ja.call(this,128,112)}function ts(e,t,r){return r^e&(t^r)}function rs(e,t,r){return e&t|r&(e|t)}function ns(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function is(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function os(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function as(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function ss(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function us(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function hs(e,t){return e>>>0>>0?1:0}Ga(es,Ja),es.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},es.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,s=0|this._fh,u=0|this._gh,h=0|this._hh,l=0|this._al,f=0|this._bl,c=0|this._cl,d=0|this._dl,p=0|this._el,g=0|this._fl,y=0|this._gl,b=0|this._hl,m=0;m<32;m+=2)t[m]=e.readInt32BE(4*m),t[m+1]=e.readInt32BE(4*m+4);for(;m<160;m+=2){var v=t[m-30],w=t[m-30+1],_=os(v,w),E=as(w,v),S=ss(v=t[m-4],w=t[m-4+1]),k=us(w,v),x=t[m-14],R=t[m-14+1],A=t[m-32],T=t[m-32+1],B=E+R|0,O=_+x+hs(B,E)|0;O=(O=O+S+hs(B=B+k|0,k)|0)+A+hs(B=B+T|0,T)|0,t[m]=O,t[m+1]=B}for(var M=0;M<160;M+=2){O=t[M],B=t[M+1];var L=rs(r,n,i),j=rs(l,f,c),U=ns(r,l),I=ns(l,r),C=is(a,p),N=is(p,a),P=Za[M],D=Za[M+1],z=ts(a,s,u),q=ts(p,g,y),W=b+N|0,F=h+C+hs(W,b)|0;F=(F=(F=F+z+hs(W=W+q|0,q)|0)+P+hs(W=W+D|0,D)|0)+O+hs(W=W+B|0,B)|0;var K=I+j|0,Y=U+L+hs(K,I)|0;h=u,b=y,u=s,y=g,s=a,g=p,a=o+F+hs(p=d+W|0,d)|0,o=i,d=c,i=n,c=f,n=r,f=l,r=F+Y+hs(l=W+K|0,W)|0}this._al=this._al+l|0,this._bl=this._bl+f|0,this._cl=this._cl+c|0,this._dl=this._dl+d|0,this._el=this._el+p|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+b|0,this._ah=this._ah+r+hs(this._al,l)|0,this._bh=this._bh+n+hs(this._bl,f)|0,this._ch=this._ch+i+hs(this._cl,c)|0,this._dh=this._dh+o+hs(this._dl,d)|0,this._eh=this._eh+a+hs(this._el,p)|0,this._fh=this._fh+s+hs(this._fl,g)|0,this._gh=this._gh+u+hs(this._gl,y)|0,this._hh=this._hh+h+hs(this._hl,b)|0},es.prototype._hash=function(){var e=Xa.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e};var ls=es,fs=Ie.exports,cs=ls,ds=la,ps=Ce.exports.Buffer,gs=new Array(160);function ys(){this.init(),this._w=gs,ds.call(this,128,112)}fs(ys,cs),ys.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},ys.prototype._hash=function(){var e=ps.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e};var bs=ys,ms=sa.exports=function(e){e=e.toLowerCase();var t=ms[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t};ms.sha=va,ms.sha1=Ba,ms.sha224=Va,ms.sha256=qa,ms.sha384=bs,ms.sha512=ls;var vs=Ie.exports,ws=Wr,_s=Cr,Es=Ce.exports.Buffer,Ss=function(e){return(new Wo).update(e).digest()},ks=aa,xs=sa.exports,Rs=Es.alloc(128);function As(e,t){_s.call(this,"digest"),"string"==typeof t&&(t=Es.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new ks:xs(e)).update(t).digest():t.length>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function p(e,t,r,n,i){var o,a=0;for(o=0;o>>8)-1}function g(e,t,r,n){return p(e,t,r,n,16)}function y(e,t,r,n){return p(e,t,r,n,32)}function b(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,E=a,S=s,k=u,x=h,R=l,A=f,T=c,B=d,O=p,M=g,L=y,j=b,U=m,I=v,C=w,N=0;N<20;N+=2)_^=(i=(j^=(i=(B^=(i=(x^=(i=_+j|0)<<7|i>>>25)+_|0)<<9|i>>>23)+x|0)<<13|i>>>19)+B|0)<<18|i>>>14,R^=(i=(E^=(i=(U^=(i=(O^=(i=R+E|0)<<7|i>>>25)+R|0)<<9|i>>>23)+O|0)<<13|i>>>19)+U|0)<<18|i>>>14,M^=(i=(A^=(i=(S^=(i=(I^=(i=M+A|0)<<7|i>>>25)+M|0)<<9|i>>>23)+I|0)<<13|i>>>19)+S|0)<<18|i>>>14,C^=(i=(L^=(i=(T^=(i=(k^=(i=C+L|0)<<7|i>>>25)+C|0)<<9|i>>>23)+k|0)<<13|i>>>19)+T|0)<<18|i>>>14,_^=(i=(k^=(i=(S^=(i=(E^=(i=_+k|0)<<7|i>>>25)+_|0)<<9|i>>>23)+E|0)<<13|i>>>19)+S|0)<<18|i>>>14,R^=(i=(x^=(i=(T^=(i=(A^=(i=R+x|0)<<7|i>>>25)+R|0)<<9|i>>>23)+A|0)<<13|i>>>19)+T|0)<<18|i>>>14,M^=(i=(O^=(i=(B^=(i=(L^=(i=M+O|0)<<7|i>>>25)+M|0)<<9|i>>>23)+L|0)<<13|i>>>19)+B|0)<<18|i>>>14,C^=(i=(I^=(i=(U^=(i=(j^=(i=C+I|0)<<7|i>>>25)+C|0)<<9|i>>>23)+j|0)<<13|i>>>19)+U|0)<<18|i>>>14;_=_+o|0,E=E+a|0,S=S+s|0,k=k+u|0,x=x+h|0,R=R+l|0,A=A+f|0,T=T+c|0,B=B+d|0,O=O+p|0,M=M+g|0,L=L+y|0,j=j+b|0,U=U+m|0,I=I+v|0,C=C+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=x>>>0&255,e[17]=x>>>8&255,e[18]=x>>>16&255,e[19]=x>>>24&255,e[20]=R>>>0&255,e[21]=R>>>8&255,e[22]=R>>>16&255,e[23]=R>>>24&255,e[24]=A>>>0&255,e[25]=A>>>8&255,e[26]=A>>>16&255,e[27]=A>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=B>>>0&255,e[33]=B>>>8&255,e[34]=B>>>16&255,e[35]=B>>>24&255,e[36]=O>>>0&255,e[37]=O>>>8&255,e[38]=O>>>16&255,e[39]=O>>>24&255,e[40]=M>>>0&255,e[41]=M>>>8&255,e[42]=M>>>16&255,e[43]=M>>>24&255,e[44]=L>>>0&255,e[45]=L>>>8&255,e[46]=L>>>16&255,e[47]=L>>>24&255,e[48]=j>>>0&255,e[49]=j>>>8&255,e[50]=j>>>16&255,e[51]=j>>>24&255,e[52]=U>>>0&255,e[53]=U>>>8&255,e[54]=U>>>16&255,e[55]=U>>>24&255,e[56]=I>>>0&255,e[57]=I>>>8&255,e[58]=I>>>16&255,e[59]=I>>>24&255,e[60]=C>>>0&255,e[61]=C>>>8&255,e[62]=C>>>16&255,e[63]=C>>>24&255}(e,t,r,n)}function m(e,t,r,n){!function(e,t,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,s=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,u=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,h=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,c=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,g=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,y=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,b=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=0;_<20;_+=2)o^=(i=(b^=(i=(d^=(i=(h^=(i=o+b|0)<<7|i>>>25)+o|0)<<9|i>>>23)+h|0)<<13|i>>>19)+d|0)<<18|i>>>14,l^=(i=(a^=(i=(m^=(i=(p^=(i=l+a|0)<<7|i>>>25)+l|0)<<9|i>>>23)+p|0)<<13|i>>>19)+m|0)<<18|i>>>14,g^=(i=(f^=(i=(s^=(i=(v^=(i=g+f|0)<<7|i>>>25)+g|0)<<9|i>>>23)+v|0)<<13|i>>>19)+s|0)<<18|i>>>14,w^=(i=(y^=(i=(c^=(i=(u^=(i=w+y|0)<<7|i>>>25)+w|0)<<9|i>>>23)+u|0)<<13|i>>>19)+c|0)<<18|i>>>14,o^=(i=(u^=(i=(s^=(i=(a^=(i=o+u|0)<<7|i>>>25)+o|0)<<9|i>>>23)+a|0)<<13|i>>>19)+s|0)<<18|i>>>14,l^=(i=(h^=(i=(c^=(i=(f^=(i=l+h|0)<<7|i>>>25)+l|0)<<9|i>>>23)+f|0)<<13|i>>>19)+c|0)<<18|i>>>14,g^=(i=(p^=(i=(d^=(i=(y^=(i=g+p|0)<<7|i>>>25)+g|0)<<9|i>>>23)+y|0)<<13|i>>>19)+d|0)<<18|i>>>14,w^=(i=(v^=(i=(m^=(i=(b^=(i=w+v|0)<<7|i>>>25)+w|0)<<9|i>>>23)+b|0)<<13|i>>>19)+m|0)<<18|i>>>14;e[0]=o>>>0&255,e[1]=o>>>8&255,e[2]=o>>>16&255,e[3]=o>>>24&255,e[4]=l>>>0&255,e[5]=l>>>8&255,e[6]=l>>>16&255,e[7]=l>>>24&255,e[8]=g>>>0&255,e[9]=g>>>8&255,e[10]=g>>>16&255,e[11]=g>>>24&255,e[12]=w>>>0&255,e[13]=w>>>8&255,e[14]=w>>>16&255,e[15]=w>>>24&255,e[16]=f>>>0&255,e[17]=f>>>8&255,e[18]=f>>>16&255,e[19]=f>>>24&255,e[20]=c>>>0&255,e[21]=c>>>8&255,e[22]=c>>>16&255,e[23]=c>>>24&255,e[24]=d>>>0&255,e[25]=d>>>8&255,e[26]=d>>>16&255,e[27]=d>>>24&255,e[28]=p>>>0&255,e[29]=p>>>8&255,e[30]=p>>>16&255,e[31]=p>>>24&255}(e,t,r,n)}var v=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function w(e,t,r,n,i,o,a){var s,u,h=new Uint8Array(16),l=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(b(l,h,a,v),u=0;u<64;u++)e[t+u]=r[n+u]^l[u];for(s=1,u=8;u<16;u++)s=s+(255&h[u])|0,h[u]=255&s,s>>>=8;i-=64,t+=64,n+=64}if(i>0)for(b(l,h,a,v),u=0;u=64;){for(b(u,s,i,v),a=0;a<64;a++)e[t+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&s[a])|0,s[a]=255&o,o>>>=8;r-=64,t+=64}if(r>0)for(b(u,s,i,v),a=0;a>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(o>>>14|a<<2),s=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(a>>>11|s<<5),u=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(s>>>8|u<<8),this.r[9]=u>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function x(e,t,r,n,i,o){var a=new k(o);return a.update(r,n,i),a.finish(e,t),0}function R(e,t,r,n,i,o){var a=new Uint8Array(16);return x(a,0,r,n,i,o),g(e,t,a,0)}function A(e,t,r,n,i){var o;if(r<32)return-1;for(S(e,0,t,0,r,n,i),x(e,16,e,32,r-32,e),o=0;o<16;o++)e[o]=0;return 0}function T(e,t,r,n,i){var o,a=new Uint8Array(32);if(r<32)return-1;if(E(a,0,32,n,i),0!==R(t,16,t,32,r-32,a))return-1;for(S(e,0,t,0,r,n,i),o=0;o<32;o++)e[o]=0;return 0}function B(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function M(e,t,r){for(var n,i=~(r-1),o=0;o<16;o++)n=i&(e[o]^t[o]),e[o]^=n,t[o]^=n}function L(e,r){var n,i,o,a=t(),s=t();for(n=0;n<16;n++)s[n]=r[n];for(O(s),O(s),O(s),i=0;i<2;i++){for(a[0]=s[0]-65517,n=1;n<15;n++)a[n]=s[n]-65535-(a[n-1]>>16&1),a[n-1]&=65535;a[15]=s[15]-32767-(a[14]>>16&1),o=a[15]>>16&1,a[14]&=65535,M(s,a,1-o)}for(n=0;n<16;n++)e[2*n]=255&s[n],e[2*n+1]=s[n]>>8}function j(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return L(r,e),L(n,t),y(r,0,n,0)}function I(e){var t=new Uint8Array(32);return L(t,e),1&t[0]}function C(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function N(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function P(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function D(e,t,r){var n,i,o=0,a=0,s=0,u=0,h=0,l=0,f=0,c=0,d=0,p=0,g=0,y=0,b=0,m=0,v=0,w=0,_=0,E=0,S=0,k=0,x=0,R=0,A=0,T=0,B=0,O=0,M=0,L=0,j=0,U=0,I=0,C=r[0],N=r[1],P=r[2],D=r[3],z=r[4],q=r[5],W=r[6],F=r[7],K=r[8],Y=r[9],H=r[10],$=r[11],V=r[12],G=r[13],J=r[14],X=r[15];o+=(n=t[0])*C,a+=n*N,s+=n*P,u+=n*D,h+=n*z,l+=n*q,f+=n*W,c+=n*F,d+=n*K,p+=n*Y,g+=n*H,y+=n*$,b+=n*V,m+=n*G,v+=n*J,w+=n*X,a+=(n=t[1])*C,s+=n*N,u+=n*P,h+=n*D,l+=n*z,f+=n*q,c+=n*W,d+=n*F,p+=n*K,g+=n*Y,y+=n*H,b+=n*$,m+=n*V,v+=n*G,w+=n*J,_+=n*X,s+=(n=t[2])*C,u+=n*N,h+=n*P,l+=n*D,f+=n*z,c+=n*q,d+=n*W,p+=n*F,g+=n*K,y+=n*Y,b+=n*H,m+=n*$,v+=n*V,w+=n*G,_+=n*J,E+=n*X,u+=(n=t[3])*C,h+=n*N,l+=n*P,f+=n*D,c+=n*z,d+=n*q,p+=n*W,g+=n*F,y+=n*K,b+=n*Y,m+=n*H,v+=n*$,w+=n*V,_+=n*G,E+=n*J,S+=n*X,h+=(n=t[4])*C,l+=n*N,f+=n*P,c+=n*D,d+=n*z,p+=n*q,g+=n*W,y+=n*F,b+=n*K,m+=n*Y,v+=n*H,w+=n*$,_+=n*V,E+=n*G,S+=n*J,k+=n*X,l+=(n=t[5])*C,f+=n*N,c+=n*P,d+=n*D,p+=n*z,g+=n*q,y+=n*W,b+=n*F,m+=n*K,v+=n*Y,w+=n*H,_+=n*$,E+=n*V,S+=n*G,k+=n*J,x+=n*X,f+=(n=t[6])*C,c+=n*N,d+=n*P,p+=n*D,g+=n*z,y+=n*q,b+=n*W,m+=n*F,v+=n*K,w+=n*Y,_+=n*H,E+=n*$,S+=n*V,k+=n*G,x+=n*J,R+=n*X,c+=(n=t[7])*C,d+=n*N,p+=n*P,g+=n*D,y+=n*z,b+=n*q,m+=n*W,v+=n*F,w+=n*K,_+=n*Y,E+=n*H,S+=n*$,k+=n*V,x+=n*G,R+=n*J,A+=n*X,d+=(n=t[8])*C,p+=n*N,g+=n*P,y+=n*D,b+=n*z,m+=n*q,v+=n*W,w+=n*F,_+=n*K,E+=n*Y,S+=n*H,k+=n*$,x+=n*V,R+=n*G,A+=n*J,T+=n*X,p+=(n=t[9])*C,g+=n*N,y+=n*P,b+=n*D,m+=n*z,v+=n*q,w+=n*W,_+=n*F,E+=n*K,S+=n*Y,k+=n*H,x+=n*$,R+=n*V,A+=n*G,T+=n*J,B+=n*X,g+=(n=t[10])*C,y+=n*N,b+=n*P,m+=n*D,v+=n*z,w+=n*q,_+=n*W,E+=n*F,S+=n*K,k+=n*Y,x+=n*H,R+=n*$,A+=n*V,T+=n*G,B+=n*J,O+=n*X,y+=(n=t[11])*C,b+=n*N,m+=n*P,v+=n*D,w+=n*z,_+=n*q,E+=n*W,S+=n*F,k+=n*K,x+=n*Y,R+=n*H,A+=n*$,T+=n*V,B+=n*G,O+=n*J,M+=n*X,b+=(n=t[12])*C,m+=n*N,v+=n*P,w+=n*D,_+=n*z,E+=n*q,S+=n*W,k+=n*F,x+=n*K,R+=n*Y,A+=n*H,T+=n*$,B+=n*V,O+=n*G,M+=n*J,L+=n*X,m+=(n=t[13])*C,v+=n*N,w+=n*P,_+=n*D,E+=n*z,S+=n*q,k+=n*W,x+=n*F,R+=n*K,A+=n*Y,T+=n*H,B+=n*$,O+=n*V,M+=n*G,L+=n*J,j+=n*X,v+=(n=t[14])*C,w+=n*N,_+=n*P,E+=n*D,S+=n*z,k+=n*q,x+=n*W,R+=n*F,A+=n*K,T+=n*Y,B+=n*H,O+=n*$,M+=n*V,L+=n*G,j+=n*J,U+=n*X,w+=(n=t[15])*C,a+=38*(E+=n*P),s+=38*(S+=n*D),u+=38*(k+=n*z),h+=38*(x+=n*q),l+=38*(R+=n*W),f+=38*(A+=n*F),c+=38*(T+=n*K),d+=38*(B+=n*Y),p+=38*(O+=n*H),g+=38*(M+=n*$),y+=38*(L+=n*V),b+=38*(j+=n*G),m+=38*(U+=n*J),v+=38*(I+=n*X),o=(n=(o+=38*(_+=n*N))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o=(n=(o+=i-1+37*(i-1))+(i=1)+65535)-65536*(i=Math.floor(n/65536)),a=(n=a+i+65535)-65536*(i=Math.floor(n/65536)),s=(n=s+i+65535)-65536*(i=Math.floor(n/65536)),u=(n=u+i+65535)-65536*(i=Math.floor(n/65536)),h=(n=h+i+65535)-65536*(i=Math.floor(n/65536)),l=(n=l+i+65535)-65536*(i=Math.floor(n/65536)),f=(n=f+i+65535)-65536*(i=Math.floor(n/65536)),c=(n=c+i+65535)-65536*(i=Math.floor(n/65536)),d=(n=d+i+65535)-65536*(i=Math.floor(n/65536)),p=(n=p+i+65535)-65536*(i=Math.floor(n/65536)),g=(n=g+i+65535)-65536*(i=Math.floor(n/65536)),y=(n=y+i+65535)-65536*(i=Math.floor(n/65536)),b=(n=b+i+65535)-65536*(i=Math.floor(n/65536)),m=(n=m+i+65535)-65536*(i=Math.floor(n/65536)),v=(n=v+i+65535)-65536*(i=Math.floor(n/65536)),w=(n=w+i+65535)-65536*(i=Math.floor(n/65536)),o+=i-1+37*(i-1),e[0]=o,e[1]=a,e[2]=s,e[3]=u,e[4]=h,e[5]=l,e[6]=f,e[7]=c,e[8]=d,e[9]=p,e[10]=g,e[11]=y,e[12]=b,e[13]=m,e[14]=v,e[15]=w}function z(e,t){D(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)z(i,i),2!==n&&4!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function W(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)z(i,i),1!==n&&D(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function F(e,r,n){var i,o,a=new Uint8Array(32),u=new Float64Array(80),h=t(),l=t(),f=t(),c=t(),d=t(),p=t();for(o=0;o<31;o++)a[o]=r[o];for(a[31]=127&r[31]|64,a[0]&=248,C(u,n),o=0;o<16;o++)l[o]=u[o],c[o]=h[o]=f[o]=0;for(h[0]=c[0]=1,o=254;o>=0;--o)M(h,l,i=a[o>>>3]>>>(7&o)&1),M(f,c,i),N(d,h,f),P(h,h,f),N(f,l,c),P(l,l,c),z(c,d),z(p,h),D(h,f,h),D(f,l,d),N(d,h,f),P(h,h,f),z(l,h),P(f,c,p),D(h,f,s),N(h,h,c),D(f,f,h),D(h,c,p),D(c,l,u),z(l,d),M(h,l,i),M(f,c,i);for(o=0;o<16;o++)u[o+16]=h[o],u[o+32]=f[o],u[o+48]=l[o],u[o+64]=c[o];var g=u.subarray(32),y=u.subarray(16);return q(g,g),D(y,y,g),L(e,y),0}function K(e,t){return F(e,t,i)}function Y(e,t){return r(t,32),K(e,t)}function H(e,t,r){var i=new Uint8Array(32);return F(i,r,t),m(e,n,i,v)}k.prototype.blocks=function(e,t,r){for(var n,i,o,a,s,u,h,l,f,c,d,p,g,y,b,m,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],x=this.h[2],R=this.h[3],A=this.h[4],T=this.h[5],B=this.h[6],O=this.h[7],M=this.h[8],L=this.h[9],j=this.r[0],U=this.r[1],I=this.r[2],C=this.r[3],N=this.r[4],P=this.r[5],D=this.r[6],z=this.r[7],q=this.r[8],W=this.r[9];r>=16;)c=f=0,c+=(S+=8191&(n=255&e[t+0]|(255&e[t+1])<<8))*j,c+=(k+=8191&(n>>>13|(i=255&e[t+2]|(255&e[t+3])<<8)<<3))*(5*W),c+=(x+=8191&(i>>>10|(o=255&e[t+4]|(255&e[t+5])<<8)<<6))*(5*q),c+=(R+=8191&(o>>>7|(a=255&e[t+6]|(255&e[t+7])<<8)<<9))*(5*z),f=(c+=(A+=8191&(a>>>4|(s=255&e[t+8]|(255&e[t+9])<<8)<<12))*(5*D))>>>13,c&=8191,c+=(T+=s>>>1&8191)*(5*P),c+=(B+=8191&(s>>>14|(u=255&e[t+10]|(255&e[t+11])<<8)<<2))*(5*N),c+=(O+=8191&(u>>>11|(h=255&e[t+12]|(255&e[t+13])<<8)<<5))*(5*C),c+=(M+=8191&(h>>>8|(l=255&e[t+14]|(255&e[t+15])<<8)<<8))*(5*I),d=f+=(c+=(L+=l>>>5|E)*(5*U))>>>13,d+=S*U,d+=k*j,d+=x*(5*W),d+=R*(5*q),f=(d+=A*(5*z))>>>13,d&=8191,d+=T*(5*D),d+=B*(5*P),d+=O*(5*N),d+=M*(5*C),f+=(d+=L*(5*I))>>>13,d&=8191,p=f,p+=S*I,p+=k*U,p+=x*j,p+=R*(5*W),f=(p+=A*(5*q))>>>13,p&=8191,p+=T*(5*z),p+=B*(5*D),p+=O*(5*P),p+=M*(5*N),g=f+=(p+=L*(5*C))>>>13,g+=S*C,g+=k*I,g+=x*U,g+=R*j,f=(g+=A*(5*W))>>>13,g&=8191,g+=T*(5*q),g+=B*(5*z),g+=O*(5*D),g+=M*(5*P),y=f+=(g+=L*(5*N))>>>13,y+=S*N,y+=k*C,y+=x*I,y+=R*U,f=(y+=A*j)>>>13,y&=8191,y+=T*(5*W),y+=B*(5*q),y+=O*(5*z),y+=M*(5*D),b=f+=(y+=L*(5*P))>>>13,b+=S*P,b+=k*N,b+=x*C,b+=R*I,f=(b+=A*U)>>>13,b&=8191,b+=T*j,b+=B*(5*W),b+=O*(5*q),b+=M*(5*z),m=f+=(b+=L*(5*D))>>>13,m+=S*D,m+=k*P,m+=x*N,m+=R*C,f=(m+=A*I)>>>13,m&=8191,m+=T*U,m+=B*j,m+=O*(5*W),m+=M*(5*q),v=f+=(m+=L*(5*z))>>>13,v+=S*z,v+=k*D,v+=x*P,v+=R*N,f=(v+=A*C)>>>13,v&=8191,v+=T*I,v+=B*U,v+=O*j,v+=M*(5*W),w=f+=(v+=L*(5*q))>>>13,w+=S*q,w+=k*z,w+=x*D,w+=R*P,f=(w+=A*N)>>>13,w&=8191,w+=T*C,w+=B*I,w+=O*U,w+=M*j,_=f+=(w+=L*(5*W))>>>13,_+=S*W,_+=k*q,_+=x*z,_+=R*D,f=(_+=A*P)>>>13,_&=8191,_+=T*N,_+=B*C,_+=O*I,_+=M*U,S=c=8191&(f=(f=((f+=(_+=L*j)>>>13)<<2)+f|0)+(c&=8191)|0),k=d+=f>>>=13,x=p&=8191,R=g&=8191,A=y&=8191,T=b&=8191,B=m&=8191,O=v&=8191,M=w&=8191,L=_&=8191,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=x,this.h[3]=R,this.h[4]=A,this.h[5]=T,this.h[6]=B,this.h[7]=O,this.h[8]=M,this.h[9]=L},k.prototype.finish=function(e,t){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},k.prototype.update=function(e,t,r){var n,i;if(this.leftover){for((i=16-this.leftover)>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128;){for(E=0;E<16;E++)S=8*E+V,O[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],M[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=L,o=j,a=U,s=I,u=C,h=N,l=P,c=z,d=q,p=W,g=F,y=K,b=Y,m=H,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,R+=65535&(x=(K>>>14|C<<18)^(K>>>18|C<<14)^(C>>>9|K<<23)),A+=x>>>16,T+=65535&(k=(C>>>14|K<<18)^(C>>>18|K<<14)^(K>>>9|C<<23)),B+=k>>>16,R+=65535&(x=K&Y^~K&H),A+=x>>>16,T+=65535&(k=C&N^~C&P),B+=k>>>16,R+=65535&(x=G[2*E+1]),A+=x>>>16,T+=65535&(k=G[2*E]),B+=k>>>16,k=O[E%16],A+=(x=M[E%16])>>>16,T+=65535&k,B+=k>>>16,T+=(A+=(R+=65535&x)>>>16)>>>16,R=65535&(x=_=65535&R|A<<16),A=x>>>16,T=65535&(k=w=65535&T|(B+=T>>>16)<<16),B=k>>>16,R+=65535&(x=(z>>>28|L<<4)^(L>>>2|z<<30)^(L>>>7|z<<25)),A+=x>>>16,T+=65535&(k=(L>>>28|z<<4)^(z>>>2|L<<30)^(z>>>7|L<<25)),B+=k>>>16,A+=(x=z&q^z&W^q&W)>>>16,T+=65535&(k=L&j^L&U^j&U),B+=k>>>16,f=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,v=65535&R|A<<16,R=65535&(x=g),A=x>>>16,T=65535&(k=s),B=k>>>16,A+=(x=_)>>>16,T+=65535&(k=w),B+=k>>>16,j=i,U=o,I=a,C=s=65535&(T+=(A+=(R+=65535&x)>>>16)>>>16)|(B+=T>>>16)<<16,N=u,P=h,D=l,L=f,q=c,W=d,F=p,K=g=65535&R|A<<16,Y=y,H=b,$=m,z=v,E%16==15)for(S=0;S<16;S++)k=O[S],R=65535&(x=M[S]),A=x>>>16,T=65535&k,B=k>>>16,k=O[(S+9)%16],R+=65535&(x=M[(S+9)%16]),A+=x>>>16,T+=65535&k,B+=k>>>16,w=O[(S+1)%16],R+=65535&(x=((_=M[(S+1)%16])>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25)),A+=x>>>16,T+=65535&(k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7),B+=k>>>16,w=O[(S+14)%16],A+=(x=((_=M[(S+14)%16])>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26))>>>16,T+=65535&(k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6),B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,O[S]=65535&T|B<<16,M[S]=65535&R|A<<16;R=65535&(x=z),A=x>>>16,T=65535&(k=L),B=k>>>16,k=e[0],A+=(x=t[0])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[0]=L=65535&T|B<<16,t[0]=z=65535&R|A<<16,R=65535&(x=q),A=x>>>16,T=65535&(k=j),B=k>>>16,k=e[1],A+=(x=t[1])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[1]=j=65535&T|B<<16,t[1]=q=65535&R|A<<16,R=65535&(x=W),A=x>>>16,T=65535&(k=U),B=k>>>16,k=e[2],A+=(x=t[2])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[2]=U=65535&T|B<<16,t[2]=W=65535&R|A<<16,R=65535&(x=F),A=x>>>16,T=65535&(k=I),B=k>>>16,k=e[3],A+=(x=t[3])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[3]=I=65535&T|B<<16,t[3]=F=65535&R|A<<16,R=65535&(x=K),A=x>>>16,T=65535&(k=C),B=k>>>16,k=e[4],A+=(x=t[4])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[4]=C=65535&T|B<<16,t[4]=K=65535&R|A<<16,R=65535&(x=Y),A=x>>>16,T=65535&(k=N),B=k>>>16,k=e[5],A+=(x=t[5])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[5]=N=65535&T|B<<16,t[5]=Y=65535&R|A<<16,R=65535&(x=H),A=x>>>16,T=65535&(k=P),B=k>>>16,k=e[6],A+=(x=t[6])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[6]=P=65535&T|B<<16,t[6]=H=65535&R|A<<16,R=65535&(x=$),A=x>>>16,T=65535&(k=D),B=k>>>16,k=e[7],A+=(x=t[7])>>>16,T+=65535&k,B+=k>>>16,B+=(T+=(A+=(R+=65535&x)>>>16)>>>16)>>>16,e[7]=D=65535&T|B<<16,t[7]=$=65535&R|A<<16,V+=128,n-=128}return n}function X(e,t,r){var n,i=new Int32Array(8),o=new Int32Array(8),a=new Uint8Array(256),s=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,o[0]=4089235720,o[1]=2227873595,o[2]=4271175723,o[3]=1595750129,o[4]=2917565137,o[5]=725511199,o[6]=4215389547,o[7]=327033209,J(i,o,t,r),r%=128,n=0;n=0;--i)Q(e,t,n=r[i/8|0]>>(7&i)&1),Z(t,e),Z(e,e),Q(e,t,n)}function re(e,r){var n=[t(),t(),t(),t()];B(n[0],l),B(n[1],f),B(n[2],a),D(n[3],l,f),te(e,n,r)}function ne(e,n,i){var o,a=new Uint8Array(64),s=[t(),t(),t(),t()];for(i||r(n,32),X(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64,re(s,a),ee(e,s),o=0;o<32;o++)n[o+32]=e[o];return 0}var ie=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function oe(e,t){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>4)*ie[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ie[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function ae(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;oe(e,r)}function se(e,r,n,i){var o,a,s=new Uint8Array(64),u=new Uint8Array(64),h=new Uint8Array(64),l=new Float64Array(64),f=[t(),t(),t(),t()];X(s,i,32),s[0]&=248,s[31]&=127,s[31]|=64;var c=n+64;for(o=0;o>7&&P(e[0],o,e[0]),D(e[3],e[0],e[1]),0)}(d,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(fe),t=new Uint8Array(ce);return ne(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(pe(e),e.length!==ce)throw new Error("bad secret key size");for(var t=new Uint8Array(fe),r=0;re.replace("'",""),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.derivePath=e.isValidPath=e.getPublicKey=e.getMasterKeyFromSeed=void 0;const t=Ts,r=Bs.exports,n=Os;e.getMasterKeyFromSeed=e=>{const r=t("sha512","ed25519 seed").update(X.from(e,"hex")).digest();return{key:r.slice(0,32),chainCode:r.slice(32)}};e.getPublicKey=(e,t=!0)=>{const n=r.sign.keyPair.fromSeed(e).secretKey.subarray(32),i=X.alloc(1,0);return t?X.concat([i,X.from(n)]):X.from(n)},e.isValidPath=e=>!!n.pathRegex.test(e)&&!e.split("/").slice(1).map(n.replaceDerive).some(isNaN),e.derivePath=(r,i,o=2147483648)=>{if(!e.isValidPath(r))throw new Error("Invalid derivation path");const{key:a,chainCode:s}=e.getMasterKeyFromSeed(i);return r.split("/").slice(1).map(n.replaceDerive).map((e=>parseInt(e,10))).reduce(((e,r)=>(({key:e,chainCode:r},n)=>{const i=X.allocUnsafe(4);i.writeUInt32BE(n,0);const o=X.concat([X.alloc(1,0),e,i]),a=t("sha512",r).update(o).digest();return{key:a.slice(0,32),chainCode:a.slice(32)}})(e,r+o)),{key:a,chainCode:s})}}(Ue);var Ms=t(Ue);let Ls=(e={})=>{let t,{sk:r,keepPrivate:n=!1,seed:i=null}=e;if(r)t=Us(r);else{let e=Ns(i);t=e.vk,r=e.sk}return{sign:e=>Ps(r,e),verify:(e,r)=>Ds(t,e,r),vk:t,sk:n?void 0:r}};function js(e=null){var t=null;return t=null==e?I.sign.keyPair():I.sign.keyPair.fromSeed(e),{sk:new Uint8Array(t.secretKey.slice(0,32)),vk:new Uint8Array(t.secretKey.slice(32,64))}}function Us(e){return Cs(Is(e)).vk}function Is(e){return js(O(e))}function Cs(e){return{vk:B(e.vk),sk:B(e.sk)}}function Ns(e=null){return Cs(js(e))}function Ps(e,t){var r=Is(e),n=M(r.sk,r.vk);return B(I.sign.detached(t,n))}function Ds(e,t,r){var n=O(e),i=O(r);try{return I.sign.detached.verify(t,i,n)}catch(e){return!1}}var zs=Object.freeze({__proto__:null,create_wallet:Ls,generate_keys:js,get_vk:Us,format_to_keys:Is,keys_to_format:Cs,new_wallet:Ns,new_wallet_bip39:function(e,t=0){return function(e,t=0){let r,n;void 0!==e?r=e:(n=C.exports.generateMnemonic(256),r=C.exports.mnemonicToSeedSync(n).toString("hex"));const i="m/44'/789'/"+t+"'/0'/0'",{key:o,chainCode:a}=Ms.derivePath(i,r,2147483648),s=o.toString("hex"),u=Ms.getPublicKey(o,!1).toString("hex");if(u!==Us(s))throw Error("Bip32 public key does not match with Lamden public key!");return{sk:s,vk:u,derivationIndex:t,seed:void 0!==e?null:r,mnemonic:void 0!==e?null:n}}(e,t)},sign:Ps,verify:Ds});class qs{constructor(){this._events={}}on(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeListener(e,t){if(!this._events[e])throw new Error(`Can't remove a listener. Event "${e}" doesn't exits.`);this._events[e]=this._events[e].filter((e=>e!==t))}emit(e,t){if(!this._events[e])return;this._events[e].forEach((e=>{e(t)}))}}var Ws={exports:{}};!function(e,t){var r=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==r)return r;throw new Error("unable to locate global object")}();e.exports=t=r.fetch,r.fetch&&(t.default=r.fetch.bind(r)),t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response}(Ws,Ws.exports);var Fs,Ks=Ws.exports,Ys={exports:{}};Fs=Ys,function(e){var t,r=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,n=Math.ceil,i=Math.floor,o="[BigNumber Error] ",a=o+"Number primitive has more than 15 significant digits: ",s=1e14,u=14,h=9007199254740991,l=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e7,c=1e9;function d(e){var t=0|e;return e>0||e===t?t:t-1}function p(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nh^r?1:-1;for(s=(u=i.length)<(h=o.length)?u:h,a=0;ao[a]^r?1:-1;return u==h?0:u>h^r?1:-1}function y(e,t,r,n){if(er||e!==i(e))throw Error(o+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function b(e){var t=e.c.length-1;return d(e.e/u)==t&&e.c[t]%2!=0}function m(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function v(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(++t>(n=e.length)){for(i=r,t-=n;--t;i+=r);e+=i}else tN?g.c=g.e=null:e.e=10;f/=10,l++);return void(l>N?g.c=g.e=null:(g.e=l,g.c=[e]))}p=String(e)}else{if(!r.test(p=String(e)))return E(g,p,c);g.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(l=p.indexOf("."))>-1&&(p=p.replace(".","")),(f=p.search(/e/i))>0?(l<0&&(l=f),l+=+p.slice(f+1),p=p.substring(0,f)):l<0&&(l=p.length)}else{if(y(t,2,W.length,"Base"),10==t)return $(g=new F(e),L+g.e+1,j);if(p=String(e),c="number"==typeof e){if(0*e!=0)return E(g,p,c,t);if(g.s=1/e<0?(p=p.slice(1),-1):1,F.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(a+e)}else g.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=W.slice(0,t),l=f=0,d=p.length;fl){l=d;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,f=-1,l=0;continue}return E(g,String(e),c,t)}c=!1,(l=(p=_(p,t,10,g.s)).indexOf("."))>-1?p=p.replace(".",""):l=p.length}for(f=0;48===p.charCodeAt(f);f++);for(d=p.length;48===p.charCodeAt(--d););if(p=p.slice(f,++d)){if(d-=f,c&&F.DEBUG&&d>15&&(e>h||e!==i(e)))throw Error(a+g.s*e);if((l=l-f-1)>N)g.c=g.e=null;else if(l=I)?m(u,a):v(u,a,"0");else if(o=(e=$(new F(e),t,r)).e,s=(u=p(e.c)).length,1==n||2==n&&(t<=o||o<=U)){for(;ss){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=o-s)>0)for(o+1==s&&(u+=".");t--;u+="0");return e.s<0&&i?"-"+u:u}function Y(e,t){for(var r,n=1,i=new F(e[0]);n=10;i/=10,n++);return(r=n+r*u-1)>N?e.c=e.e=null:r=10;c/=10,a++);if((h=t-a)<0)h+=u,f=t,g=(d=y[p=0])/b[a-f-1]%10|0;else if((p=n((h+1)/u))>=y.length){if(!o)break e;for(;y.length<=p;y.push(0));d=g=0,a=1,f=(h%=u)-u+1}else{for(d=c=y[p],a=1;c>=10;c/=10,a++);g=(f=(h%=u)-u+a)<0?0:d/b[a-f-1]%10|0}if(o=o||t<0||null!=y[p+1]||(f<0?d:d%b[a-f-1]),o=r<4?(g||o)&&(0==r||r==(e.s<0?3:2)):g>5||5==g&&(4==r||o||6==r&&(h>0?f>0?d/b[a-f]:0:y[p-1])%10&1||r==(e.s<0?8:7)),t<1||!y[0])return y.length=0,o?(t-=e.e+1,y[0]=b[(u-t%u)%u],e.e=-t||0):y[0]=e.e=0,e;if(0==h?(y.length=p,c=1,p--):(y.length=p+1,c=b[u-h],y[p]=f>0?i(d/b[a-f]%b[f])*c:0),o)for(;;){if(0==p){for(h=1,f=y[0];f>=10;f/=10,h++);for(f=y[0]+=c,c=1;f>=10;f/=10,c++);h!=c&&(e.e++,y[0]==s&&(y[0]=1));break}if(y[p]+=c,y[p]!=s)break;y[p--]=0,c=1}for(h=y.length;0===y[--h];y.pop());}e.e>N?e.c=e.e=null:e.e=I?m(t,r):v(t,r,"0"),e.s<0?"-"+t:t)}return F.clone=e,F.ROUND_UP=0,F.ROUND_DOWN=1,F.ROUND_CEIL=2,F.ROUND_FLOOR=3,F.ROUND_HALF_UP=4,F.ROUND_HALF_DOWN=5,F.ROUND_HALF_EVEN=6,F.ROUND_HALF_CEIL=7,F.ROUND_HALF_FLOOR=8,F.EUCLID=9,F.config=F.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(o+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(y(r=e[t],0,c,t),L=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(y(r=e[t],0,8,t),j=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((r=e[t])&&r.pop?(y(r[0],-c,0,t),y(r[1],0,c,t),U=r[0],I=r[1]):(y(r,-c,c,t),U=-(I=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if((r=e[t])&&r.pop)y(r[0],-c,-1,t),y(r[1],1,c,t),C=r[0],N=r[1];else{if(y(r,-c,c,t),!r)throw Error(o+t+" cannot be zero: "+r);C=-(N=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if((r=e[t])!==!!r)throw Error(o+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw P=!r,Error(o+"crypto unavailable");P=r}else P=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(y(r=e[t],0,9,t),D=r),e.hasOwnProperty(t="POW_PRECISION")&&(y(r=e[t],0,c,t),z=r),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(r=e[t]))throw Error(o+t+" not an object: "+r);q=r}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(r=e[t])||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(o+t+" invalid: "+r);W=r}}return{DECIMAL_PLACES:L,ROUNDING_MODE:j,EXPONENTIAL_AT:[U,I],RANGE:[C,N],CRYPTO:P,MODULO_MODE:D,POW_PRECISION:z,FORMAT:q,ALPHABET:W}},F.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!F.DEBUG)return!0;var t,r,n=e.c,a=e.e,h=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===h||-1===h)&&a>=-c&&a<=c&&a===i(a)){if(0===n[0]){if(0===a&&1===n.length)return!0;break e}if((t=(a+1)%u)<1&&(t+=u),String(n[0]).length==t){for(t=0;t=s||r!==i(r))break e;if(0!==r)return!0}}}else if(null===n&&null===a&&(null===h||1===h||-1===h))return!0;throw Error(o+"Invalid BigNumber: "+e)},F.maximum=F.max=function(){return Y(arguments,O.lt)},F.minimum=F.min=function(){return Y(arguments,O.gt)},F.random=(S=9007199254740992,k=Math.random()*S&2097151?function(){return i(Math.random()*S)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,a,s,h,f=0,d=[],p=new F(M);if(null==e?e=L:y(e,0,c),s=n(e/u),P)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(s*=2));f>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(d.push(h%1e14),f+=2);f=s/2}else{if(!crypto.randomBytes)throw P=!1,Error(o+"crypto unavailable");for(t=crypto.randomBytes(s*=7);f=9e15?crypto.randomBytes(7).copy(t,f):(d.push(h%1e14),f+=7);f=s/7}if(!P)for(;f=10;h/=10,f++);fr-1&&(null==a[i+1]&&(a[i+1]=0),a[i+1]+=a[i]/r|0,a[i]%=r)}return a.reverse()}return function(r,n,i,o,a){var s,u,h,l,f,c,d,g,y=r.indexOf("."),b=L,m=j;for(y>=0&&(l=z,z=0,r=r.replace(".",""),c=(g=new F(n)).pow(r.length-y),z=l,g.c=t(v(p(c.c),c.e,"0"),10,i,e),g.e=g.c.length),h=l=(d=t(r,n,i,a?(s=W,e):(s=e,W))).length;0==d[--l];d.pop());if(!d[0])return s.charAt(0);if(y<0?--h:(c.c=d,c.e=h,c.s=o,d=(c=w(c,g,b,m,i)).c,f=c.r,h=c.e),y=d[u=h+b+1],l=i/2,f=f||u<0||null!=d[u+1],f=m<4?(null!=y||f)&&(0==m||m==(c.s<0?3:2)):y>l||y==l&&(4==m||f||6==m&&1&d[u-1]||m==(c.s<0?8:7)),u<1||!d[0])r=f?v(s.charAt(1),-b,s.charAt(0)):s.charAt(0);else{if(d.length=u,f)for(--i;++d[--u]>i;)d[u]=0,u||(++h,d=[1].concat(d));for(l=d.length;!d[--l];);for(y=0,r="";y<=l;r+=s.charAt(d[y++]));r=v(r,h,s.charAt(0))}return r}}(),w=function(){function e(e,t,r){var n,i,o,a,s=0,u=e.length,h=t%f,l=t/f|0;for(e=e.slice();u--;)s=((i=h*(o=e[u]%f)+(n=l*o+(a=e[u]/f|0)*h)%f*f+s)/r|0)+(n/f|0)+l*a,e[u]=i%r;return s&&(e=[s].concat(e)),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,o,a,h,l){var f,c,p,g,y,b,m,v,w,_,E,S,k,x,R,A,T,B=n.s==o.s?1:-1,O=n.c,M=o.c;if(!(O&&O[0]&&M&&M[0]))return new F(n.s&&o.s&&(O?!M||O[0]!=M[0]:M)?O&&0==O[0]||!M?0*B:B/0:NaN);for(w=(v=new F(B)).c=[],B=a+(c=n.e-o.e)+1,l||(l=s,c=d(n.e/u)-d(o.e/u),B=B/u|0),p=0;M[p]==(O[p]||0);p++);if(M[p]>(O[p]||0)&&c--,B<0)w.push(1),g=!0;else{for(x=O.length,A=M.length,p=0,B+=2,(y=i(l/(M[0]+1)))>1&&(M=e(M,y,l),O=e(O,y,l),A=M.length,x=O.length),k=A,E=(_=O.slice(0,A)).length;E=l/2&&R++;do{if(y=0,(f=t(M,_,A,E))<0){if(S=_[0],A!=E&&(S=S*l+(_[1]||0)),(y=i(S/R))>1)for(y>=l&&(y=l-1),m=(b=e(M,y,l)).length,E=_.length;1==t(b,_,m,E);)y--,r(b,A=10;B/=10,p++);$(v,a+(v.e=p+c*u-1)+1,h,g)}else v.e=c,v.r=+g;return v}}(),x=/^(-?)0([xbo])(?=\w[\w.]*$)/i,R=/^([^.]+)\.$/,A=/^\.([^.]+)$/,T=/^-?(Infinity|NaN)$/,B=/^\s*\+(?=[\w.])|^\s+|\s+$/g,E=function(e,t,r,n){var i,a=r?t:t.replace(B,"");if(T.test(a))e.s=isNaN(a)?null:a<0?-1:1;else{if(!r&&(a=a.replace(x,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,a=a.replace(R,"$1").replace(A,"0.$1")),t!=a))return new F(a,i);if(F.DEBUG)throw Error(o+"Not a"+(n?" base "+n:"")+" number: "+t);e.s=null}e.c=e.e=null},O.absoluteValue=O.abs=function(){var e=new F(this);return e.s<0&&(e.s=1),e},O.comparedTo=function(e,t){return g(this,new F(e,t))},O.decimalPlaces=O.dp=function(e,t){var r,n,i,o=this;if(null!=e)return y(e,0,c),null==t?t=j:y(t,0,8),$(new F(o),e+o.e+1,t);if(!(r=o.c))return null;if(n=((i=r.length-1)-d(this.e/u))*u,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},O.dividedBy=O.div=function(e,t){return w(this,new F(e,t),L,j)},O.dividedToIntegerBy=O.idiv=function(e,t){return w(this,new F(e,t),0,1)},O.exponentiatedBy=O.pow=function(e,t){var r,a,s,h,l,f,c,d,p=this;if((e=new F(e)).c&&!e.isInteger())throw Error(o+"Exponent not an integer: "+V(e));if(null!=t&&(t=new F(t)),l=e.e>14,!p.c||!p.c[0]||1==p.c[0]&&!p.e&&1==p.c.length||!e.c||!e.c[0])return d=new F(Math.pow(+V(p),l?2-b(e):+V(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new F(NaN);(a=!f&&p.isInteger()&&t.isInteger())&&(p=p.mod(t))}else{if(e.e>9&&(p.e>0||p.e<-1||(0==p.e?p.c[0]>1||l&&p.c[1]>=24e7:p.c[0]<8e13||l&&p.c[0]<=9999975e7)))return h=p.s<0&&b(e)?-0:0,p.e>-1&&(h=1/h),new F(f?1/h:h);z&&(h=n(z/u+2))}for(l?(r=new F(.5),f&&(e.s=1),c=b(e)):c=(s=Math.abs(+V(e)))%2,d=new F(M);;){if(c){if(!(d=d.times(p)).c)break;h?d.c.length>h&&(d.c.length=h):a&&(d=d.mod(t))}if(s){if(0===(s=i(s/2)))break;c=s%2}else if($(e=e.times(r),e.e+1,1),e.e>14)c=b(e);else{if(0==(s=+V(e)))break;c=s%2}p=p.times(p),h?p.c&&p.c.length>h&&(p.c.length=h):a&&(p=p.mod(t))}return a?d:(f&&(d=M.div(d)),t?d.mod(t):h?$(d,z,j,void 0):d)},O.integerValue=function(e){var t=new F(this);return null==e?e=j:y(e,0,8),$(t,t.e+1,e)},O.isEqualTo=O.eq=function(e,t){return 0===g(this,new F(e,t))},O.isFinite=function(){return!!this.c},O.isGreaterThan=O.gt=function(e,t){return g(this,new F(e,t))>0},O.isGreaterThanOrEqualTo=O.gte=function(e,t){return 1===(t=g(this,new F(e,t)))||0===t},O.isInteger=function(){return!!this.c&&d(this.e/u)>this.c.length-2},O.isLessThan=O.lt=function(e,t){return g(this,new F(e,t))<0},O.isLessThanOrEqualTo=O.lte=function(e,t){return-1===(t=g(this,new F(e,t)))||0===t},O.isNaN=function(){return!this.s},O.isNegative=function(){return this.s<0},O.isPositive=function(){return this.s>0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.minus=function(e,t){var r,n,i,o,a=this,h=a.s;if(t=(e=new F(e,t)).s,!h||!t)return new F(NaN);if(h!=t)return e.s=-t,a.plus(e);var l=a.e/u,f=e.e/u,c=a.c,p=e.c;if(!l||!f){if(!c||!p)return c?(e.s=-t,e):new F(p?a:NaN);if(!c[0]||!p[0])return p[0]?(e.s=-t,e):new F(c[0]?a:3==j?-0:0)}if(l=d(l),f=d(f),c=c.slice(),h=l-f){for((o=h<0)?(h=-h,i=c):(f=l,i=p),i.reverse(),t=h;t--;i.push(0));i.reverse()}else for(n=(o=(h=c.length)<(t=p.length))?h:t,h=t=0;t0)for(;t--;c[r++]=0);for(t=s-1;n>h;){if(c[--n]=0;){for(r=0,y=S[i]%w,b=S[i]/w|0,o=i+(a=l);o>i;)r=((c=y*(c=E[--a]%w)+(h=b*c+(p=E[a]/w|0)*y)%w*w+m[o]+r)/v|0)+(h/w|0)+b*p,m[o--]=c%v;m[o]=r}return r?++n:m.splice(0,1),H(e,m,n)},O.negated=function(){var e=new F(this);return e.s=-e.s||null,e},O.plus=function(e,t){var r,n=this,i=n.s;if(t=(e=new F(e,t)).s,!i||!t)return new F(NaN);if(i!=t)return e.s=-t,n.minus(e);var o=n.e/u,a=e.e/u,h=n.c,l=e.c;if(!o||!a){if(!h||!l)return new F(i/0);if(!h[0]||!l[0])return l[0]?e:new F(h[0]?n:0*i)}if(o=d(o),a=d(a),h=h.slice(),i=o-a){for(i>0?(a=o,r=l):(i=-i,r=h),r.reverse();i--;r.push(0));r.reverse()}for((i=h.length)-(t=l.length)<0&&(r=l,l=h,h=r,t=i),i=0;t;)i=(h[--t]=h[t]+l[t]+i)/s|0,h[t]=s===h[t]?0:h[t]%s;return i&&(h=[i].concat(h),++a),H(e,h,a)},O.precision=O.sd=function(e,t){var r,n,i,o=this;if(null!=e&&e!==!!e)return y(e,1,c),null==t?t=j:y(t,0,8),$(new F(o),e,t);if(!(r=o.c))return null;if(n=(i=r.length-1)*u+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&o.e+1>n&&(n=o.e+1),n},O.shiftedBy=function(e){return y(e,-9007199254740991,h),this.times("1e"+e)},O.squareRoot=O.sqrt=function(){var e,t,r,n,i,o=this,a=o.c,s=o.s,u=o.e,h=L+4,l=new F("0.5");if(1!==s||!a||!a[0])return new F(!s||s<0&&(!a||a[0])?NaN:a?o:1/0);if(0==(s=Math.sqrt(+V(o)))||s==1/0?(((t=p(a)).length+u)%2==0&&(t+="0"),s=Math.sqrt(+t),u=d((u+1)/2)-(u<0||u%2),r=new F(t=s==1/0?"1e"+u:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new F(s+""),r.c[0])for((s=(u=r.e)+h)<3&&(s=0);;)if(i=r,r=l.times(i.plus(w(o,i,h,1))),p(i.c).slice(0,s)===(t=p(r.c)).slice(0,s)){if(r.e0&&g>0){for(a=g%u||u,f=p.substr(0,a);a0&&(f+=l+p.slice(a)),d&&(f="-"+f)}n=c?f+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?c.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):c):f}return(r.prefix||"")+n+(r.suffix||"")},O.toFraction=function(e){var t,r,n,i,a,s,h,f,c,d,g,y,b=this,m=b.c;if(null!=e&&(!(h=new F(e)).isInteger()&&(h.c||1!==h.s)||h.lt(M)))throw Error(o+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+V(h));if(!m)return new F(b);for(t=new F(M),c=r=new F(M),n=f=new F(M),y=p(m),a=t.e=y.length-b.e-1,t.c[0]=l[(s=a%u)<0?u+s:s],e=!e||h.comparedTo(t)>0?a>0?t:c:h,s=N,N=1/0,h=new F(y),f.c[0]=0;d=w(h,t,0,1),1!=(i=r.plus(d.times(n))).comparedTo(e);)r=n,n=i,c=f.plus(d.times(i=c)),f=i,t=h.minus(d.times(i=t)),h=i;return i=w(e.minus(r),n,0,1),f=f.plus(i.times(c)),r=r.plus(i.times(n)),f.s=c.s=b.s,g=w(c,n,a*=2,j).minus(b).abs().comparedTo(w(f,r,a,j).minus(b).abs())<1?[c,n]:[f,r],N=s,g},O.toNumber=function(){return+V(this)},O.toPrecision=function(e,t){return null!=e&&y(e,1,c),K(this,e,t,2)},O.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(null==e?t=i<=U||i>=I?m(p(r.c),i):v(p(r.c),i,"0"):10===e?t=v(p((r=$(new F(r),L+i+1,j)).c),r.e,"0"):(y(e,2,W.length,"Base"),t=_(v(p(r.c),i,"0"),10,e,n,!0)),n<0&&r.c[0]&&(t="-"+t)),t},O.valueOf=O.toJSON=function(){return V(this)},O._isBigNumber=!0,null!=t&&F.set(t),F}(),t.default=t.BigNumber=t,Fs.exports?Fs.exports=t:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=t)}(e);var Hs=Ys.exports;function $s(e,t){const r=t=>{throw new Error(`Error encoding ${t} to ${e}`)},n=e=>{if(Math.floor(e)===e)return 0;try{return e.toString().split(".")[1].length}catch(e){return 0}},i=e=>e&&"object"==typeof e&&e.constructor===Array,o=e=>e&&"object"==typeof e&&e.constructor===Object,a=e=>e instanceof Date,s=e=>!i(e)&&!isNaN(l(e).toNumber()),u=e=>!!s(e)&&0!==n(e),h=e=>(s(e)||r(e),Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}),l=e=>(Hs.isBigNumber(e)||(e=new Hs(e)),e),f=e=>(e=>"boolean"==typeof e)(e)?e:"true"===e||1===e||"false"!==e&&0!==e&&void r(e),c=e=>(e=>"string"==typeof e||e instanceof String)(e)?e:a(e)?e.toISOString():JSON.stringify(e),d=e=>(e=a(e)?e:new Date(e),a(e)||r(e),{__time__:[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}),p=e=>{const t=a(e)?e.getTime():new Date(e).getTime(),r=parseInt(t/1e3/60/60/24);return{__delta__:[r,(t-24*r*60*60*1e3)/1e3]}},g=e=>{if(i(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(i(e))return b(e);r(e)},y=e=>{if(o(e))return b(e);try{e=JSON.parse(e)}catch(t){r(e)}if(o(e))return b(e);r(e)};function b(e){let t=JSON.stringify(e,((e,t)=>"datetime"===e||"datetime.datetime"===e?$s("datetime.datetime",t):"timedelta"===e||"datetime.timedelta"===e?$s("datetime.timedelta",t):"__fixed__"!==e&&u(t)?h(t):t));return JSON.parse(t,((e,t)=>{const r=e=>1===Object.keys(e).length&&["datetime.datetime","datetime","datetime.timedelta","timedelta"].filter((t=>t===Object.keys(e)[0])).length>0;return t.constructor===Array&&t.map((e=>1===Object.keys(e).length&&r(t)?e[Object.keys(e)[0]]:e)),t.constructor===Object&&1===Object.keys(t).length&&r(t)?t[Object.keys(t)[0]]:t}))}const m={str:c,string:c,float:h,int:e=>{if(s(e))return parseInt(e);r(e)},bool:f,boolean:f,dict:y,list:g,Any:()=>t,"datetime.timedelta":p,"datetime.datetime":d,timedelta:p,datetime:d,number:e=>(s(e)||r(e),u(e)?(Hs.isBigNumber(e)||(e=new Hs(e)),{__fixed__:e.toFixed(30).replace(/^0+(\d)|(\d)0+$/gm,"$1$2")}):(e=>!!s(e)&&0===n(e))(e)?parseInt(e):void 0),object:e=>{try{return g(e)}catch(t){return y(e)}},bigNumber:l};if(Object.keys(m).includes(e))return m[e](t);throw new Error(`Error: ${e} is not a valid encoder type.`)}Hs.config({RANGE:[-30,30],EXPONENTIAL_AT:1e9}),Hs.set({DECIMAL_PLACES:30,ROUNDING_MODE:Hs.ROUND_DOWN}),$s.BigNumber=Hs;const{validateTypes:Vs}=o;class Gs{constructor(e){if(!Vs.isObjectWithKeys(e))throw new Error("Expected Object and got Type: "+typeof e);if(!Vs.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.hosts=this.validateHosts(e.hosts)}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}send(e,t,r,n,i){let o="";Object.keys(r).includes("parms")&&(o=this.createParms(r.parms));let a={};if("POST"===e){let t={"Content-Type":"application/json"};a.method=e,a.headers=t,a.body=r}return Ks(`${n||this.url}${t}${o}`,a).then((async e=>{if(200===e.status){let t=await e.json();return i(t,void 0),t}{let t=!!Vs.isStringWithValue(e.statusText)&&e.statusText;return i(void 0,t),t}})).catch((e=>i(void 0,e.toString())))}createParms(e){if(0===Object.keys(e).length)return"";let t="?";return Object.keys(e).forEach((r=>{t=`${t}${r}=${e[r]}&`})),t.slice(0,-1)}async getContractInfo(e){const t=e=>{try{if(e.name)return e}catch(e){}return null};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getVariable(e,t,r=""){let n={};Vs.isStringWithValue(r)&&(n.key=r);let i=`/contracts/${e}/${t}/`;const o=e=>{try{if(e.value)return e.value}catch(e){}return null};return this.send("GET",i,{parms:n},void 0,((e,t)=>o(e))).then((e=>o(e)))}async getContractMethods(e){const t=e=>{try{if(e.methods)return e.methods}catch(e){}return[]};let r=`/contracts/${e}/methods`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async getContractVariables(e){const t=e=>{try{if(e.variables)return e}catch(e){}return{}};let r=`/contracts/${e}/variables`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async pingServer(){const e=e=>{try{if(e.status)return!0}catch(e){}return!1};let t=await this.send("GET","/ping",{},void 0,((t,r)=>e(t)));return e(t)}async getCurrencyBalance(e){let t=await this.getVariable("currency","balances",e);return t?t.__fixed__?$s("bigNumber",t.__fixed__):$s("bigNumber",t.toString()):$s("bigNumber",0)}async contractExists(e){const t=e=>{try{if(e.name)return!0}catch(e){}return!1};let r=`/contracts/${e}`;return this.send("GET",r,{},void 0,((e,r)=>t(e))).then((e=>t(e)))}async sendTransaction(e,t,r){return this.send("POST","/",JSON.stringify(e),t,((e,t)=>t?r?void r(void 0,t):t:r?void r(e,void 0):e))}async getNonce(e,t){if(!Vs.isStringHex(e))return`${e} is not a hex string.`;let r=`/nonce/${e}`,n=this.host;return this.send("GET",r,{},n,((r,i)=>i?t?void t(void 0,`Unable to get nonce for ${e} on network ${n}`):`Unable to get nonce for ${e} on network ${n}`:(r.masternode=n,t?void t(r,void 0):r)))}checkTransaction(e,t){const r={hash:e};return this.send("GET","/tx",{parms:r},void 0,((e,r)=>r?t?void t(void 0,r):r:t?void t(e,void 0):e))}}const{validateTypes:Js}=o;class Xs{constructor(e){if(!Js.isObjectWithKeys(e))throw new Error("Expected Network Info Object and got Type: "+typeof e);if(!Js.isArrayWithValues(e.hosts))throw new Error("HOSTS Required (Type: Array)");this.type=Js.isStringWithValue(e.type)?e.type.toLowerCase():"custom",this.events=new qs,this.hosts=this.validateHosts(e.hosts),this.currencySymbol=Js.isStringWithValue(e.currencySymbol)?e.currencySymbol:"TAU",this.name=Js.isStringWithValue(e.name)?e.name:"lamden network",this.lamden=!!Js.isBoolean(e.lamden)&&e.lamden,this.blockExplorer=Js.isStringWithValue(e.blockExplorer)?e.blockExplorer:void 0,this.online=!1;try{this.API=new Gs(e)}catch(e){throw new Error(e)}}vaidateProtocol(e){if(["https://","http://"].map((t=>e.includes(t))).includes(!0))return e;throw new Error("Host String must include http:// or https://")}validateHosts(e){return e.map((e=>this.vaidateProtocol(e.toLowerCase())))}async ping(e){return this.online=await this.API.pingServer(),this.events.emit("online",this.online),Js.isFunction(e)&&e(this.online),this.online}get host(){return this.hosts[Math.floor(Math.random()*this.hosts.length)]}get url(){return this.host}getNetworkInfo(){return{name:this.name,lamden:this.lamden,type:this.type,hosts:this.hosts,url:this.url,online:this.online}}}const{validateTypes:Zs}=o;class Qs extends Xs{constructor(e,t,r){if(Zs.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),!Zs.isObjectWithKeys(t))throw new Error("txInfo object not found");if(!Zs.isStringHex(t.senderVk))throw new Error("Sender Public Key Required (Type: Hex String)");if(!Zs.isStringWithValue(t.contractName))throw new Error("Contract Name Required (Type: String)");if(!Zs.isStringWithValue(t.methodName))throw new Error("Method Required (Type: String)");if(!Zs.isInteger(t.stampLimit))throw new Error("Stamps Limit Required (Type: Integer)");if(this.uid=Zs.isStringWithValue(t.uid)?t.uid:void 0,this.sender=t.senderVk,this.contract=t.contractName,this.method=t.methodName,this.kwargs={},Zs.isObject(t.kwargs)&&(this.kwargs=t.kwargs),this.stampLimit=t.stampLimit,void 0!==t.nonce){if(!Zs.isInteger(t.nonce))throw new Error(`arg[6] Nonce is required to be an Integer, type ${typeof t.none} was given`);this.nonce=t.nonce}if(void 0!==t.processor){if(!Zs.isStringWithValue(t.processor))throw new Error(`arg[7] Processor is required to be a String, type ${typeof t.processor} was given`);this.processor=t.processor}this.signature,this.transactionSigned=!1,this.nonceResult={},this.txSendResult={errors:[]},this.txBlockResult={},this.txHash,this.txCheckResult={},this.txCheckAttempts=0,this.txCheckLimit=10,r&&(r.uid&&(this.uid=r.uid),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult),Zs.isObjectWithKeys(r.nonceResult)&&(this.nonceResult=r.nonceResult,Zs.isInteger(this.nonceResult.nonce)&&(this.nonce=this.nonceResult.nonce),Zs.isStringWithValue(this.nonceResult.processor)&&(this.processor=this.nonceResult.processor)),Zs.isObjectWithKeys(r.txSendResult)&&(this.txSendResult=r.txSendResult,this.txSendResult.hash&&(this.txHash=this.txSendResult.hash)),Zs.isObjectWithKeys(r.txBlockResult)&&(this.txBlockResult=r.txBlockResult),Zs.isObjectWithKeys(r.resultInfo)&&(this.resultInfo=r.resultInfo)),this.makePayload()}makePayload(){this.payload={contract:this.contract,function:this.method,kwargs:this.kwargs,nonce:this.nonce,processor:this.processor,sender:this.sender,stamps_supplied:this.stampLimit},this.sortedPayload=this.sortObject(this.payload)}makeTransaction(){this.tx={metadata:{signature:this.signature,timestamp:parseInt(+new Date/1e3)},payload:this.sortedPayload.orderedObj}}verifySignature(){if(!this.transactionSigned)throw new Error("Transaction has not be been signed. Use the sign() method first.");const e=Buffer.from(this.sortedPayload.json),t=new Uint8Array(e);return Ds(this.sender,t,this.signature)}sign(e,t){const r=Buffer.from(this.sortedPayload.json),n=new Uint8Array(r);this.signature=t?t.sign(n):Ps(e,n),this.transactionSigned=!0}sortObject(e){const t=(e=>{const t=e=>Object.prototype.toString.call(e),r=e=>"[object Object]"===t(e),n=e=>(Object.keys(e).forEach((i=>{var o;o=e[i],"[object Array]"===t(o)&&(e[i]=e[i].map((e=>r(e)?n(e):e))),r(e[i])&&(e[i]=n(e[i]))})),(e=>{const t={};return Object.keys(e).sort().forEach((r=>t[r]=e[r])),t})(e));if(!r(e))throw new TypeError("Not a valid Object");try{e=JSON.parse(JSON.stringify(e))}catch(e){throw new TypeError("Not a valid JSON Object")}return n(e)})(e);return{orderedObj:t,json:JSON.stringify(t)}}async getNonce(e){let t=(new Date).toUTCString();if(this.nonceResult=await this.API.getNonce(this.sender),void 0===this.nonceResult.nonce)throw new Error(this.nonceResult);return this.nonceResult.timestamp=t,this.nonce=this.nonceResult.nonce,this.processor=this.nonceResult.processor,this.nonceMasternode=this.nonceResult.masternode,this.makePayload(),e?e(this.nonceResult):this.nonceResult}async send(e,t,r){if(!Zs.isStringWithValue(e)&&!this.transactionSigned)throw new Error("Transation Not Signed: Private key needed or call sign() first");let n=(new Date).toUTCString();try{!isNaN(this.nonce)&&Zs.isStringWithValue(this.processor)||await this.getNonce(),Zs.isStringWithValue(e)&&this.sign(e),this.makeTransaction();let t=r;!t&&this.nonceMasternode&&(t=this.nonceMasternode);let n=await this.API.sendTransaction(this.tx,t);!n||Zs.isStringWithValue(n)?this.txSendResult.errors=[n||"Unknown Transaction Error"]:n.error?this.txSendResult.errors=[n.error]:this.txSendResult=n}catch(e){this.txSendResult.errors=[e.message]}return this.txSendResult.timestamp=n,this.handleMasterNodeResponse(this.txSendResult,t)}checkForTransactionResult(e){return new Promise((t=>{let r=setTimeout(async function n(){this.txCheckAttempts=this.txCheckAttempts+1;let i=await this.API.checkTransaction(this.txHash),o=!1,a=(new Date).toUTCString();"string"!=typeof i&&i?i.error?"Transaction not found."===i.error?this.txCheckAttempts0&&(Zs.isArray(this.txCheckResult.errors)||(this.txCheckResult.errors=[]),this.txCheckResult.errors.push("This transaction returned a non-zero status code")),this.txCheckResult.timestamp=a,clearTimeout(r),t(this.handleMasterNodeResponse(this.txCheckResult,e)))}.bind(this),1e3)}))}handleMasterNodeResponse(e,t){return Zs.isStringWithValue(e.hash)&&Zs.isStringWithValue(e.success)?(this.txHash=e.hash,this.setPendingBlockInfo()):(this.setBlockResultInfo(e),this.txBlockResult=e),this.events.emit("response",e,this.resultInfo.subtitle),Zs.isFunction(t)&&t(e),e}setPendingBlockInfo(){return this.resultInfo={title:"Transaction Pending",subtitle:"Your transaction was submitted and is being processed",message:`Tx Hash: ${this.txHash}`,type:"success"},this.resultInfo}setBlockResultInfo(e){let t=!1,r="returned an error and ",n=Zs.isNumber(e.status)?e.status:void 0,i=e.stampsUsed||e.stamps_used||0,o="";return Zs.isArrayWithValues(e.errors)&&(t=!0,o=`This transaction returned ${e.errors.length} errors.`,e.result&&e.result.includes("AssertionError")&&e.errors.push(e.result)),n&&t&&(r=`returned status code ${n} and `),this.resultInfo={title:"Transaction "+(t?"Failed":"Successful"),subtitle:`Your transaction ${t?`${r} `:""}used ${i} stamps`,message:o,type:""+(t?"error":"success"),errorInfo:t?e.errors:void 0,returnResult:e.result||"",stampsUsed:i,statusCode:n},this.resultInfo}getResultInfo(){return this.resultInfo}getTxInfo(){return{senderVk:this.sender,contractName:this.contract,methodName:this.method,kwargs:this.kwargs,stampLimit:this.stampLimit}}getAllInfo(){return{uid:this.uid,txHash:this.txHash,signed:this.transactionSigned,tx:this.tx,signature:this.signature,networkInfo:this.getNetworkInfo(),txInfo:this.getTxInfo(),txSendResult:this.txSendResult,txBlockResult:this.txBlockResult,resultInfo:this.getResultInfo(),nonceResult:this.nonceResult}}}const{validateTypes:eu}=o;const{validateTypes:tu,assertTypes:ru}=o;globalThis.Buffer=Ne.Buffer;var nu={TransactionBuilder:Qs,TransactionBatcher:class extends Xs{constructor(e){eu.isSpecificClass(e,"Network")?super(e.getNetworkInfo()):super(e),this.txBatches={},this.overflow=[],this.nonceResults={},this.running=!1}addTransaction(e){this.running?this.overflow.push(e):(this.validateTransactionInfo(e),this.txBatches[e.senderVk]||(this.txBatches[e.senderVk]=[]),this.txBatches[e.senderVk].push(e))}addTransactionList(e){e.forEach((e=>this.addTransaction(e)))}processOverflow(){const e=this.overflow;this.overflow=[],e.forEach((e=>this.addTransaction(e)))}hasTransactions(){let e=Object.keys(this.txBatches).map((e=>this.txBatches[e].length));return e.filter((e=>0===e)),e.length>0}validateTransactionInfo(e){try{new Qs(e)}catch(e){return!1}return!0}async getStartingNonce(e,t){let r=(new Date).toUTCString(),n=await this.API.getNonce(e);if(void 0===n.nonce)throw new Error(n);return n.timestamp=r,this.nonceResults[e]=n,t&&t(n),n}async sendAllBatches(e){if(this.running)return;let t=[];this.running=!0,await Promise.all(Object.keys(this.txBatches).map((r=>{const n=this.txBatches[r].splice(0,15);return n.length<=15&&delete this.txBatches[r],new Promise((async i=>{if(0===n.length&&i(),!e[r])throw new Error(`Cannot sign batch for ${r}. No signing key provided.`);let o=await this.getStartingNonce(r),a=this.setBatchNonces(o,n);this.signBatch(a,e[r]),this.sendBatch(a).then((e=>{t=[...t,...e],i()}))}))})));try{return Promise.all(t)}catch(e){}finally{this.running=!1,this.processOverflow()}}setBatchNonces(e,t){return t.map(((t,r)=>(t.nonce=e.nonce+r,t.processor=e.processor,new Qs({hosts:[e.masternode]},t)))).sort(((e,t)=>e.nonce-t.nonce))}signBatch(e,t){e.forEach((e=>e.sign(t)))}sendBatch(e){let t=[];return new Promise((r=>{e.forEach(((n,i)=>{setTimeout((()=>{t[i]=n.send().then((()=>n)),(n=>{n+1===e.length&&r(t)})(i)}),1200*i)}))}))}},Masternode_API:Gs,Network:Xs,wallet:zs,Keystore:class{constructor(e){this.KEYSTORE_VERSION="1.0",this.password=null,this.encryptedData=null,this.keyList=(()=>{let e=[],t=this,r=[];const n=t=>{e.push(t),i()},i=()=>{r=[],e.forEach((e=>{let t=Ls({sk:e.sk,keepPrivate:!0});t={...t,...e},delete t.sk,r.push(t)}))};return{getWallets:()=>r,getWallet:e=>r.find((t=>t.vk===e)),addKey:n,clearKeys:()=>{e=[],i()},numOfKeys:()=>e.length,deleteKey:t=>{e.splice(t,1),i()},createKeystore:(r,n)=>JSON.stringify({data:x(r,{version:t.KEYSTORE_VERSION,keyList:e}),w:n?A("n1ahcKc0lb",n):""}),decryptKeystore:(e,r)=>{let i=R(e,r);if(!i)throw new Error("Incorrect Keystore Password.");ru.isArray(i.keyList),i.keyList.forEach((e=>ru.isStringWithValue(e.sk))),i.keyList.forEach((e=>n(e))),t.version=i.version}}})(),e&&(e.key&&this.addKey(e.key),e.keyList&&this.addKeys(e.keyList),e.keystoreData&&this.addKeystoreData(e.keystoreData))}addKeys(e){ru.isArray(e),e.forEach((e=>this.addKey(e)))}addKey(e){ru.isObjectWithKeys(e),ru.isStringWithValue(e.sk),tu.isStringWithValue(e.vk)&&delete e.vk,this.keyList.addKey(e)}addKeystoreData(e){tu.isString(e)&&(e=JSON.parse(e)),this.validateKeyStore(e)&&(this.encryptedData=e)}getPasswordHint(e){if(!this.encryptedData&&!e)throw new Error("No keystore data found.");return e?tu.isString(e)&&(e=JSON.parse(e)):e=this.encryptedData,e.w?T("n1ahcKc0lb",e.w):""}deleteKey(e){if(ru.isInteger(e),0!==this.keyList.numOfKeys()){if(e<0||e>=this.keyList.numOfKeys())throw new Error("Key index out of range.");this.keyList.deleteKey(e)}}clearKeys(){this.keyList.clearKeys()}get wallets(){return this.keyList.getWallets()}getWallet(e){return this.keyList.getWallet(e)}validateKeyStore(e){ru.isObjectWithKeys(e);try{let t=JSON.parse(e.data);if(!t.ct||!t.iv||!t.s)throw new Error("This is not a valid keystore file.")}catch(e){throw new Error("This is not a valid keystore file.")}return!0}createKeystore(e,t){return ru.isStringWithValue(e),t&&ru.isStringWithValue(t),this.keyList.createKeystore(e,t)}decryptKeystore(e,t){if(t&&this.addKeystoreData(t),!this.encryptedData)throw new Error("No keystoreData to decrypt.");try{this.keyList.decryptKeystore(e,this.encryptedData.data)}catch(e){throw new Error("Incorrect Keystore Password.")}}},Encoder:$s,utils:L};export{nu as default}; diff --git a/package.json b/package.json index e1301e2..8ea492c 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,10 @@ "main": "dist/cjs/lamden.js", "module": "dist/esm/lamden.js", "scripts": { - "test": "npm run build && mocha --recursive --timeout 10000", + "test": "npm run build && mocha --recursive --timeout 30000", "tests": "npm run test", - "test-network": "npm run build && mocha test/network-test.js", - "test-masternode-api": "npm run build && mocha test/masternode_api-test.js", + "test-network": "npm run build && mocha test/network-test.js --timeout 10000", + "test-masternode-api": "npm run build && mocha test/masternode_api-test.js --timeout 10000", "test-transaction-builder": "npm run build && mocha test/transactionBuilder-test.js --timeout 10000", "test-transaction-batcher": "npm run build && mocha test/transactionBatcher-test.js --timeout 60000", "test-wallet": "npm run build && mocha test/wallet-test.js", diff --git a/src/js/wallet.js b/src/js/wallet.js index f737c07..7dbe6ab 100644 --- a/src/js/wallet.js +++ b/src/js/wallet.js @@ -121,7 +121,7 @@ export function new_wallet(seed = null) { /** * - * @param mnemonic 24 word seed phrase + * @param seed Bip39 seed phrase (128 characters in hex) * @param derivationIndex bip32 derivation key index * @returns {{derivationIndex: number, vk: string, sk: string, mnemonic: string}} * derivationIndex: bip32 derivation key index @@ -165,7 +165,7 @@ function generate_keys_bip39(seed = undefined, derivationIndex = 0) { } /** - * @param mnemonic 24 word seed phrase + * @param seed Bip39 seed phrase (128 characters in hex) * @param derivationIndex bip32 derivation key index * * @return {{derivationIndex: number, vk: string, sk: string, mnemonic: (string|undefined)}} { sk, vk, derivationIndex, mnemonic } diff --git a/test/browsers/wallet-test.js b/test/browsers/wallet-test.js index d6d724f..50c216a 100644 --- a/test/browsers/wallet-test.js +++ b/test/browsers/wallet-test.js @@ -49,22 +49,18 @@ describe("Browsers Tests: Test Lamden Wallet methods", async () => { expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); expect(newWallet.derivationIndex).to.be(0); }), - it("creates a bip39 / bip32 compatible lamden keypair from mnemonic", async () => { - const mnemonic = - "ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort"; + it("creates a bip39 / bip32 compatible lamden keypair from seed", async () => { + const seed = 'd3ad26bd89d54d0c22bb32d34ea9f06c567ba060d8e1518974d807180b886c643bfb7f455bd3db2c767a17c089aab20db97cf0f0184d730b9d20be0c7b6cc6cc' const derivationIndex = 127; - let newWallet = await driver.executeScript(`return Lamden.wallet.new_wallet_bip39('${mnemonic}', ${derivationIndex})`); + let newWallet = await driver.executeScript(`return Lamden.wallet.new_wallet_bip39('${seed}', ${derivationIndex})`); expect(validateTypes.isStringHex(newWallet.vk)).to.be(true); - expect(newWallet.vk).to.be( - "d0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607" - ); + expect(newWallet.vk).to.be("d0d2de909bf7c2be3bafbcb3af0b1c50487b80ba48b5700bff35bb927921c607"); expect(validateTypes.isStringHex(newWallet.sk)).to.be(true); - expect(newWallet.sk).to.be( - "86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8" - ); - expect(newWallet.mnemonic).to.be(mnemonic); + expect(newWallet.sk).to.be("86c77748edc039c672cf761d2db1e52d6255b16cd4d626d4b66c67eb224287a8"); + expect(newWallet.mnemonic).to.be(null); + expect(newWallet.seed).to.be( null ) expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); expect(newWallet.derivationIndex).to.be(127); }); diff --git a/test/transactionBuilder-test.js b/test/transactionBuilder-test.js index 9182ac7..3f02053 100644 --- a/test/transactionBuilder-test.js +++ b/test/transactionBuilder-test.js @@ -265,7 +265,7 @@ describe("Test TransactionBuilder class", () => { expect(resultInfo.type).to.equal("success"); }); it("Sends transactions and can get hash result from masternode", async function () { - this.timeout(20000); + this.timeout(30000); await newTx1.checkForTransactionResult(); let txBlockResult = newTx1.txBlockResult; expect(txBlockResult.hash).to.equal(newTx1.txSendResult.hash); diff --git a/test/wallet-test.js b/test/wallet-test.js index 985d631..bf43194 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -17,23 +17,6 @@ describe("Test Lamden Wallet methods", () => { expect(validateTypes.isNumber(newWallet.derivationIndex)).to.be(true); expect(newWallet.derivationIndex).to.be(0); }), - it("creates a bip39 / bip32 compatible lamden keypair from mnemonic", () => { - const mnemonic = - "ripple junk access broom element fitness side example ramp flush model creek nest face rent jacket ahead come short find over family wise comfort"; - const derivationIndex = 127; - let newWallet = wallet.new_wallet_bip39(mnemonic, derivationIndex); - - expect( validateTypes.isStringHex(newWallet.vk) ).to.be( true ) - expect( newWallet.vk.length ).to.be( 64 ) - expect( validateTypes.isStringHex(newWallet.sk) ).to.be( true ) - expect( newWallet.sk.length ).to.be( 64 ) - expect( validateTypes.isStringWithValue(newWallet.mnemonic) ).to.be( true ) - expect( validateTypes.isNumber(newWallet.derivationIndex) ).to.be( true ) - expect( newWallet.derivationIndex ).to.be( 0 ) - expect( validateTypes.isStringHex(newWallet.seed) ).to.be( true ) - expect( newWallet.seed.length ).to.be( 128 ) - }), - it('creates a bip39 / bip32 compatible lamden keypair from seed', () => { const seed = 'd3ad26bd89d54d0c22bb32d34ea9f06c567ba060d8e1518974d807180b886c643bfb7f455bd3db2c767a17c089aab20db97cf0f0184d730b9d20be0c7b6cc6cc' const derivationIndex = 127