{"version":3,"file":"ethers.umd.js","sources":["../../../node_modules/bn.js/lib/bn.js","../../logger/src.ts/_version.ts","../../logger/src.ts/index.ts","../../bytes/src.ts/_version.ts","../../bytes/src.ts/index.ts","../../bignumber/src.ts/_version.ts","../../bignumber/src.ts/bignumber.ts","../../bignumber/src.ts/fixednumber.ts","../../bignumber/src.ts/index.ts","../../properties/src.ts/_version.ts","../../properties/src.ts/index.ts","../../abi/src.ts/_version.ts","../../abi/src.ts/fragments.ts","../../abi/src.ts/coders/abstract-coder.ts","../../../node_modules/js-sha3/src/sha3.js","../../keccak256/src.ts/index.ts","../../rlp/src.ts/_version.ts","../../rlp/src.ts/index.ts","../../address/src.ts/_version.ts","../../address/src.ts/index.ts","../../abi/src.ts/coders/address.ts","../../abi/src.ts/coders/anonymous.ts","../../abi/src.ts/coders/array.ts","../../abi/src.ts/coders/boolean.ts","../../abi/src.ts/coders/bytes.ts","../../abi/src.ts/coders/fixed-bytes.ts","../../abi/src.ts/coders/null.ts","../../constants/src.ts/addresses.ts","../../constants/src.ts/bignumbers.ts","../../constants/src.ts/hashes.ts","../../constants/src.ts/strings.ts","../../constants/src.ts/index.ts","../../abi/src.ts/coders/number.ts","../../strings/src.ts/_version.ts","../../strings/src.ts/utf8.ts","../../strings/src.ts/bytes32.ts","../../strings/src.ts/idna.ts","../../strings/src.ts/index.ts","../../abi/src.ts/coders/string.ts","../../abi/src.ts/coders/tuple.ts","../../abi/src.ts/abi-coder.ts","../../hash/src.ts/id.ts","../../hash/src.ts/_version.ts","../../hash/src.ts/namehash.ts","../../hash/src.ts/message.ts","../../hash/src.ts/typed-data.ts","../../hash/src.ts/index.ts","../../abi/src.ts/interface.ts","../../abi/src.ts/index.ts","../../abstract-provider/src.ts/_version.ts","../../abstract-provider/src.ts/index.ts","../../abstract-signer/src.ts/_version.ts","../../abstract-signer/src.ts/index.ts","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../signing-key/src.ts/elliptic.ts","../../signing-key/src.ts/_version.ts","../../signing-key/src.ts/index.ts","../../transactions/src.ts/_version.ts","../../transactions/src.ts/index.ts","../../contracts/src.ts/_version.ts","../../contracts/src.ts/index.ts","../../basex/src.ts/index.ts","../../sha2/src.ts/types.ts","../../sha2/src.ts/_version.ts","../../sha2/src.ts/browser-sha2.ts","../../sha2/src.ts/index.ts","../../pbkdf2/src.ts/browser-pbkdf2.ts","../../pbkdf2/src.ts/index.ts","../../wordlists/src.ts/_version.ts","../../wordlists/src.ts/wordlist.ts","../../wordlists/src.ts/lang-cz.ts","../../wordlists/src.ts/lang-en.ts","../../wordlists/src.ts/lang-es.ts","../../wordlists/src.ts/lang-fr.ts","../../wordlists/src.ts/lang-ja.ts","../../wordlists/src.ts/lang-ko.ts","../../wordlists/src.ts/lang-it.ts","../../wordlists/src.ts/lang-zh.ts","../../wordlists/src.ts/wordlists.ts","../../wordlists/src.ts/index.ts","../../hdnode/src.ts/_version.ts","../../hdnode/src.ts/index.ts","../../random/src.ts/_version.ts","../../random/src.ts/browser-random.ts","../../random/src.ts/shuffle.ts","../../random/src.ts/index.ts","../../../node_modules/aes-js/index.js","../../json-wallets/src.ts/_version.ts","../../json-wallets/src.ts/utils.ts","../../json-wallets/src.ts/crowdsale.ts","../../json-wallets/src.ts/inspect.ts","../../../node_modules/scrypt-js/scrypt.js","../../json-wallets/src.ts/keystore.ts","../../json-wallets/src.ts/index.ts","../../wallet/src.ts/_version.ts","../../wallet/src.ts/index.ts","../../networks/src.ts/_version.ts","../../networks/src.ts/index.ts","../../base64/src.ts/browser-base64.ts","../../base64/src.ts/index.ts","../../web/src.ts/_version.ts","../../web/src.ts/browser-geturl.ts","../../web/src.ts/index.ts","../../../node_modules/bech32/index.js","../../providers/src.ts/_version.ts","../../providers/src.ts/formatter.ts","../../providers/src.ts/base-provider.ts","../../providers/src.ts/json-rpc-provider.ts","../../providers/src.ts/browser-ws.ts","../../providers/src.ts/websocket-provider.ts","../../providers/src.ts/url-json-rpc-provider.ts","../../providers/src.ts/alchemy-provider.ts","../../providers/src.ts/cloudflare-provider.ts","../../providers/src.ts/etherscan-provider.ts","../../providers/src.ts/fallback-provider.ts","../../providers/src.ts/browser-ipc-provider.ts","../../providers/src.ts/infura-provider.ts","../../providers/src.ts/json-rpc-batch-provider.ts","../../providers/src.ts/nodesmith-provider.ts","../../providers/src.ts/pocket-provider.ts","../../providers/src.ts/web3-provider.ts","../../providers/src.ts/index.ts","../../solidity/src.ts/index.ts","../../units/src.ts/_version.ts","../../units/src.ts/index.ts","../src.ts/utils.ts","../src.ts/_version.ts","../src.ts/ethers.ts","../src.ts/index.ts"],"sourcesContent":["(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n      Buffer = window.Buffer;\n    } else {\n      Buffer = require('buffer').Buffer;\n    }\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n      this.negative = 1;\n    }\n\n    if (start < number.length) {\n      if (base === 16) {\n        this._parseHex(number, start, endian);\n      } else {\n        this._parseBase(number, base, start);\n        if (endian === 'le') {\n          this._initArray(this.toArray(), base, endian);\n        }\n      }\n    }\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex4Bits (string, index) {\n    var c = string.charCodeAt(index);\n    // 'A' - 'F'\n    if (c >= 65 && c <= 70) {\n      return c - 55;\n    // 'a' - 'f'\n    } else if (c >= 97 && c <= 102) {\n      return c - 87;\n    // '0' - '9'\n    } else {\n      return (c - 48) & 0xf;\n    }\n  }\n\n  function parseHexByte (string, lowerBound, index) {\n    var r = parseHex4Bits(string, index);\n    if (index - 1 >= lowerBound) {\n      r |= parseHex4Bits(string, index - 1) << 4;\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start, endian) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    // 24-bits chunks\n    var off = 0;\n    var j = 0;\n\n    var w;\n    if (endian === 'be') {\n      for (i = number.length - 1; i >= start; i -= 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    } else {\n      var parseLength = number.length - start;\n      for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n        w = parseHexByte(number, start, i) << off;\n        this.words[j] |= w & 0x3ffffff;\n        if (off >= 18) {\n          off -= 18;\n          j += 1;\n          this.words[j] |= w >>> 26;\n        } else {\n          off += 8;\n        }\n      }\n    }\n\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    this.strip();\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      if (r.strip !== undefined) {\n        // r is BN v4 instance\n        r.strip();\n      } else {\n        // r is BN v5 instance\n        r._strip();\n      }\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"logger/5.4.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n    try {\n        const missing: Array<string> = [ ];\n\n        // Make sure all forms of normalization are supported\n        [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n            try {\n                if (\"test\".normalize(form) !== \"test\") {\n                    throw new Error(\"bad normalize\");\n                };\n            } catch(error) {\n                missing.push(form);\n            }\n        });\n\n        if (missing.length) {\n            throw new Error(\"missing \" + missing.join(\", \"));\n        }\n\n        if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n            throw new Error(\"broken implementation\")\n        }\n    } catch (error) {\n        return error.message;\n    }\n\n    return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n    DEBUG    = \"DEBUG\",\n    INFO     = \"INFO\",\n    WARNING  = \"WARNING\",\n    ERROR    = \"ERROR\",\n    OFF      = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n    ///////////////////\n    // Generic Errors\n\n    // Unknown Error\n    UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n    // Not Implemented\n    NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n    // Unsupported Operation\n    //   - operation\n    UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n    // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n    //   - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n    NETWORK_ERROR = \"NETWORK_ERROR\",\n\n    // Some sort of bad response from the server\n    SERVER_ERROR = \"SERVER_ERROR\",\n\n    // Timeout\n    TIMEOUT = \"TIMEOUT\",\n\n    ///////////////////\n    // Operational  Errors\n\n    // Buffer Overrun\n    BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n    // Numeric Fault\n    //   - operation: the operation being executed\n    //   - fault: the reason this faulted\n    NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n    ///////////////////\n    // Argument Errors\n\n    // Missing new operator to an object\n    //  - name: The name of the class\n    MISSING_NEW = \"MISSING_NEW\",\n\n    // Invalid argument (e.g. value is incompatible with type) to a function:\n    //   - argument: The argument name that was invalid\n    //   - value: The value of the argument\n    INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n    // Missing argument to a function:\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n    // Too many arguments\n    //   - count: The number of arguments received\n    //   - expectedCount: The number of arguments expected\n    UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n    ///////////////////\n    // Blockchain Errors\n\n    // Call exception\n    //  - transaction: the transaction\n    //  - address?: the contract address\n    //  - args?: The arguments passed into the function\n    //  - method?: The Solidity method signature\n    //  - errorSignature?: The EIP848 error signature\n    //  - errorArgs?: The EIP848 error parameters\n    //  - reason: The reason (only for EIP848 \"Error(string)\")\n    CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n    // Insufficien funds (< value + gasLimit * gasPrice)\n    //   - transaction: the transaction attempted\n    INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n    // Nonce has already been used\n    //   - transaction: the transaction attempted\n    NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n    // The replacement fee for the transaction is too low\n    //   - transaction: the transaction attempted\n    REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n    // The gas limit could not be estimated\n    //   - transaction: the transaction passed to estimateGas\n    UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n    // The transaction was replaced by one with a higher gas price\n    //   - reason: \"cancelled\", \"replaced\" or \"repriced\"\n    //   - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n    //   - hash: original transaction hash\n    //   - replacement: the full TransactionsResponse for the replacement\n    //   - receipt: the receipt of the replacement\n    TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n};\n\nexport class Logger {\n    readonly version: string;\n\n    static errors = ErrorCode;\n\n    static levels = LogLevel;\n\n    constructor(version: string) {\n        Object.defineProperty(this, \"version\", {\n            enumerable: true,\n            value: version,\n            writable: false\n        });\n    }\n\n    _log(logLevel: LogLevel, args: Array<any>): void {\n        const level = logLevel.toLowerCase();\n        if (LogLevels[level] == null) {\n            this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n        }\n        if (_logLevel > LogLevels[level]) { return; }\n        console.log.apply(console, args);\n    }\n\n    debug(...args: Array<any>): void {\n        this._log(Logger.levels.DEBUG, args);\n    }\n\n    info(...args: Array<any>): void {\n        this._log(Logger.levels.INFO, args);\n    }\n\n    warn(...args: Array<any>): void {\n        this._log(Logger.levels.WARNING, args);\n    }\n\n    makeError(message: string, code?: ErrorCode, params?: any): Error {\n        // Errors are being censored\n        if (_censorErrors) {\n            return this.makeError(\"censored error\", code, { });\n        }\n\n        if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n        if (!params) { params = {}; }\n\n        const messageDetails: Array<string> = [];\n        Object.keys(params).forEach((key) => {\n            try {\n                messageDetails.push(key + \"=\" + JSON.stringify(params[key]));\n            } catch (error) {\n                messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n            }\n        });\n        messageDetails.push(`code=${ code }`);\n        messageDetails.push(`version=${ this.version }`);\n\n        const reason = message;\n        if (messageDetails.length) {\n            message += \" (\" + messageDetails.join(\", \") + \")\";\n        }\n\n        // @TODO: Any??\n        const error: any = new Error(message);\n        error.reason = reason;\n        error.code = code\n\n        Object.keys(params).forEach(function(key) {\n            error[key] = params[key];\n        });\n\n        return error;\n    }\n\n    throwError(message: string, code?: ErrorCode, params?: any): never {\n        throw this.makeError(message, code, params);\n    }\n\n    throwArgumentError(message: string, name: string, value: any): never {\n        return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n            argument: name,\n            value: value\n        });\n    }\n\n    assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n        if (!!condition) { return; }\n        this.throwError(message, code, params);\n    }\n\n    assertArgument(condition: any, message: string, name: string, value: any): void {\n        if (!!condition) { return; }\n        this.throwArgumentError(message, name, value);\n    }\n\n    checkNormalize(message?: string): void {\n        if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n        if (_normalizeError) {\n            this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"String.prototype.normalize\", form: _normalizeError\n            });\n        }\n    }\n\n    checkSafeUint53(value: number, message?: string): void {\n        if (typeof(value) !== \"number\") { return; }\n\n        if (message == null) { message = \"value not safe\"; }\n\n        if (value < 0 || value >= 0x1fffffffffffff) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"out-of-safe-range\",\n                value: value\n            });\n        }\n\n        if (value % 1) {\n            this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n                operation: \"checkSafeInteger\",\n                fault: \"non-integer\",\n                value: value\n            });\n        }\n    }\n\n    checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n        if (message) {\n            message = \": \" + message;\n        } else {\n            message = \"\";\n        }\n\n        if (count < expectedCount) {\n            this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n\n        if (count > expectedCount) {\n            this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n                count: count,\n                expectedCount: expectedCount\n            });\n        }\n    }\n\n    checkNew(target: any, kind: any): void {\n        if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n\n    checkAbstract(target: any, kind: any): void {\n        if (target === kind) {\n            this.throwError(\n                \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n                Logger.errors.UNSUPPORTED_OPERATION,\n                { name: target.name, operation: \"new\" }\n            );\n        } else if (target === Object || target == null) {\n            this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n        }\n    }\n\n    static globalLogger(): Logger {\n        if (!_globalLogger) { _globalLogger = new Logger(version); }\n        return _globalLogger;\n    }\n\n    static setCensorship(censorship: boolean, permanent?: boolean): void {\n        if (!censorship && permanent) {\n            this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n\n        if (_permanentCensorErrors) {\n            if (!censorship) { return; }\n            this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"setCensorship\"\n            });\n        }\n\n        _censorErrors = !!censorship;\n        _permanentCensorErrors = !!permanent;\n    }\n\n    static setLogLevel(logLevel: LogLevel): void {\n        const level = LogLevels[logLevel.toLowerCase()];\n        if (level == null) {\n            Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n            return;\n        }\n        _logLevel = level;\n    }\n\n    static from(version: string): Logger {\n        return new Logger(version);\n    }\n}\n","export const version = \"bytes/5.4.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n    allowMissingPrefix?: boolean;\n    hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n    toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n    length: number;\n    substring: (start: number, end?: number) => string;\n\n    [index: number]: string;\n}\n*/\n\nexport type SignatureLike  = {\n    r: string;\n    s?: string;\n    _vs?: string,\n    recoveryParam?: number;\n    v?: number;\n} | BytesLike;\n\nexport interface Signature {\n    r: string;\n\n    s: string;\n    _vs: string,\n\n    recoveryParam: number;\n    v: number;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n    return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n    if (array.slice) { return array; }\n\n    array.slice = function() {\n        const args = Array.prototype.slice.call(arguments);\n        return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n    }\n\n    return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n    return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nexport function isBytes(value: any): value is Bytes {\n    if (value == null) { return false; }\n\n    if (value.constructor === Uint8Array) { return true; }\n    if (typeof(value) === \"string\") { return false; }\n    if (value.length == null) { return false; }\n\n    for (let i = 0; i < value.length; i++) {\n        const v = value[i];\n        if (typeof(v) !== \"number\" || v < 0 || v >= 256 || (v % 1)) {\n            return false;\n        }\n    }\n    return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n    if (!options) { options = { }; }\n\n    if (typeof(value) === \"number\") {\n        logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n        const result = [];\n        while (value) {\n            result.unshift(value & 0xff);\n            value = parseInt(String(value / 256));\n        }\n        if (result.length === 0) { result.push(0); }\n\n        return addSlice(new Uint8Array(result));\n    }\n\n    if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n         value = \"0x\" + value;\n    }\n\n    if (isHexable(value)) { value = value.toHexString(); }\n\n    if (isHexString(value)) {\n        let hex = (<string>value).substring(2);\n        if (hex.length % 2) {\n            if (options.hexPad === \"left\") {\n                hex = \"0x0\" + hex.substring(2);\n            } else if (options.hexPad === \"right\") {\n                hex += \"0\";\n            } else {\n                logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n            }\n        }\n\n        const result = [];\n        for (let i = 0; i < hex.length; i += 2) {\n            result.push(parseInt(hex.substring(i, i + 2), 16));\n        }\n\n        return addSlice(new Uint8Array(result));\n    }\n\n    if (isBytes(value)) {\n        return addSlice(new Uint8Array(value));\n    }\n\n    return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n    const objects = items.map(item => arrayify(item));\n    const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n    const result = new Uint8Array(length);\n\n    objects.reduce((offset, object) => {\n        result.set(object, offset);\n        return offset + object.length;\n    }, 0);\n\n    return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n    let result: Uint8Array = arrayify(value);\n\n    if (result.length === 0) { return result; }\n\n    // Find the first non-zero entry\n    let start = 0;\n    while (start < result.length && result[start] === 0) { start++ }\n\n    // If we started with zeros, strip them\n    if (start) {\n        result = result.slice(start);\n    }\n\n    return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n    value = arrayify(value);\n\n    if (value.length > length) {\n        logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n    }\n\n    const result = new Uint8Array(length);\n    result.set(value, length - value.length);\n    return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n    if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n        return false\n    }\n    if (length && value.length !== 2 + 2 * length) { return false; }\n    return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n    if (!options) { options = { }; }\n\n    if (typeof(value) === \"number\") {\n        logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n        let hex = \"\";\n        while (value) {\n            hex = HexCharacters[value & 0xf] + hex;\n            value = Math.floor(value / 16);\n        }\n\n        if (hex.length) {\n            if (hex.length % 2) { hex = \"0\" + hex; }\n            return \"0x\" + hex;\n        }\n\n        return \"0x00\";\n    }\n\n    if (typeof(value) === \"bigint\") {\n        value = value.toString(16);\n        if (value.length % 2) { return (\"0x0\" + value); }\n        return \"0x\" + value;\n    }\n\n    if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n         value = \"0x\" + value;\n    }\n\n    if (isHexable(value)) { return value.toHexString(); }\n\n    if (isHexString(value)) {\n        if ((<string>value).length % 2) {\n            if (options.hexPad === \"left\") {\n                value = \"0x0\" + (<string>value).substring(2);\n            } else if (options.hexPad === \"right\") {\n                value += \"0\";\n            } else {\n                logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n            }\n        }\n        return (<string>value).toLowerCase();\n    }\n\n    if (isBytes(value)) {\n        let result = \"0x\";\n        for (let i = 0; i < value.length; i++) {\n             let v = value[i];\n             result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n        }\n        return result;\n    }\n\n    return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n    if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n        return \"0x0\" + value.substring(2);\n    }\n    return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n    if (typeof(data) !== \"string\") {\n        data = hexlify(data);\n    } else if (!isHexString(data) || (data.length % 2)) {\n        return null;\n    }\n\n    return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n    if (typeof(data) !== \"string\") {\n        data = hexlify(data);\n    } else if (!isHexString(data) || (data.length % 2)) {\n        logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n    }\n\n    offset = 2 + 2 * offset;\n\n    if (endOffset != null) {\n        return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n    }\n\n    return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n    let result = \"0x\";\n    items.forEach((item) => {\n        result += hexlify(item).substring(2);\n    });\n    return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n    const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n    if (trimmed === \"0x\") { return \"0x0\"; }\n    return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n    if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n    if (!isHexString(value)) {\n        logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n    }\n    value = value.substring(2);\n    let offset = 0;\n    while (offset < value.length && value[offset] === \"0\") { offset++; }\n    return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n    if (typeof(value) !== \"string\") {\n        value = hexlify(value);\n    } else if (!isHexString(value)) {\n        logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n    }\n\n    if (value.length > 2 * length + 2) {\n        logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n    }\n\n    while (value.length < 2 * length + 2) {\n        value = \"0x0\" + value.substring(2);\n    }\n\n    return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n    const result = {\n        r: \"0x\",\n        s: \"0x\",\n        _vs: \"0x\",\n        recoveryParam: 0,\n        v: 0\n    };\n\n    if (isBytesLike(signature)) {\n        const bytes: Uint8Array = arrayify(signature);\n        if (bytes.length !== 65) {\n            logger.throwArgumentError(\"invalid signature string; must be 65 bytes\", \"signature\", signature);\n        }\n\n        // Get the r, s and v\n        result.r = hexlify(bytes.slice(0, 32));\n        result.s = hexlify(bytes.slice(32, 64));\n        result.v = bytes[64];\n\n        // Allow a recid to be used as the v\n        if (result.v < 27) {\n            if (result.v === 0 || result.v === 1) {\n                result.v += 27;\n            } else {\n                logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n            }\n        }\n\n        // Compute recoveryParam from v\n        result.recoveryParam = 1 - (result.v % 2);\n\n        // Compute _vs from recoveryParam and s\n        if (result.recoveryParam) { bytes[32] |= 0x80; }\n        result._vs = hexlify(bytes.slice(32, 64))\n\n    } else {\n        result.r = signature.r;\n        result.s = signature.s;\n        result.v = signature.v;\n        result.recoveryParam = signature.recoveryParam;\n        result._vs = signature._vs;\n\n        // If the _vs is available, use it to populate missing s, v and recoveryParam\n        // and verify non-missing s, v and recoveryParam\n        if (result._vs != null) {\n            const vs = zeroPad(arrayify(result._vs), 32);\n            result._vs = hexlify(vs);\n\n            // Set or check the recid\n            const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n            if (result.recoveryParam == null) {\n                result.recoveryParam = recoveryParam;\n            } else if (result.recoveryParam !== recoveryParam) {\n                logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n            }\n\n            // Set or check the s\n            vs[0] &= 0x7f;\n            const s = hexlify(vs);\n            if (result.s == null) {\n                result.s = s;\n            } else if (result.s !== s) {\n                logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n            }\n        }\n\n        // Use recid and v to populate each other\n        if (result.recoveryParam == null) {\n            if (result.v == null) {\n                logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n            } else if (result.v === 0 || result.v === 1) {\n                result.recoveryParam = result.v;\n            } else {\n                result.recoveryParam = 1 - (result.v % 2);\n            }\n        } else {\n            if (result.v == null) {\n                result.v = 27 + result.recoveryParam;\n            } else if (result.recoveryParam !== (1 - (result.v % 2))) {\n                logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n            }\n        }\n\n        if (result.r == null || !isHexString(result.r)) {\n            logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n        } else {\n            result.r = hexZeroPad(result.r, 32);\n        }\n\n        if (result.s == null || !isHexString(result.s)) {\n            logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n        } else {\n            result.s = hexZeroPad(result.s, 32);\n        }\n\n        const vs = arrayify(result.s);\n        if (vs[0] >= 128) {\n            logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n        }\n        if (result.recoveryParam) { vs[0] |= 0x80; }\n        const _vs = hexlify(vs);\n\n        if (result._vs) {\n            if (!isHexString(result._vs)) {\n                logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n            }\n            result._vs = hexZeroPad(result._vs, 32);\n        }\n\n        // Set or check the _vs\n        if (result._vs == null) {\n            result._vs = _vs;\n        } else if (result._vs !== _vs) {\n            logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n        }\n    }\n\n    return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n    signature = splitSignature(signature);\n\n    return hexlify(concat([\n         signature.r,\n         signature.s,\n         (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n    ]));\n}\n\n","export const version = \"bignumber/5.4.0\";\n","\"use strict\";\n\n/**\n *  BigNumber\n *\n *  A wrapper around the BN.js object. We use the BN.js library\n *  because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n    return (value != null) && (\n        BigNumber.isBigNumber(value) ||\n        (typeof(value) === \"number\" && (value % 1) === 0) ||\n        (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n        isHexString(value) ||\n        (typeof(value) === \"bigint\") ||\n        isBytes(value)\n    );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n    readonly _hex: string;\n    readonly _isBigNumber: boolean;\n\n    constructor(constructorGuard: any, hex: string) {\n        logger.checkNew(new.target, BigNumber);\n\n        if (constructorGuard !== _constructorGuard) {\n            logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"new (BigNumber)\"\n            });\n        }\n\n        this._hex = hex;\n        this._isBigNumber = true;\n\n        Object.freeze(this);\n    }\n\n    fromTwos(value: number): BigNumber {\n        return toBigNumber(toBN(this).fromTwos(value));\n    }\n\n    toTwos(value: number): BigNumber {\n        return toBigNumber(toBN(this).toTwos(value));\n    }\n\n    abs(): BigNumber {\n        if (this._hex[0] === \"-\") {\n            return BigNumber.from(this._hex.substring(1));\n        }\n        return this;\n    }\n\n    add(other: BigNumberish): BigNumber {\n        return toBigNumber(toBN(this).add(toBN(other)));\n    }\n\n    sub(other: BigNumberish): BigNumber {\n        return toBigNumber(toBN(this).sub(toBN(other)));\n    }\n\n    div(other: BigNumberish): BigNumber {\n        const o = BigNumber.from(other);\n        if (o.isZero()) {\n            throwFault(\"division by zero\", \"div\");\n        }\n        return toBigNumber(toBN(this).div(toBN(other)));\n    }\n\n    mul(other: BigNumberish): BigNumber {\n        return toBigNumber(toBN(this).mul(toBN(other)));\n    }\n\n    mod(other: BigNumberish): BigNumber {\n        const value = toBN(other);\n        if (value.isNeg()) {\n            throwFault(\"cannot modulo negative values\", \"mod\");\n        }\n        return toBigNumber(toBN(this).umod(value));\n    }\n\n    pow(other: BigNumberish): BigNumber {\n        const value = toBN(other);\n        if (value.isNeg()) {\n            throwFault(\"cannot raise to negative values\", \"pow\");\n        }\n        return toBigNumber(toBN(this).pow(value));\n    }\n\n    and(other: BigNumberish): BigNumber {\n        const value = toBN(other);\n        if (this.isNegative() || value.isNeg()) {\n            throwFault(\"cannot 'and' negative values\", \"and\");\n        }\n        return toBigNumber(toBN(this).and(value));\n    }\n\n    or(other: BigNumberish): BigNumber {\n        const value = toBN(other);\n        if (this.isNegative() || value.isNeg()) {\n            throwFault(\"cannot 'or' negative values\", \"or\");\n        }\n        return toBigNumber(toBN(this).or(value));\n    }\n\n    xor(other: BigNumberish): BigNumber {\n        const value = toBN(other);\n        if (this.isNegative() || value.isNeg()) {\n            throwFault(\"cannot 'xor' negative values\", \"xor\");\n        }\n        return toBigNumber(toBN(this).xor(value));\n    }\n\n    mask(value: number): BigNumber {\n        if (this.isNegative() || value < 0) {\n            throwFault(\"cannot mask negative values\", \"mask\");\n        }\n        return toBigNumber(toBN(this).maskn(value));\n    }\n\n    shl(value: number): BigNumber {\n        if (this.isNegative() || value < 0) {\n            throwFault(\"cannot shift negative values\", \"shl\");\n        }\n        return toBigNumber(toBN(this).shln(value));\n    }\n\n    shr(value: number): BigNumber {\n        if (this.isNegative() || value < 0) {\n            throwFault(\"cannot shift negative values\", \"shr\");\n        }\n        return toBigNumber(toBN(this).shrn(value));\n    }\n\n    eq(other: BigNumberish): boolean {\n        return toBN(this).eq(toBN(other));\n    }\n\n    lt(other: BigNumberish): boolean {\n        return toBN(this).lt(toBN(other));\n    }\n\n    lte(other: BigNumberish): boolean {\n        return toBN(this).lte(toBN(other));\n    }\n\n    gt(other: BigNumberish): boolean {\n        return toBN(this).gt(toBN(other));\n   }\n\n    gte(other: BigNumberish): boolean {\n        return toBN(this).gte(toBN(other));\n    }\n\n    isNegative(): boolean {\n        return (this._hex[0] === \"-\");\n    }\n\n    isZero(): boolean {\n        return toBN(this).isZero();\n    }\n\n    toNumber(): number {\n        try {\n            return toBN(this).toNumber();\n        } catch (error) {\n            throwFault(\"overflow\", \"toNumber\", this.toString());\n        }\n        return null;\n    }\n\n    toBigInt(): bigint {\n        try {\n            return BigInt(this.toString());\n        } catch (e) { }\n\n        return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n            value: this.toString()\n        });\n    }\n\n    toString(): string {\n        // Lots of people expect this, which we do not support, so check (See: #889)\n        if (arguments.length > 0) {\n            if (arguments[0] === 10) {\n                if (!_warnedToStringRadix) {\n                    _warnedToStringRadix = true;\n                    logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n                }\n            } else if (arguments[0] === 16) {\n                logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n            } else {\n                logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n            }\n        }\n        return toBN(this).toString(10);\n    }\n\n    toHexString(): string {\n        return this._hex;\n    }\n\n    toJSON(key?: string): any {\n        return { type: \"BigNumber\", hex: this.toHexString() };\n    }\n\n    static from(value: any): BigNumber {\n        if (value instanceof BigNumber) { return value; }\n\n        if (typeof(value) === \"string\") {\n            if (value.match(/^-?0x[0-9a-f]+$/i)) {\n                return new BigNumber(_constructorGuard, toHex(value));\n            }\n\n            if (value.match(/^-?[0-9]+$/)) {\n                return new BigNumber(_constructorGuard, toHex(new BN(value)));\n            }\n\n            return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n        }\n\n        if (typeof(value) === \"number\") {\n            if (value % 1) {\n                throwFault(\"underflow\", \"BigNumber.from\", value);\n            }\n\n            if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n                throwFault(\"overflow\", \"BigNumber.from\", value);\n            }\n\n            return BigNumber.from(String(value));\n        }\n\n        const anyValue = <any>value;\n\n        if (typeof(anyValue) === \"bigint\") {\n            return BigNumber.from(anyValue.toString());\n        }\n\n        if (isBytes(anyValue)) {\n            return BigNumber.from(hexlify(anyValue));\n        }\n\n        if (anyValue) {\n\n            // Hexable interface (takes piority)\n            if (anyValue.toHexString) {\n                const hex = anyValue.toHexString();\n                if (typeof(hex) === \"string\") {\n                    return BigNumber.from(hex);\n                }\n\n            } else {\n                // For now, handle legacy JSON-ified values (goes away in v6)\n                let hex = anyValue._hex;\n\n                // New-form JSON\n                if (hex == null && anyValue.type === \"BigNumber\") {\n                    hex = anyValue.hex;\n                }\n\n                if (typeof(hex) === \"string\") {\n                    if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n                        return BigNumber.from(hex);\n                    }\n                }\n            }\n        }\n\n        return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n    }\n\n    static isBigNumber(value: any): value is BigNumber {\n        return !!(value && value._isBigNumber);\n    }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n    // For BN, call on the hex string\n    if (typeof(value) !== \"string\") {\n        return toHex(value.toString(16));\n    }\n\n    // If negative, prepend the negative sign to the normalized positive value\n    if (value[0] === \"-\") {\n        // Strip off the negative sign\n        value = value.substring(1);\n\n        // Cannot have mulitple negative signs (e.g. \"--0x04\")\n        if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n        // Call toHex on the positive component\n        value = toHex(value);\n\n        // Do not allow \"-0x00\"\n        if (value === \"0x00\") { return value; }\n\n        // Negate the value\n        return \"-\" + value;\n    }\n\n    // Add a \"0x\" prefix if missing\n    if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n    // Normalize zero\n    if (value === \"0x\") { return \"0x00\"; }\n\n    // Make the string even length\n    if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n    // Trim to smallest even-length string\n    while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n        value = \"0x\" + value.substring(4);\n    }\n\n    return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n    return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n    const hex = BigNumber.from(value).toHexString();\n    if (hex[0] === \"-\") {\n        return (new BN(\"-\" + hex.substring(3), 16));\n    }\n    return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n    const params: any = { fault: fault, operation: operation };\n    if (value != null) { params.value = value; }\n\n    return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n    return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n    return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n    const params: any = { fault: fault, operation: operation };\n    if (value !== undefined) { params.value = value; }\n    return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n    if (typeof(decimals) !== \"number\") {\n        try {\n            decimals = BigNumber.from(decimals).toNumber();\n        } catch (e) { }\n    }\n\n    if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n        return (\"1\" + zeros.substring(0, decimals));\n    }\n\n    return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n    if (decimals == null) { decimals = 0; }\n    const multiplier = getMultiplier(decimals);\n\n    // Make sure wei is a big number (convert as necessary)\n    value = BigNumber.from(value);\n\n    const negative = value.lt(Zero);\n    if (negative) { value = value.mul(NegativeOne); }\n\n    let fraction = value.mod(multiplier).toString();\n    while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n    // Strip training 0\n    fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n    const whole = value.div(multiplier).toString();\n    if (multiplier.length === 1) {\n        value = whole;\n    } else {\n        value = whole + \".\" + fraction;\n    }\n\n    if (negative) { value = \"-\" + value; }\n\n    return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n    if (decimals == null) { decimals = 0; }\n    const multiplier = getMultiplier(decimals);\n\n    if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.,]+$/)) {\n        logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n    }\n\n    // Is it negative?\n    const negative = (value.substring(0, 1) === \"-\");\n    if (negative) { value = value.substring(1); }\n\n    if (value === \".\") {\n        logger.throwArgumentError(\"missing value\", \"value\", value);\n    }\n\n    // Split it into a whole and fractional part\n    const comps = value.split(\".\");\n    if (comps.length > 2) {\n        logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n    }\n\n    let whole = comps[0], fraction = comps[1];\n    if (!whole) { whole = \"0\"; }\n    if (!fraction) { fraction = \"0\"; }\n\n    // Get significant digits to check truncation for underflow\n    {\n    const sigFraction = fraction.replace(/^([0-9]*?)(0*)$/, (all, sig, zeros) => (sig));\n        if (sigFraction.length > multiplier.length - 1) {\n            throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n        }\n    }\n\n    // Fully pad the string with zeros to get to wei\n    while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n    const wholeValue = BigNumber.from(whole);\n    const fractionValue = BigNumber.from(fraction);\n\n    let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n    if (negative) { wei = wei.mul(NegativeOne); }\n\n    return wei;\n}\n\nexport class FixedFormat {\n    readonly signed: boolean;\n    readonly width: number;\n    readonly decimals: number;\n    readonly name: string;\n    readonly _multiplier: string;\n\n    constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n        if (constructorGuard !== _constructorGuard) {\n            logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"new FixedFormat\"\n            });\n        }\n\n        this.signed = signed;\n        this.width = width;\n        this.decimals = decimals;\n\n        this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n        this._multiplier = getMultiplier(decimals);\n\n        Object.freeze(this);\n    }\n\n    static from(value: any): FixedFormat {\n        if (value instanceof FixedFormat) { return value; }\n\n        if (typeof(value) === \"number\") {\n            value = `fixed128x${value}`\n        }\n\n        let signed = true;\n        let width = 128;\n        let decimals = 18;\n\n        if (typeof(value) === \"string\") {\n            if (value === \"fixed\") {\n                // defaults...\n            } else if (value === \"ufixed\") {\n                signed = false;\n            } else {\n                const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n                if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n                signed = (match[1] !== \"u\");\n                width = parseInt(match[2]);\n                decimals = parseInt(match[3]);\n            }\n        } else if (value) {\n            const check = (key: string, type: string, defaultValue: any): any => {\n                if (value[key] == null) { return defaultValue; }\n                if (typeof(value[key]) !== type) {\n                    logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n                }\n                return value[key];\n            }\n            signed = check(\"signed\", \"boolean\", signed);\n            width = check(\"width\", \"number\", width);\n            decimals = check(\"decimals\", \"number\", decimals);\n        }\n\n        if (width % 8) {\n            logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n        }\n\n        if (decimals > 80) {\n            logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n        }\n\n        return new FixedFormat(_constructorGuard, signed, width, decimals);\n    }\n}\n\nexport class FixedNumber {\n    readonly format: FixedFormat;\n    readonly _hex: string;\n    readonly _value: string;\n\n    readonly _isFixedNumber: boolean;\n\n    constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n        logger.checkNew(new.target, FixedNumber);\n\n        if (constructorGuard !== _constructorGuard) {\n            logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"new FixedFormat\"\n            });\n        }\n\n        this.format = format;\n        this._hex = hex;\n        this._value = value;\n\n        this._isFixedNumber = true;\n\n        Object.freeze(this);\n    }\n\n    _checkFormat(other: FixedNumber): void {\n        if (this.format.name !== other.format.name) {\n            logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n        }\n    }\n\n    addUnsafe(other: FixedNumber): FixedNumber {\n        this._checkFormat(other);\n        const a = parseFixed(this._value, this.format.decimals);\n        const b = parseFixed(other._value, other.format.decimals);\n        return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n    }\n\n    subUnsafe(other: FixedNumber): FixedNumber {\n        this._checkFormat(other);\n        const a = parseFixed(this._value, this.format.decimals);\n        const b = parseFixed(other._value, other.format.decimals);\n        return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n    }\n\n    mulUnsafe(other: FixedNumber): FixedNumber {\n        this._checkFormat(other);\n        const a = parseFixed(this._value, this.format.decimals);\n        const b = parseFixed(other._value, other.format.decimals);\n        return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n    }\n\n    divUnsafe(other: FixedNumber): FixedNumber {\n        this._checkFormat(other);\n        const a = parseFixed(this._value, this.format.decimals);\n        const b = parseFixed(other._value, other.format.decimals);\n        return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n    }\n\n    floor(): FixedNumber {\n        const comps = this.toString().split(\".\");\n        if (comps.length === 1) { comps.push(\"0\"); }\n\n        let result = FixedNumber.from(comps[0], this.format);\n\n        const hasFraction = !comps[1].match(/^(0*)$/);\n        if (this.isNegative() && hasFraction) {\n            result = result.subUnsafe(ONE);\n        }\n\n        return result;\n    }\n\n    ceiling(): FixedNumber {\n        const comps = this.toString().split(\".\");\n        if (comps.length === 1) { comps.push(\"0\"); }\n\n        let result = FixedNumber.from(comps[0], this.format);\n\n        const hasFraction = !comps[1].match(/^(0*)$/);\n        if (!this.isNegative() && hasFraction) {\n            result = result.addUnsafe(ONE);\n        }\n\n        return result;\n    }\n\n    // @TODO: Support other rounding algorithms\n    round(decimals?: number): FixedNumber {\n        if (decimals == null) { decimals = 0; }\n\n        // If we are already in range, we're done\n        const comps = this.toString().split(\".\");\n        if (comps.length === 1) { comps.push(\"0\"); }\n\n        if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n            logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n        }\n\n        if (comps[1].length <= decimals) { return this; }\n\n        const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n        const bump = BUMP.toFormat(this.format);\n\n        return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n    }\n\n    isZero(): boolean {\n        return (this._value === \"0.0\" || this._value === \"0\");\n    }\n\n    isNegative(): boolean {\n        return (this._value[0] === \"-\");\n    }\n\n    toString(): string { return this._value; }\n\n    toHexString(width?: number): string {\n        if (width == null) { return this._hex; }\n        if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n        const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n        return hexZeroPad(hex, width / 8);\n    }\n\n    toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n    toFormat(format: FixedFormat | string): FixedNumber {\n        return FixedNumber.fromString(this._value, format);\n    }\n\n\n    static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n        // If decimals looks more like a format, and there is no format, shift the parameters\n        if (format == null && decimals != null && !isBigNumberish(decimals)) {\n            format = decimals;\n            decimals = null;\n        }\n\n        if (decimals == null) { decimals = 0; }\n        if (format == null) { format = \"fixed\"; }\n\n        return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n    }\n\n\n    static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n        if (format == null) { format = \"fixed\"; }\n\n        const fixedFormat = FixedFormat.from(format);\n\n        const numeric = parseFixed(value, fixedFormat.decimals);\n\n        if (!fixedFormat.signed && numeric.lt(Zero)) {\n            throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n        }\n\n        let hex: string = null;\n        if (fixedFormat.signed) {\n            hex = numeric.toTwos(fixedFormat.width).toHexString();\n        } else {\n            hex = numeric.toHexString();\n            hex = hexZeroPad(hex, fixedFormat.width / 8);\n        }\n\n        const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n        return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n    }\n\n    static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n        if (format == null) { format = \"fixed\"; }\n\n        const fixedFormat = FixedFormat.from(format);\n\n        if (arrayify(value).length > fixedFormat.width / 8) {\n            throw new Error(\"overflow\");\n        }\n\n        let numeric = BigNumber.from(value);\n        if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n        const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n        const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n        return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n    }\n\n    static from(value: any, format?: FixedFormat | string | number) {\n        if (typeof(value) === \"string\") {\n            return FixedNumber.fromString(value, format);\n        }\n\n        if (isBytes(value)) {\n            return FixedNumber.fromBytes(value, format);\n        }\n\n        try {\n            return FixedNumber.fromValue(value, 0, format);\n        } catch (error) {\n            // Allow NUMERIC_FAULT to bubble up\n            if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n                throw error;\n            }\n        }\n\n        return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n    }\n\n    static isFixedNumber(value: any): value is FixedNumber {\n        return !!(value && value._isFixedNumber);\n    }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","export { BigNumber, BigNumberish } from \"./bignumber\";\nexport { formatFixed, FixedFormat, FixedNumber, parseFixed } from \"./fixednumber\";\n\n// Internal methods used by address\nexport { _base16To36, _base36To16 } from \"./bignumber\";\n","export const version = \"properties/5.4.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void {\n    Object.defineProperty(object, name, {\n        enumerable: true,\n        value: value,\n        writable: false,\n    });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic<T>(ctor: any, key: string): T {\n    for (let i = 0; i < 32; i++) {\n        if (ctor[key]) { return ctor[key]; }\n        if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n        ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n    }\n    return null;\n}\n\nexport type Deferrable<T> = {\n    [ K in keyof T ]: T[K] | Promise<T[K]>;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T> {\n    const promises: Array<Promise<Result>> = Object.keys(object).map((key) => {\n        const value = object[<keyof Deferrable<T>>key];\n        return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n    });\n\n    const results = await Promise.all(promises);\n\n    return results.reduce((accum, result) => {\n        accum[<keyof T>(result.key)] = result.value;\n        return accum;\n    }, <T>{ });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n    if (!object || typeof(object) !== \"object\") {\n        logger.throwArgumentError(\"invalid object\", \"object\", object);\n    }\n\n    Object.keys(object).forEach((key) => {\n        if (!properties[key]) {\n            logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n        }\n    });\n}\n\nexport function shallowCopy<T>(object: T): T {\n    const result: any = {};\n    for (const key in object) { result[key] = object[key]; }\n    return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n    // Opaque objects are not mutable, so safe to copy by assignment\n    if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n    if (Array.isArray(object) || typeof(object) === \"object\") {\n        if (!Object.isFrozen(object)) { return false; }\n\n        const keys = Object.keys(object);\n        for (let i = 0; i < keys.length; i++) {\n            if (!_isFrozen(object[keys[i]])) { return false; }\n        }\n\n        return true;\n    }\n\n    return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n    if (_isFrozen(object)) { return object; }\n\n    // Arrays are mutable, so we need to create a copy\n    if (Array.isArray(object)) {\n        return Object.freeze(object.map((item) => deepCopy(item)));\n    }\n\n    if (typeof(object) === \"object\") {\n        const result: { [ key: string ]: any } = {};\n        for (const key in object) {\n            const value = object[key];\n            if (value === undefined) { continue; }\n            defineReadOnly(result, key, deepCopy(value));\n        }\n\n        return result;\n    }\n\n    return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy<T>(object: T): T {\n    return _deepCopy(object);\n}\n\nexport class Description<T = any> {\n    constructor(info: { [ K in keyof T ]: T[K] }) {\n        for (const key in info) {\n            (<any>this)[key] = deepCopy(info[key]);\n        }\n    }\n}\n","export const version = \"abi/5.4.0\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n    readonly name?: string;\n    readonly indexed?: boolean;\n    readonly type?: string;\n    readonly internalType?: any; // @TODO: in v6 reduce type\n    readonly components?: ReadonlyArray<JsonFragmentType>;\n}\n\nexport interface JsonFragment {\n    readonly name?: string;\n    readonly type?: string;\n\n    readonly anonymous?: boolean;\n\n    readonly payable?: boolean;\n    readonly constant?: boolean;\n    readonly stateMutability?: string;\n\n    readonly inputs?: ReadonlyArray<JsonFragmentType>;\n    readonly outputs?: ReadonlyArray<JsonFragmentType>;\n\n    readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n    allowArray?: boolean,\n    allowName?: boolean,\n    allowParams?: boolean,\n    allowType?: boolean,\n    readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n    parent?: any,\n    type?: string,\n    name?: string,\n    state?: ParseState,\n    indexed?: boolean,\n    components?: Array<ParseNode>\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n    if (type === \"bytes\" || type === \"string\") {\n        if (ModifiersBytes[name]) { return true; }\n    } else if (type === \"address\") {\n        if (name === \"payable\") { return true; }\n    } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n        if (ModifiersNest[name]) { return true; }\n    }\n    if (ModifiersBytes[name] || name === \"payable\") {\n        logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n    }\n    return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n    let originalParam = param;\n    function throwError(i: number) {\n        logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n    }\n    param = param.replace(/\\s/g, \" \");\n\n    function newNode(parent: ParseNode): ParseNode {\n        let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n        if (allowIndexed) { node.indexed = false; }\n        return node\n    }\n\n    let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n    let node = parent;\n\n    for (let i = 0; i < param.length; i++) {\n        let c = param[i];\n        switch (c) {\n            case \"(\":\n                if (node.state.allowType && node.type === \"\") {\n                    node.type = \"tuple\";\n                } else if (!node.state.allowParams) {\n                    throwError(i);\n                }\n                node.state.allowType = false;\n                node.type = verifyType(node.type);\n                node.components = [ newNode(node) ];\n                node = node.components[0];\n                break;\n\n            case \")\":\n                delete node.state;\n\n                if (node.name === \"indexed\") {\n                    if (!allowIndexed) { throwError(i); }\n                    node.indexed = true;\n                    node.name = \"\";\n                }\n\n                if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n                node.type = verifyType(node.type);\n\n                let child = node;\n                node = node.parent;\n                if (!node) { throwError(i); }\n                delete child.parent;\n                node.state.allowParams = false;\n                node.state.allowName = true;\n                node.state.allowArray = true;\n                break;\n\n            case \",\":\n                delete node.state;\n\n                if (node.name === \"indexed\") {\n                    if (!allowIndexed) { throwError(i); }\n                    node.indexed = true;\n                    node.name = \"\";\n                }\n\n                if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n                node.type = verifyType(node.type);\n\n                let sibling: ParseNode = newNode(node.parent);\n                 //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n                node.parent.components.push(sibling);\n                delete node.parent;\n                node = sibling;\n                break;\n\n            // Hit a space...\n            case \" \":\n\n                // If reading type, the type is done and may read a param or name\n                if (node.state.allowType) {\n                    if (node.type !== \"\") {\n                        node.type = verifyType(node.type);\n                        delete node.state.allowType;\n                        node.state.allowName = true;\n                        node.state.allowParams = true;\n                    }\n                }\n\n                // If reading name, the name is done\n                if (node.state.allowName) {\n                    if (node.name !== \"\") {\n                        if (node.name === \"indexed\") {\n                            if (!allowIndexed) { throwError(i); }\n                            if (node.indexed) { throwError(i); }\n                            node.indexed = true;\n                            node.name = \"\";\n                        } else if (checkModifier(node.type, node.name)) {\n                            node.name = \"\";\n                        } else {\n                            node.state.allowName = false;\n                        }\n                    }\n                }\n\n                break;\n\n            case \"[\":\n                if (!node.state.allowArray) { throwError(i); }\n\n                node.type += c;\n\n                node.state.allowArray = false;\n                node.state.allowName = false;\n                node.state.readArray = true;\n                break;\n\n            case \"]\":\n                if (!node.state.readArray) { throwError(i); }\n\n                node.type += c;\n\n                node.state.readArray = false;\n                node.state.allowArray = true;\n                node.state.allowName = true;\n                break;\n\n            default:\n                if (node.state.allowType) {\n                    node.type += c;\n                    node.state.allowParams = true;\n                    node.state.allowArray = true;\n                } else if (node.state.allowName) {\n                    node.name += c;\n                    delete node.state.allowArray;\n                } else if (node.state.readArray) {\n                    node.type += c;\n                } else {\n                    throwError(i);\n               }\n        }\n    }\n\n    if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n    delete parent.state;\n\n    if (node.name === \"indexed\") {\n        if (!allowIndexed) { throwError(originalParam.length - 7); }\n        if (node.indexed) { throwError(originalParam.length - 7); }\n        node.indexed = true;\n        node.name = \"\";\n    } else if (checkModifier(node.type, node.name)) {\n        node.name = \"\";\n    }\n\n    parent.type = verifyType(parent.type);\n\n    return parent;\n}\n\nfunction populate(object: any, params: any) {\n    for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n    // Bare formatting, as is needed for computing a sighash of an event or function\n    sighash: \"sighash\",\n\n    // Human-Readable with Minimal spacing and without names (compact human-readable)\n    minimal: \"minimal\",\n\n    // Human-Readble with nice spacing, including all names\n    full: \"full\",\n\n    // JSON-format a la Solidity\n    json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n    // The local name of the parameter (of null if unbound)\n    readonly name: string;\n\n    // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n    readonly type: string;\n\n    // The base type (e.g. \"address\", \"tuple\", \"array\")\n    readonly baseType: string;\n\n    // Indexable Paramters ONLY (otherwise null)\n    readonly indexed: boolean;\n\n    // Tuples ONLY: (otherwise null)\n    //  - sub-components\n    readonly components: Array<ParamType>;\n\n    // Arrays ONLY: (otherwise null)\n    //  - length of the array (-1 for dynamic length)\n    //  - child type\n    readonly arrayLength: number;\n    readonly arrayChildren: ParamType;\n\n    readonly _isParamType: boolean;\n\n    constructor(constructorGuard: any, params: any) {\n        if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"new ParamType()\"\n        }); }\n        populate(this, params);\n\n        let match = this.type.match(paramTypeArray);\n        if (match) {\n            populate(this, {\n                arrayLength: parseInt(match[2] || \"-1\"),\n                arrayChildren: ParamType.fromObject({\n                    type: match[1],\n                    components: this.components\n                }),\n                baseType: \"array\"\n            });\n        } else {\n            populate(this, {\n                arrayLength: null,\n                arrayChildren: null,\n                baseType: ((this.components != null) ? \"tuple\": this.type)\n            });\n        }\n\n        this._isParamType = true;\n\n        Object.freeze(this);\n    }\n\n    // Format the parameter fragment\n    //   - sighash: \"(uint256,address)\"\n    //   - minimal: \"tuple(uint256,address) indexed\"\n    //   - full:    \"tuple(uint256 foo, addres bar) indexed baz\"\n    format(format?: string): string {\n        if (!format) { format = FormatTypes.sighash; }\n        if (!FormatTypes[format]) {\n            logger.throwArgumentError(\"invalid format type\", \"format\", format);\n        }\n\n        if (format === FormatTypes.json) {\n            let result: any = {\n                type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n                name: (this.name || undefined)\n            };\n            if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n            if (this.components) {\n                result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n            }\n            return JSON.stringify(result);\n        }\n\n        let result = \"\";\n\n        // Array\n        if (this.baseType === \"array\") {\n            result += this.arrayChildren.format(format);\n            result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n        } else {\n            if (this.baseType === \"tuple\") {\n                if (format !== FormatTypes.sighash) {\n                    result += this.type;\n                }\n                result += \"(\" + this.components.map(\n                    (comp) => comp.format(format)\n                ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n            } else {\n                result += this.type;\n            }\n        }\n\n        if (format !== FormatTypes.sighash) {\n            if (this.indexed === true) { result += \" indexed\"; }\n            if (format === FormatTypes.full && this.name) {\n                result += \" \" + this.name;\n            }\n        }\n\n        return result;\n    }\n\n    static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n        if (typeof(value) === \"string\") {\n            return ParamType.fromString(value, allowIndexed);\n        }\n        return ParamType.fromObject(value);\n    }\n\n    static fromObject(value: JsonFragmentType | ParamType): ParamType {\n        if (ParamType.isParamType(value)) { return value; }\n\n        return new ParamType(_constructorGuard, {\n            name: (value.name || null),\n            type: verifyType(value.type),\n            indexed: ((value.indexed == null) ? null: !!value.indexed),\n            components: (value.components ? value.components.map(ParamType.fromObject): null)\n        });\n    }\n\n    static fromString(value: string, allowIndexed?: boolean): ParamType {\n        function ParamTypify(node: ParseNode): ParamType {\n            return ParamType.fromObject({\n                name: node.name,\n                type: node.type,\n                indexed: node.indexed,\n                components: node.components\n            });\n        }\n\n        return ParamTypify(parseParamType(value, !!allowIndexed));\n    }\n\n    static isParamType(value: any): value is ParamType {\n        return !!(value != null && value._isParamType);\n    }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array<ParamType> {\n    return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck<T> = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n    readonly type: string;\n    readonly name: string;\n    readonly inputs: ReadonlyArray<ParamType>;\n}\n\nexport abstract class Fragment {\n\n    readonly type: string;\n    readonly name: string;\n    readonly inputs: Array<ParamType>;\n\n    readonly _isFragment: boolean;\n\n    constructor(constructorGuard: any, params: any) {\n        if (constructorGuard !== _constructorGuard) {\n            logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"new Fragment()\"\n            });\n        }\n        populate(this, params);\n\n        this._isFragment = true;\n\n        Object.freeze(this);\n    }\n\n    abstract format(format?: string): string;\n\n    static from(value: Fragment | JsonFragment | string): Fragment {\n        if (Fragment.isFragment(value)) { return value; }\n\n        if (typeof(value) === \"string\") {\n            return Fragment.fromString(value);\n        }\n\n        return Fragment.fromObject(value);\n    }\n\n    static fromObject(value: Fragment | JsonFragment): Fragment {\n        if (Fragment.isFragment(value)) { return value; }\n\n        switch (value.type) {\n            case \"function\":\n                return FunctionFragment.fromObject(value);\n            case \"event\":\n                return EventFragment.fromObject(value);\n            case \"constructor\":\n                return ConstructorFragment.fromObject(value);\n            case \"error\":\n                return ErrorFragment.fromObject(value);\n            case \"fallback\":\n            case \"receive\":\n                // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n                return null;\n        }\n\n        return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n    }\n\n    static fromString(value: string): Fragment {\n        // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n        value = value.replace(/\\s/g, \" \");\n        value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n        value = value.trim();\n\n        if (value.split(\" \")[0] === \"event\") {\n           return EventFragment.fromString(value.substring(5).trim());\n        } else if (value.split(\" \")[0] === \"function\") {\n            return FunctionFragment.fromString(value.substring(8).trim());\n        } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n            return ConstructorFragment.fromString(value.trim());\n        } else if (value.split(\" \")[0] === \"error\") {\n           return ErrorFragment.fromString(value.substring(5).trim());\n        }\n\n        return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n    }\n\n    static isFragment(value: any): value is Fragment {\n        return !!(value && value._isFragment);\n    }\n}\n\ninterface _EventFragment extends _Fragment {\n    readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n    readonly anonymous: boolean;\n\n    format(format?: string): string {\n        if (!format) { format = FormatTypes.sighash; }\n        if (!FormatTypes[format]) {\n            logger.throwArgumentError(\"invalid format type\", \"format\", format);\n        }\n\n        if (format === FormatTypes.json) {\n            return JSON.stringify({\n                type: \"event\",\n                anonymous: this.anonymous,\n                name: this.name,\n                inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n            });\n        }\n\n        let result = \"\";\n\n        if (format !== FormatTypes.sighash) {\n            result += \"event \";\n        }\n\n        result += this.name + \"(\" + this.inputs.map(\n            (input) => input.format(format)\n        ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n        if (format !== FormatTypes.sighash) {\n            if (this.anonymous) {\n                result += \"anonymous \";\n            }\n        }\n\n        return result.trim();\n    }\n\n    static from(value: EventFragment | JsonFragment | string): EventFragment {\n        if (typeof(value) === \"string\") {\n            return EventFragment.fromString(value);\n        }\n        return EventFragment.fromObject(value);\n    }\n\n    static fromObject(value: JsonFragment | EventFragment): EventFragment {\n        if (EventFragment.isEventFragment(value)) { return value; }\n\n        if (value.type !== \"event\") {\n            logger.throwArgumentError(\"invalid event object\", \"value\", value);\n        }\n\n        const params: TypeCheck<_EventFragment> = {\n            name: verifyIdentifier(value.name),\n            anonymous: value.anonymous,\n            inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n            type: \"event\"\n        };\n\n        return new EventFragment(_constructorGuard, params);\n    }\n\n    static fromString(value: string): EventFragment {\n\n        let match = value.match(regexParen);\n        if (!match) {\n            logger.throwArgumentError(\"invalid event string\", \"value\", value);\n        }\n\n        let anonymous = false;\n        match[3].split(\" \").forEach((modifier) => {\n            switch(modifier.trim()) {\n                case \"anonymous\":\n                    anonymous = true;\n                    break;\n                case \"\":\n                    break;\n                default:\n                    logger.warn(\"unknown modifier: \" + modifier);\n            }\n        });\n\n        return EventFragment.fromObject({\n            name: match[1].trim(),\n            anonymous: anonymous,\n            inputs: parseParams(match[2], true),\n            type: \"event\"\n        });\n    }\n\n    static isEventFragment(value: any): value is EventFragment {\n        return (value && value._isFragment && value.type === \"event\");\n    }\n}\n\nfunction parseGas(value: string, params: any): string {\n    params.gas = null;\n\n    let comps = value.split(\"@\");\n    if (comps.length !== 1) {\n        if (comps.length > 2) {\n            logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n        }\n        if (!comps[1].match(/^[0-9]+$/)) {\n            logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n        }\n        params.gas = BigNumber.from(comps[1]);\n        return comps[0];\n    }\n\n    return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n    params.constant = false;\n    params.payable = false;\n    params.stateMutability = \"nonpayable\";\n\n    value.split(\" \").forEach((modifier) => {\n        switch (modifier.trim()) {\n            case \"constant\":\n                params.constant = true;\n                break;\n            case \"payable\":\n                params.payable = true;\n                params.stateMutability = \"payable\";\n                break;\n            case \"nonpayable\":\n                params.payable = false;\n                params.stateMutability = \"nonpayable\";\n                break;\n            case \"pure\":\n                params.constant = true;\n                params.stateMutability = \"pure\";\n                break;\n            case \"view\":\n                params.constant = true;\n                params.stateMutability = \"view\";\n                break;\n            case \"external\":\n            case \"public\":\n            case \"\":\n                break;\n            default:\n                console.log(\"unknown modifier: \" + modifier);\n        }\n    });\n}\n\ntype StateInputValue = {\n    constant?: boolean;\n    payable?: boolean;\n    stateMutability?: string;\n    type?: string;\n};\n\ntype StateOutputValue = {\n    constant: boolean;\n    payable: boolean;\n    stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n    let result: any = {\n        constant: false,\n        payable: true,\n        stateMutability: \"payable\"\n    };\n\n    if (value.stateMutability != null) {\n        result.stateMutability = value.stateMutability;\n\n        // Set (and check things are consistent) the constant property\n        result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n        if (value.constant != null) {\n            if ((!!value.constant) !== result.constant) {\n                logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n            }\n        }\n\n        // Set (and check things are consistent) the payable property\n        result.payable = (result.stateMutability === \"payable\");\n        if (value.payable != null) {\n            if ((!!value.payable) !== result.payable) {\n                logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n            }\n        }\n\n    } else if (value.payable != null) {\n        result.payable = !!value.payable;\n\n        // If payable we can assume non-constant; otherwise we can't assume\n        if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n            logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n        }\n\n        result.constant = !!value.constant;\n\n        if (result.constant) {\n            result.stateMutability = \"view\";\n        } else {\n            result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n        }\n\n        if (result.payable && result.constant) {\n            logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n        }\n\n    } else if (value.constant != null) {\n        result.constant = !!value.constant;\n        result.payable = !result.constant;\n        result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n    } else if (value.type !== \"constructor\") {\n        logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n    }\n\n    return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n    stateMutability: string;\n    payable: boolean;\n    gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n    stateMutability: string;\n    payable: boolean;\n    gas?: BigNumber;\n\n    format(format?: string): string {\n        if (!format) { format = FormatTypes.sighash; }\n        if (!FormatTypes[format]) {\n            logger.throwArgumentError(\"invalid format type\", \"format\", format);\n        }\n\n        if (format === FormatTypes.json) {\n            return JSON.stringify({\n                type: \"constructor\",\n                stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n                payable: this.payable,\n                gas: (this.gas ? this.gas.toNumber(): undefined),\n                inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n            });\n        }\n\n        if (format === FormatTypes.sighash) {\n            logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"format(sighash)\"\n            });\n        }\n\n        let result = \"constructor(\" + this.inputs.map(\n            (input) => input.format(format)\n        ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n        if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n            result += this.stateMutability + \" \";\n        }\n\n        return result.trim();\n    }\n\n    static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n        if (typeof(value) === \"string\") {\n            return ConstructorFragment.fromString(value);\n        }\n        return ConstructorFragment.fromObject(value);\n    }\n\n    static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n        if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n        if (value.type !== \"constructor\") {\n            logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n        }\n\n        let state = verifyState(value);\n        if (state.constant) {\n            logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n        }\n\n        const params: TypeCheck<_ConstructorFragment> = {\n            name: null,\n            type: value.type,\n            inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n            payable: state.payable,\n            stateMutability: state.stateMutability,\n            gas: (value.gas ? BigNumber.from(value.gas): null)\n        };\n\n        return new ConstructorFragment(_constructorGuard, params);\n    }\n\n    static fromString(value: string): ConstructorFragment {\n        let params: any = { type: \"constructor\" };\n\n        value = parseGas(value, params);\n\n        let parens = value.match(regexParen);\n        if (!parens || parens[1].trim() !== \"constructor\") {\n            logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n        }\n\n        params.inputs = parseParams(parens[2].trim(), false);\n\n        parseModifiers(parens[3].trim(), params);\n\n        return ConstructorFragment.fromObject(params);\n    }\n\n    static isConstructorFragment(value: any): value is ConstructorFragment {\n        return (value && value._isFragment && value.type === \"constructor\");\n    }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n    constant: boolean;\n    outputs?: Array<ParamType>;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n    constant: boolean;\n    outputs?: Array<ParamType>;\n\n    format(format?: string): string {\n        if (!format) { format = FormatTypes.sighash; }\n        if (!FormatTypes[format]) {\n            logger.throwArgumentError(\"invalid format type\", \"format\", format);\n        }\n\n        if (format === FormatTypes.json) {\n            return JSON.stringify({\n                type: \"function\",\n                name: this.name,\n                constant: this.constant,\n                stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n                payable: this.payable,\n                gas: (this.gas ? this.gas.toNumber(): undefined),\n                inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n                outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n            });\n        }\n\n        let result = \"\";\n\n        if (format !== FormatTypes.sighash) {\n            result += \"function \";\n        }\n\n        result += this.name + \"(\" + this.inputs.map(\n            (input) => input.format(format)\n        ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n        if (format !== FormatTypes.sighash) {\n            if (this.stateMutability) {\n                if (this.stateMutability !== \"nonpayable\") {\n                    result += (this.stateMutability + \" \");\n                }\n            } else if (this.constant) {\n                result += \"view \";\n            }\n\n            if (this.outputs && this.outputs.length) {\n                result += \"returns (\" + this.outputs.map(\n                    (output) => output.format(format)\n                ).join(\", \") + \") \";\n            }\n\n            if (this.gas != null) {\n                result += \"@\" + this.gas.toString() + \" \";\n            }\n        }\n\n        return result.trim();\n    }\n\n    static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n        if (typeof(value) === \"string\") {\n            return FunctionFragment.fromString(value);\n        }\n        return FunctionFragment.fromObject(value);\n    }\n\n    static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n        if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n        if (value.type !== \"function\") {\n            logger.throwArgumentError(\"invalid function object\", \"value\", value);\n        }\n\n        let state = verifyState(value);\n\n        const params: TypeCheck<_FunctionFragment> = {\n            type: value.type,\n            name: verifyIdentifier(value.name),\n            constant: state.constant,\n            inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n            outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n            payable: state.payable,\n            stateMutability: state.stateMutability,\n            gas: (value.gas ? BigNumber.from(value.gas): null)\n        };\n\n        return new FunctionFragment(_constructorGuard, params);\n    }\n\n    static fromString(value: string): FunctionFragment {\n        let params: any = { type: \"function\" };\n        value = parseGas(value, params);\n\n        let comps = value.split(\" returns \");\n        if (comps.length > 2) {\n            logger.throwArgumentError(\"invalid function string\", \"value\", value);\n        }\n\n        let parens = comps[0].match(regexParen);\n        if (!parens) {\n            logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n        }\n\n        params.name = parens[1].trim();\n        if (params.name) { verifyIdentifier(params.name); }\n\n        params.inputs = parseParams(parens[2], false);\n\n        parseModifiers(parens[3].trim(), params);\n\n        // We have outputs\n        if (comps.length > 1) {\n           let returns = comps[1].match(regexParen);\n            if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n                logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n            }\n            params.outputs = parseParams(returns[2], false);\n        } else {\n            params.outputs = [ ];\n        }\n\n        return FunctionFragment.fromObject(params);\n    }\n\n    static isFunctionFragment(value: any): value is FunctionFragment {\n        return (value && value._isFragment && value.type === \"function\");\n    }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n    const sig = fragment.format();\n    if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n        logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n    }\n    return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n    format(format?: string): string {\n        if (!format) { format = FormatTypes.sighash; }\n        if (!FormatTypes[format]) {\n            logger.throwArgumentError(\"invalid format type\", \"format\", format);\n        }\n\n        if (format === FormatTypes.json) {\n            return JSON.stringify({\n                type: \"error\",\n                name: this.name,\n                inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n            });\n        }\n\n        let result = \"\";\n\n        if (format !== FormatTypes.sighash) {\n            result += \"error \";\n        }\n\n        result += this.name + \"(\" + this.inputs.map(\n            (input) => input.format(format)\n        ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n        return result.trim();\n    }\n\n    static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n        if (typeof(value) === \"string\") {\n            return ErrorFragment.fromString(value);\n        }\n        return ErrorFragment.fromObject(value);\n    }\n\n    static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n        if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n        if (value.type !== \"error\") {\n            logger.throwArgumentError(\"invalid error object\", \"value\", value);\n        }\n\n        const params: TypeCheck<_Fragment> = {\n            type: value.type,\n            name: verifyIdentifier(value.name),\n            inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n        };\n\n        return checkForbidden(new ErrorFragment(_constructorGuard, params));\n    }\n\n    static fromString(value: string): ErrorFragment {\n        let params: any = { type: \"error\" };\n\n        let parens = value.match(regexParen);\n        if (!parens) {\n            logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n        }\n\n        params.name = parens[1].trim();\n        if (params.name) { verifyIdentifier(params.name); }\n\n        params.inputs = parseParams(parens[2], false);\n\n        return checkForbidden(ErrorFragment.fromObject(params));\n    }\n\n    static isErrorFragment(value: any): value is ErrorFragment {\n        return (value && value._isFragment && value.type === \"error\");\n    }\n}\n\nfunction verifyType(type: string): string {\n\n    // These need to be transformed to their full description\n    if (type.match(/^uint($|[^1-9])/)) {\n        type = \"uint256\" + type.substring(4);\n    } else if (type.match(/^int($|[^1-9])/)) {\n        type = \"int256\" + type.substring(3);\n    }\n\n    // @TODO: more verification\n\n    return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n    if (!value || !value.match(regexIdentifier)) {\n        logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n    }\n    return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array<any> {\n    value = value.trim();\n\n    let result = [];\n    let accum = \"\";\n    let depth = 0;\n    for (let offset = 0; offset < value.length; offset++) {\n        let c = value[offset];\n        if (c === \",\" && depth === 0) {\n            result.push(accum);\n            accum = \"\";\n        } else {\n            accum += c;\n            if (c === \"(\") {\n                depth++;\n            } else if (c === \")\") {\n                depth--;\n                if (depth === -1) {\n                    logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n                }\n            }\n        }\n    }\n    if (accum) { result.push(accum); }\n\n    return result;\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray<any> {\n    readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array<string | number>, error: Error }> {\n    // Find the first error (if any)\n    const errors: Array<{ path: Array<string | number>, error: Error }> = [ ];\n\n    const checkErrors = function(path: Array<string | number>, object: any): void {\n        if (!Array.isArray(object)) { return; }\n        for (let key in object) {\n            const childPath = path.slice();\n            childPath.push(key);\n\n            try {\n                 checkErrors(childPath, object[key]);\n            } catch (error) {\n                errors.push({ path: childPath, error: error });\n            }\n        }\n    }\n    checkErrors([ ], result);\n\n    return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n    // The coder name:\n    //   - address, uint256, tuple, array, etc.\n    readonly name: string;\n\n    // The fully expanded type, including composite types:\n    //   - address, uint256, tuple(address,bytes), uint256[3][4][],  etc.\n    readonly type: string;\n\n    // The localName bound in the signature, in this example it is \"baz\":\n    //   - tuple(address foo, uint bar) baz\n    readonly localName: string;\n\n    // Whether this type is dynamic:\n    //  - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n    //  - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n    readonly dynamic: boolean;\n\n    constructor(name: string, type: string, localName: string, dynamic: boolean) {\n        // @TODO: defineReadOnly these\n        this.name = name;\n        this.type = type;\n        this.localName = localName;\n        this.dynamic = dynamic;\n    }\n\n    _throwError(message: string, value: any): void {\n        logger.throwArgumentError(message, this.localName, value);\n    }\n\n    abstract encode(writer: Writer, value: any): number;\n    abstract decode(reader: Reader): any;\n\n    abstract defaultValue(): any;\n}\n\nexport class Writer {\n    readonly wordSize: number;\n\n    _data: Array<Uint8Array>;\n    _dataLength: number;\n    _padding: Uint8Array;\n\n    constructor(wordSize?: number) {\n        defineReadOnly(this, \"wordSize\", wordSize || 32);\n        this._data = [ ];\n        this._dataLength = 0;\n        this._padding = new Uint8Array(wordSize);\n    }\n\n    get data(): string {\n        return hexConcat(this._data);\n    }\n    get length(): number { return this._dataLength; }\n\n    _writeData(data: Uint8Array): number {\n        this._data.push(data);\n        this._dataLength += data.length;\n        return data.length;\n    }\n\n    appendWriter(writer: Writer): number {\n        return this._writeData(concat(writer._data));\n    }\n\n    // Arrayish items; padded on the right to wordSize\n    writeBytes(value: BytesLike): number {\n        let bytes = arrayify(value);\n        const paddingOffset = bytes.length % this.wordSize;\n        if (paddingOffset) {\n            bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n        }\n        return this._writeData(bytes);\n    }\n\n    _getValue(value: BigNumberish): Uint8Array {\n        let bytes = arrayify(BigNumber.from(value));\n        if (bytes.length > this.wordSize) {\n            logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n                length: this.wordSize,\n                offset: bytes.length\n            });\n        }\n        if (bytes.length % this.wordSize) {\n            bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n        }\n        return bytes;\n    }\n\n    // BigNumberish items; padded on the left to wordSize\n    writeValue(value: BigNumberish): number {\n        return this._writeData(this._getValue(value));\n    }\n\n    writeUpdatableValue(): (value: BigNumberish) => void {\n        const offset = this._data.length;\n        this._data.push(this._padding);\n        this._dataLength += this.wordSize;\n        return (value: BigNumberish) => {\n            this._data[offset] = this._getValue(value);\n        };\n    }\n}\n\nexport class Reader {\n    readonly wordSize: number;\n    readonly allowLoose: boolean;\n\n    readonly _data: Uint8Array;\n    readonly _coerceFunc: CoerceFunc;\n\n    _offset: number;\n\n    constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n        defineReadOnly(this, \"_data\", arrayify(data));\n        defineReadOnly(this, \"wordSize\", wordSize || 32);\n        defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n        defineReadOnly(this, \"allowLoose\", allowLoose);\n\n        this._offset = 0;\n    }\n\n    get data(): string { return hexlify(this._data); }\n    get consumed(): number { return this._offset; }\n\n    // The default Coerce function\n    static coerce(name: string, value: any): any {\n        let match = name.match(\"^u?int([0-9]+)$\");\n        if (match && parseInt(match[1]) <= 48) { value =  value.toNumber(); }\n        return value;\n    }\n\n    coerce(name: string, value: any): any {\n        if (this._coerceFunc) { return this._coerceFunc(name, value); }\n        return Reader.coerce(name, value);\n    }\n\n    _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n        let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n        if (this._offset + alignedLength > this._data.length) {\n            if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n                alignedLength = length;\n            } else {\n                logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n                    length: this._data.length,\n                    offset: this._offset + alignedLength\n                });\n            }\n        }\n        return this._data.slice(this._offset, this._offset + alignedLength)\n    }\n\n    subReader(offset: number): Reader {\n        return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n    }\n\n    readBytes(length: number, loose?: boolean): Uint8Array {\n        let bytes = this._peekBytes(0, length, !!loose);\n        this._offset += bytes.length;\n        // @TODO: Make sure the length..end bytes are all 0?\n        return bytes.slice(0, length);\n    }\n\n    readValue(): BigNumber {\n        return BigNumber.from(this.readBytes(this.wordSize));\n    }\n}\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n  'use strict';\r\n\r\n  var root = typeof window === 'object' ? window : {};\r\n  var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n  if (NODE_JS) {\r\n    root = global;\r\n  }\r\n  var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n  var HEX_CHARS = '0123456789abcdef'.split('');\r\n  var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n  var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n  var PADDING = [6, 1536, 393216, 100663296];\r\n  var SHIFT = [0, 8, 16, 24];\r\n  var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n            0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n            2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n            2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n            2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n  var BITS = [224, 256, 384, 512];\r\n  var SHAKE_BITS = [128, 256];\r\n  var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n  var createOutputMethod = function (bits, padding, outputType) {\r\n    return function (message) {\r\n      return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n    };\r\n  };\r\n\r\n  var createShakeOutputMethod = function (bits, padding, outputType) {\r\n    return function (message, outputBits) {\r\n      return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n    };\r\n  };\r\n\r\n  var createMethod = function (bits, padding) {\r\n    var method = createOutputMethod(bits, padding, 'hex');\r\n    method.create = function () {\r\n      return new Keccak(bits, padding, bits);\r\n    };\r\n    method.update = function (message) {\r\n      return method.create().update(message);\r\n    };\r\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n      var type = OUTPUT_TYPES[i];\r\n      method[type] = createOutputMethod(bits, padding, type);\r\n    }\r\n    return method;\r\n  };\r\n\r\n  var createShakeMethod = function (bits, padding) {\r\n    var method = createShakeOutputMethod(bits, padding, 'hex');\r\n    method.create = function (outputBits) {\r\n      return new Keccak(bits, padding, outputBits);\r\n    };\r\n    method.update = function (message, outputBits) {\r\n      return method.create(outputBits).update(message);\r\n    };\r\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n      var type = OUTPUT_TYPES[i];\r\n      method[type] = createShakeOutputMethod(bits, padding, type);\r\n    }\r\n    return method;\r\n  };\r\n\r\n  var algorithms = [\r\n    {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n    {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n    {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n  ];\r\n\r\n  var methods = {}, methodNames = [];\r\n\r\n  for (var i = 0; i < algorithms.length; ++i) {\r\n    var algorithm = algorithms[i];\r\n    var bits  = algorithm.bits;\r\n    for (var j = 0; j < bits.length; ++j) {\r\n      var methodName = algorithm.name +'_' + bits[j];\r\n      methodNames.push(methodName);\r\n      methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n    }\r\n  }\r\n\r\n  function Keccak(bits, padding, outputBits) {\r\n    this.blocks = [];\r\n    this.s = [];\r\n    this.padding = padding;\r\n    this.outputBits = outputBits;\r\n    this.reset = true;\r\n    this.block = 0;\r\n    this.start = 0;\r\n    this.blockCount = (1600 - (bits << 1)) >> 5;\r\n    this.byteCount = this.blockCount << 2;\r\n    this.outputBlocks = outputBits >> 5;\r\n    this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n    for (var i = 0; i < 50; ++i) {\r\n      this.s[i] = 0;\r\n    }\r\n  }\r\n\r\n  Keccak.prototype.update = function (message) {\r\n    var notString = typeof message !== 'string';\r\n    if (notString && message.constructor === ArrayBuffer) {\r\n      message = new Uint8Array(message);\r\n    }\r\n    var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n      blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n    while (index < length) {\r\n      if (this.reset) {\r\n        this.reset = false;\r\n        blocks[0] = this.block;\r\n        for (i = 1; i < blockCount + 1; ++i) {\r\n          blocks[i] = 0;\r\n        }\r\n      }\r\n      if (notString) {\r\n        for (i = this.start; index < length && i < byteCount; ++index) {\r\n          blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n        }\r\n      } else {\r\n        for (i = this.start; index < length && i < byteCount; ++index) {\r\n          code = message.charCodeAt(index);\r\n          if (code < 0x80) {\r\n            blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n          } else if (code < 0x800) {\r\n            blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          } else if (code < 0xd800 || code >= 0xe000) {\r\n            blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          } else {\r\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n            blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n            blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n          }\r\n        }\r\n      }\r\n      this.lastByteIndex = i;\r\n      if (i >= byteCount) {\r\n        this.start = i - byteCount;\r\n        this.block = blocks[blockCount];\r\n        for (i = 0; i < blockCount; ++i) {\r\n          s[i] ^= blocks[i];\r\n        }\r\n        f(s);\r\n        this.reset = true;\r\n      } else {\r\n        this.start = i;\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  Keccak.prototype.finalize = function () {\r\n    var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n    blocks[i >> 2] |= this.padding[i & 3];\r\n    if (this.lastByteIndex === this.byteCount) {\r\n      blocks[0] = blocks[blockCount];\r\n      for (i = 1; i < blockCount + 1; ++i) {\r\n        blocks[i] = 0;\r\n      }\r\n    }\r\n    blocks[blockCount - 1] |= 0x80000000;\r\n    for (i = 0; i < blockCount; ++i) {\r\n      s[i] ^= blocks[i];\r\n    }\r\n    f(s);\r\n  };\r\n\r\n  Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var hex = '', block;\r\n    while (j < outputBlocks) {\r\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n        block = s[i];\r\n        hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n               HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n               HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n               HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n      }\r\n      if (j % blockCount === 0) {\r\n        f(s);\r\n        i = 0;\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      block = s[i];\r\n      if (extraBytes > 0) {\r\n        hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n      }\r\n      if (extraBytes > 1) {\r\n        hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n      }\r\n      if (extraBytes > 2) {\r\n        hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n      }\r\n    }\r\n    return hex;\r\n  };\r\n\r\n  Keccak.prototype.arrayBuffer = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var bytes = this.outputBits >> 3;\r\n    var buffer;\r\n    if (extraBytes) {\r\n      buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n    } else {\r\n      buffer = new ArrayBuffer(bytes);\r\n    }\r\n    var array = new Uint32Array(buffer);\r\n    while (j < outputBlocks) {\r\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n        array[j] = s[i];\r\n      }\r\n      if (j % blockCount === 0) {\r\n        f(s);\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      array[i] = s[i];\r\n      buffer = buffer.slice(0, bytes);\r\n    }\r\n    return buffer;\r\n  };\r\n\r\n  Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n  Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n    this.finalize();\r\n\r\n    var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n        extraBytes = this.extraBytes, i = 0, j = 0;\r\n    var array = [], offset, block;\r\n    while (j < outputBlocks) {\r\n      for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n        offset = j << 2;\r\n        block = s[i];\r\n        array[offset] = block & 0xFF;\r\n        array[offset + 1] = (block >> 8) & 0xFF;\r\n        array[offset + 2] = (block >> 16) & 0xFF;\r\n        array[offset + 3] = (block >> 24) & 0xFF;\r\n      }\r\n      if (j % blockCount === 0) {\r\n        f(s);\r\n      }\r\n    }\r\n    if (extraBytes) {\r\n      offset = j << 2;\r\n      block = s[i];\r\n      if (extraBytes > 0) {\r\n        array[offset] = block & 0xFF;\r\n      }\r\n      if (extraBytes > 1) {\r\n        array[offset + 1] = (block >> 8) & 0xFF;\r\n      }\r\n      if (extraBytes > 2) {\r\n        array[offset + 2] = (block >> 16) & 0xFF;\r\n      }\r\n    }\r\n    return array;\r\n  };\r\n\r\n  var f = function (s) {\r\n    var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n        b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n        b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n        b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n    for (n = 0; n < 48; n += 2) {\r\n      c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n      c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n      c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n      c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n      c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n      c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n      c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n      c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n      c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n      c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n      h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n      l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n      s[0] ^= h;\r\n      s[1] ^= l;\r\n      s[10] ^= h;\r\n      s[11] ^= l;\r\n      s[20] ^= h;\r\n      s[21] ^= l;\r\n      s[30] ^= h;\r\n      s[31] ^= l;\r\n      s[40] ^= h;\r\n      s[41] ^= l;\r\n      h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n      l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n      s[2] ^= h;\r\n      s[3] ^= l;\r\n      s[12] ^= h;\r\n      s[13] ^= l;\r\n      s[22] ^= h;\r\n      s[23] ^= l;\r\n      s[32] ^= h;\r\n      s[33] ^= l;\r\n      s[42] ^= h;\r\n      s[43] ^= l;\r\n      h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n      l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n      s[4] ^= h;\r\n      s[5] ^= l;\r\n      s[14] ^= h;\r\n      s[15] ^= l;\r\n      s[24] ^= h;\r\n      s[25] ^= l;\r\n      s[34] ^= h;\r\n      s[35] ^= l;\r\n      s[44] ^= h;\r\n      s[45] ^= l;\r\n      h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n      l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n      s[6] ^= h;\r\n      s[7] ^= l;\r\n      s[16] ^= h;\r\n      s[17] ^= l;\r\n      s[26] ^= h;\r\n      s[27] ^= l;\r\n      s[36] ^= h;\r\n      s[37] ^= l;\r\n      s[46] ^= h;\r\n      s[47] ^= l;\r\n      h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n      l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n      s[8] ^= h;\r\n      s[9] ^= l;\r\n      s[18] ^= h;\r\n      s[19] ^= l;\r\n      s[28] ^= h;\r\n      s[29] ^= l;\r\n      s[38] ^= h;\r\n      s[39] ^= l;\r\n      s[48] ^= h;\r\n      s[49] ^= l;\r\n\r\n      b0 = s[0];\r\n      b1 = s[1];\r\n      b32 = (s[11] << 4) | (s[10] >>> 28);\r\n      b33 = (s[10] << 4) | (s[11] >>> 28);\r\n      b14 = (s[20] << 3) | (s[21] >>> 29);\r\n      b15 = (s[21] << 3) | (s[20] >>> 29);\r\n      b46 = (s[31] << 9) | (s[30] >>> 23);\r\n      b47 = (s[30] << 9) | (s[31] >>> 23);\r\n      b28 = (s[40] << 18) | (s[41] >>> 14);\r\n      b29 = (s[41] << 18) | (s[40] >>> 14);\r\n      b20 = (s[2] << 1) | (s[3] >>> 31);\r\n      b21 = (s[3] << 1) | (s[2] >>> 31);\r\n      b2 = (s[13] << 12) | (s[12] >>> 20);\r\n      b3 = (s[12] << 12) | (s[13] >>> 20);\r\n      b34 = (s[22] << 10) | (s[23] >>> 22);\r\n      b35 = (s[23] << 10) | (s[22] >>> 22);\r\n      b16 = (s[33] << 13) | (s[32] >>> 19);\r\n      b17 = (s[32] << 13) | (s[33] >>> 19);\r\n      b48 = (s[42] << 2) | (s[43] >>> 30);\r\n      b49 = (s[43] << 2) | (s[42] >>> 30);\r\n      b40 = (s[5] << 30) | (s[4] >>> 2);\r\n      b41 = (s[4] << 30) | (s[5] >>> 2);\r\n      b22 = (s[14] << 6) | (s[15] >>> 26);\r\n      b23 = (s[15] << 6) | (s[14] >>> 26);\r\n      b4 = (s[25] << 11) | (s[24] >>> 21);\r\n      b5 = (s[24] << 11) | (s[25] >>> 21);\r\n      b36 = (s[34] << 15) | (s[35] >>> 17);\r\n      b37 = (s[35] << 15) | (s[34] >>> 17);\r\n      b18 = (s[45] << 29) | (s[44] >>> 3);\r\n      b19 = (s[44] << 29) | (s[45] >>> 3);\r\n      b10 = (s[6] << 28) | (s[7] >>> 4);\r\n      b11 = (s[7] << 28) | (s[6] >>> 4);\r\n      b42 = (s[17] << 23) | (s[16] >>> 9);\r\n      b43 = (s[16] << 23) | (s[17] >>> 9);\r\n      b24 = (s[26] << 25) | (s[27] >>> 7);\r\n      b25 = (s[27] << 25) | (s[26] >>> 7);\r\n      b6 = (s[36] << 21) | (s[37] >>> 11);\r\n      b7 = (s[37] << 21) | (s[36] >>> 11);\r\n      b38 = (s[47] << 24) | (s[46] >>> 8);\r\n      b39 = (s[46] << 24) | (s[47] >>> 8);\r\n      b30 = (s[8] << 27) | (s[9] >>> 5);\r\n      b31 = (s[9] << 27) | (s[8] >>> 5);\r\n      b12 = (s[18] << 20) | (s[19] >>> 12);\r\n      b13 = (s[19] << 20) | (s[18] >>> 12);\r\n      b44 = (s[29] << 7) | (s[28] >>> 25);\r\n      b45 = (s[28] << 7) | (s[29] >>> 25);\r\n      b26 = (s[38] << 8) | (s[39] >>> 24);\r\n      b27 = (s[39] << 8) | (s[38] >>> 24);\r\n      b8 = (s[48] << 14) | (s[49] >>> 18);\r\n      b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n      s[0] = b0 ^ (~b2 & b4);\r\n      s[1] = b1 ^ (~b3 & b5);\r\n      s[10] = b10 ^ (~b12 & b14);\r\n      s[11] = b11 ^ (~b13 & b15);\r\n      s[20] = b20 ^ (~b22 & b24);\r\n      s[21] = b21 ^ (~b23 & b25);\r\n      s[30] = b30 ^ (~b32 & b34);\r\n      s[31] = b31 ^ (~b33 & b35);\r\n      s[40] = b40 ^ (~b42 & b44);\r\n      s[41] = b41 ^ (~b43 & b45);\r\n      s[2] = b2 ^ (~b4 & b6);\r\n      s[3] = b3 ^ (~b5 & b7);\r\n      s[12] = b12 ^ (~b14 & b16);\r\n      s[13] = b13 ^ (~b15 & b17);\r\n      s[22] = b22 ^ (~b24 & b26);\r\n      s[23] = b23 ^ (~b25 & b27);\r\n      s[32] = b32 ^ (~b34 & b36);\r\n      s[33] = b33 ^ (~b35 & b37);\r\n      s[42] = b42 ^ (~b44 & b46);\r\n      s[43] = b43 ^ (~b45 & b47);\r\n      s[4] = b4 ^ (~b6 & b8);\r\n      s[5] = b5 ^ (~b7 & b9);\r\n      s[14] = b14 ^ (~b16 & b18);\r\n      s[15] = b15 ^ (~b17 & b19);\r\n      s[24] = b24 ^ (~b26 & b28);\r\n      s[25] = b25 ^ (~b27 & b29);\r\n      s[34] = b34 ^ (~b36 & b38);\r\n      s[35] = b35 ^ (~b37 & b39);\r\n      s[44] = b44 ^ (~b46 & b48);\r\n      s[45] = b45 ^ (~b47 & b49);\r\n      s[6] = b6 ^ (~b8 & b0);\r\n      s[7] = b7 ^ (~b9 & b1);\r\n      s[16] = b16 ^ (~b18 & b10);\r\n      s[17] = b17 ^ (~b19 & b11);\r\n      s[26] = b26 ^ (~b28 & b20);\r\n      s[27] = b27 ^ (~b29 & b21);\r\n      s[36] = b36 ^ (~b38 & b30);\r\n      s[37] = b37 ^ (~b39 & b31);\r\n      s[46] = b46 ^ (~b48 & b40);\r\n      s[47] = b47 ^ (~b49 & b41);\r\n      s[8] = b8 ^ (~b0 & b2);\r\n      s[9] = b9 ^ (~b1 & b3);\r\n      s[18] = b18 ^ (~b10 & b12);\r\n      s[19] = b19 ^ (~b11 & b13);\r\n      s[28] = b28 ^ (~b20 & b22);\r\n      s[29] = b29 ^ (~b21 & b23);\r\n      s[38] = b38 ^ (~b30 & b32);\r\n      s[39] = b39 ^ (~b31 & b33);\r\n      s[48] = b48 ^ (~b40 & b42);\r\n      s[49] = b49 ^ (~b41 & b43);\r\n\r\n      s[0] ^= RC[n];\r\n      s[1] ^= RC[n + 1];\r\n    }\r\n  };\r\n\r\n  if (COMMON_JS) {\r\n    module.exports = methods;\r\n  } else {\r\n    for (var i = 0; i < methodNames.length; ++i) {\r\n      root[methodNames[i]] = methods[methodNames[i]];\r\n    }\r\n  }\r\n})();\r\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n    return '0x' + sha3.keccak_256(arrayify(data));\n}\n","export const version = \"rlp/5.4.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array<number> {\n    const result = [];\n    while (value) {\n        result.unshift(value & 0xff);\n        value >>= 8;\n    }\n    return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n    let result = 0;\n    for (let i = 0; i < length; i++) {\n        result = (result * 256) + data[offset + i];\n    }\n    return result;\n}\n\nfunction _encode(object: Array<any> | string): Array<number> {\n    if (Array.isArray(object)) {\n        let payload: Array<number> = [];\n        object.forEach(function(child) {\n            payload = payload.concat(_encode(child));\n        });\n\n        if (payload.length <= 55) {\n            payload.unshift(0xc0 + payload.length)\n            return payload;\n        }\n\n        const length = arrayifyInteger(payload.length);\n        length.unshift(0xf7 + length.length);\n\n        return length.concat(payload);\n\n    }\n\n    if (!isBytesLike(object)) {\n        logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n    }\n\n    const data: Array<number> = Array.prototype.slice.call(arrayify(object));\n\n    if (data.length === 1 && data[0] <= 0x7f) {\n        return data;\n\n    } else if (data.length <= 55) {\n        data.unshift(0x80 + data.length);\n        return data;\n    }\n\n    const length = arrayifyInteger(data.length);\n    length.unshift(0xb7 + length.length);\n\n    return length.concat(data);\n}\n\nexport function encode(object: any): string {\n    return hexlify(_encode(object));\n}\n\ntype Decoded = {\n    result: any;\n    consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n    const result = [];\n\n    while (childOffset < offset + 1 + length) {\n        const decoded = _decode(data, childOffset);\n\n        result.push(decoded.result);\n\n        childOffset += decoded.consumed;\n        if (childOffset > offset + 1 + length) {\n            logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n    }\n\n    return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n    if (data.length === 0) {\n        logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n    }\n\n    // Array with extra length prefix\n    if (data[offset] >= 0xf8) {\n        const lengthLength = data[offset] - 0xf7;\n        if (offset + 1 + lengthLength > data.length) {\n            logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        const length = unarrayifyInteger(data, offset + 1, lengthLength);\n        if (offset + 1 + lengthLength + length > data.length) {\n            logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n    } else if (data[offset] >= 0xc0) {\n        const length = data[offset] - 0xc0;\n        if (offset + 1 + length > data.length) {\n            logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        return _decodeChildren(data, offset, offset + 1, length);\n\n    } else if (data[offset] >= 0xb8) {\n        const lengthLength = data[offset] - 0xb7;\n        if (offset + 1 + lengthLength > data.length) {\n            logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        const length = unarrayifyInteger(data, offset + 1, lengthLength);\n        if (offset + 1 + lengthLength + length > data.length) {\n            logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n        return { consumed: (1 + lengthLength + length), result: result }\n\n    } else if (data[offset] >= 0x80) {\n        const length = data[offset] - 0x80;\n        if (offset + 1 + length > data.length) {\n            logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n        }\n\n        const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n        return { consumed: (1 + length), result: result }\n    }\n    return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n    const bytes = arrayify(data);\n    const decoded = _decode(bytes, 0);\n    if (decoded.consumed !== bytes.length) {\n        logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n    }\n    return decoded.result;\n}\n\n","export const version = \"address/5.4.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n    if (!isHexString(address, 20)) {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n\n    address = address.toLowerCase();\n\n    const chars = address.substring(2).split(\"\");\n\n    const expanded = new Uint8Array(40);\n    for (let i = 0; i < 40; i++) {\n        expanded[i] = chars[i].charCodeAt(0);\n    }\n\n    const hashed = arrayify(keccak256(expanded));\n\n    for (let i = 0; i < 40; i += 2) {\n        if ((hashed[i >> 1] >> 4) >= 8) {\n            chars[i] = chars[i].toUpperCase();\n        }\n        if ((hashed[i >> 1] & 0x0f) >= 8) {\n            chars[i + 1] = chars[i + 1].toUpperCase();\n        }\n    }\n\n    return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n    if (Math.log10) { return Math.log10(x); }\n    return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n    address = address.toUpperCase();\n    address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n    let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n    // Javascript can handle integers safely up to 15 (decimal) digits\n    while (expanded.length >= safeDigits){\n        let block = expanded.substring(0, safeDigits);\n        expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n    }\n\n    let checksum = String(98 - (parseInt(expanded, 10) % 97));\n    while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n    return checksum;\n};\n\nexport function getAddress(address: string): string {\n    let result = null;\n\n    if (typeof(address) !== \"string\") {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n\n    if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n        // Missing the 0x prefix\n        if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n        result = getChecksumAddress(address);\n\n        // It is a checksummed address with a bad checksum\n        if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n            logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n        }\n\n    // Maybe ICAP? (we only support direct mode)\n    } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n        // It is an ICAP address with a bad checksum\n        if (address.substring(2, 4) !== ibanChecksum(address)) {\n            logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n        }\n\n        result = _base36To16(address.substring(4));\n        while (result.length < 40) { result = \"0\" + result; }\n        result = getChecksumAddress(\"0x\" + result);\n\n    } else {\n        logger.throwArgumentError(\"invalid address\", \"address\", address);\n    }\n\n    return result;\n}\n\nexport function isAddress(address: string): boolean {\n    try {\n        getAddress(address);\n        return true;\n    } catch (error) { }\n    return false;\n}\n\nexport function getIcapAddress(address: string): string {\n    let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n    while (base36.length < 30) { base36 = \"0\" + base36; }\n    return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n    let from: string = null;\n    try {\n        from = getAddress(transaction.from);\n    } catch (error) {\n        logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n    }\n\n    const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n    return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n    if (hexDataLength(salt) !== 32) {\n        logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n    }\n    if (hexDataLength(initCodeHash) !== 32) {\n        logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n    }\n    return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n    constructor(localName: string) {\n        super(\"address\", \"address\", localName, false);\n    }\n\n    defaultValue(): string {\n        return \"0x0000000000000000000000000000000000000000\";\n    }\n\n    encode(writer: Writer, value: string): number {\n        try {\n            getAddress(value);\n        } catch (error) {\n            this._throwError(error.message, value);\n        }\n        return writer.writeValue(value);\n    }\n\n    decode(reader: Reader): any {\n        return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n    }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n    private coder: Coder;\n\n    constructor(coder: Coder) {\n        super(coder.name, coder.type, undefined, coder.dynamic);\n        this.coder = coder;\n    }\n\n    defaultValue(): any {\n        return this.coder.defaultValue();\n    }\n\n    encode(writer: Writer, value: any): number {\n        return this.coder.encode(writer, value);\n    }\n\n    decode(reader: Reader): any {\n        return this.coder.decode(reader);\n    }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray<Coder>, values: Array<any> | { [ name: string ]: any }): number {\n    let arrayValues: Array<any> = null;\n\n    if (Array.isArray(values)) {\n       arrayValues = values;\n\n    } else if (values && typeof(values) === \"object\") {\n        let unique: { [ name: string ]: boolean } = { };\n\n        arrayValues = coders.map((coder) => {\n            const name = coder.localName;\n            if (!name) {\n                logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n                    argument: \"values\",\n                    coder: coder,\n                    value: values\n                });\n            }\n\n            if (unique[name]) {\n                logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n                    argument: \"values\",\n                    coder: coder,\n                    value: values\n                });\n            }\n\n            unique[name] = true;\n\n            return values[name];\n        });\n\n    } else {\n        logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n    }\n\n    if (coders.length !== arrayValues.length) {\n        logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n    }\n\n    let staticWriter = new Writer(writer.wordSize);\n    let dynamicWriter = new Writer(writer.wordSize);\n\n    let updateFuncs: Array<(baseOffset: number) => void> = [];\n    coders.forEach((coder, index) => {\n        let value = arrayValues[index];\n\n        if (coder.dynamic) {\n            // Get current dynamic offset (for the future pointer)\n            let dynamicOffset = dynamicWriter.length;\n\n            // Encode the dynamic value into the dynamicWriter\n            coder.encode(dynamicWriter, value);\n\n            // Prepare to populate the correct offset once we are done\n            let updateFunc = staticWriter.writeUpdatableValue();\n            updateFuncs.push((baseOffset: number) => {\n                updateFunc(baseOffset + dynamicOffset);\n            });\n\n        } else {\n            coder.encode(staticWriter, value);\n        }\n    });\n\n    // Backfill all the dynamic offsets, now that we know the static length\n    updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n    let length = writer.appendWriter(staticWriter);\n    length += writer.appendWriter(dynamicWriter);\n    return length;\n}\n\nexport function unpack(reader: Reader, coders: Array<Coder>): Result {\n    let values: any = [];\n\n    // A reader anchored to this base\n    let baseReader = reader.subReader(0);\n\n    coders.forEach((coder) => {\n        let value: any = null;\n\n        if (coder.dynamic) {\n            let offset = reader.readValue();\n            let offsetReader = baseReader.subReader(offset.toNumber());\n            try {\n                value = coder.decode(offsetReader);\n            } catch (error) {\n                // Cannot recover from this\n                if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n                value = error;\n                value.baseType = coder.name;\n                value.name = coder.localName;\n                value.type = coder.type;\n            }\n\n        } else {\n            try {\n                value = coder.decode(reader);\n            } catch (error) {\n                // Cannot recover from this\n                if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n                value = error;\n                value.baseType = coder.name;\n                value.name = coder.localName;\n                value.type = coder.type;\n            }\n        }\n\n        if (value != undefined) {\n            values.push(value);\n        }\n    });\n\n    // We only output named properties for uniquely named coders\n    const uniqueNames = coders.reduce((accum, coder) => {\n        const name = coder.localName;\n        if (name) {\n            if (!accum[name]) { accum[name] = 0; }\n            accum[name]++;\n        }\n        return accum;\n    }, <{ [ name: string ]: number }>{ });\n\n    // Add any named parameters (i.e. tuples)\n    coders.forEach((coder: Coder, index: number) => {\n        let name = coder.localName;\n        if (!name || uniqueNames[name] !== 1) { return; }\n\n        if (name === \"length\") { name = \"_length\"; }\n\n        if (values[name] != null) { return; }\n\n        const value = values[index];\n\n        if (value instanceof Error) {\n            Object.defineProperty(values, name, {\n                get: () => { throw value; }\n            });\n        } else {\n            values[name] = value;\n        }\n    });\n\n    for (let i = 0; i < values.length; i++) {\n        const value = values[i];\n        if (value instanceof Error) {\n            Object.defineProperty(values, i, {\n                get: () => { throw value; }\n            });\n        }\n    }\n\n    return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n    readonly coder: Coder;\n    readonly length: number;\n\n    constructor(coder: Coder, length: number, localName: string) {\n        const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n        const dynamic = (length === -1 || coder.dynamic);\n        super(\"array\", type, localName, dynamic);\n\n        this.coder = coder;\n        this.length = length;\n    }\n\n    defaultValue(): Array<any> {\n        // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n        const defaultChild = this.coder.defaultValue();\n\n        const result: Array<any> = [];\n        for (let i = 0; i < this.length; i++) {\n            result.push(defaultChild);\n        }\n        return result;\n    }\n\n    encode(writer: Writer, value: Array<any>): number {\n        if (!Array.isArray(value)) {\n            this._throwError(\"expected array value\", value);\n        }\n\n        let count = this.length;\n\n        if (count === -1) {\n            count = value.length;\n            writer.writeValue(value.length);\n        }\n\n        logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n        let coders = [];\n        for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n        return pack(writer, coders, value);\n    }\n\n    decode(reader: Reader): any {\n        let count = this.length;\n        if (count === -1) {\n            count = reader.readValue().toNumber();\n\n            // Check that there is *roughly* enough data to ensure\n            // stray random data is not being read as a length. Each\n            // slot requires at least 32 bytes for their value (or 32\n            // bytes as a link to the data). This could use a much\n            // tighter bound, but we are erroring on the side of safety.\n            if (count * 32 > reader._data.length) {\n                logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n                    length: reader._data.length,\n                    count: count\n                });\n            }\n        }\n        let coders = [];\n        for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n        return reader.coerce(this.name, unpack(reader, coders));\n    }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n    constructor(localName: string) {\n        super(\"bool\", \"bool\", localName, false);\n    }\n\n    defaultValue(): boolean {\n        return false;\n    }\n\n    encode(writer: Writer, value: boolean): number {\n        return writer.writeValue(value ? 1: 0);\n    }\n\n    decode(reader: Reader): any {\n        return reader.coerce(this.type, !reader.readValue().isZero());\n    }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n    constructor(type: string, localName: string) {\n       super(type, type, localName, true);\n    }\n\n    defaultValue(): string {\n        return \"0x\";\n    }\n\n    encode(writer: Writer, value: any): number {\n        value = arrayify(value);\n        let length = writer.writeValue(value.length);\n        length += writer.writeBytes(value);\n        return length;\n    }\n\n    decode(reader: Reader): any {\n        return reader.readBytes(reader.readValue().toNumber(), true);\n    }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n    constructor(localName: string) {\n        super(\"bytes\", localName);\n    }\n\n    decode(reader: Reader): any {\n        return reader.coerce(this.name, hexlify(super.decode(reader)));\n    }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n    readonly size: number;\n\n    constructor(size: number, localName: string) {\n        let name = \"bytes\" + String(size);\n        super(name, name, localName, false);\n        this.size = size;\n    }\n\n    defaultValue(): string {\n        return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n    }\n\n    encode(writer: Writer, value: BytesLike): number {\n        let data = arrayify(value);\n        if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n        return writer.writeBytes(data);\n    }\n\n    decode(reader: Reader): any {\n        return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n    }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n    constructor(localName: string) {\n        super(\"null\", \"\", localName, false);\n    }\n\n    defaultValue(): null {\n        return null;\n    }\n\n    encode(writer: Writer, value: any): number {\n        if (value != null) { this._throwError(\"not null\", value); }\n        return writer.writeBytes([ ]);\n    }\n\n    decode(reader: Reader): any {\n        reader.readBytes(0);\n        return reader.coerce(this.name, null);\n    }\n}\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n    NegativeOne,\n    Zero,\n    One,\n    Two,\n    WeiPerEther,\n    MaxUint256,\n    MinInt256,\n    MaxInt256,\n};\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","// NFKC (composed)             // (decomposed)\nexport const EtherSymbol = \"\\u039e\";  // \"\\uD835\\uDF63\";\n","\"use strict\";\n\nexport { AddressZero } from \"./addresses\";\nexport {\n    NegativeOne,\n    Zero,\n    One,\n    Two,\n    WeiPerEther,\n    MaxUint256,\n    MinInt256,\n    MaxInt256\n} from \"./bignumbers\";\nexport { HashZero } from \"./hashes\";\nexport { EtherSymbol } from \"./strings\";\n\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n    readonly size: number;\n    readonly signed: boolean;\n\n    constructor(size: number, signed: boolean, localName: string) {\n        const name = ((signed ? \"int\": \"uint\") + (size * 8));\n        super(name, name, localName, false);\n\n        this.size = size;\n        this.signed = signed;\n    }\n\n    defaultValue(): number {\n        return 0;\n    }\n\n    encode(writer: Writer, value: BigNumberish): number {\n        let v = BigNumber.from(value);\n\n        // Check bounds are safe for encoding\n        let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n        if (this.signed) {\n            let bounds = maxUintValue.mask(this.size * 8 - 1);\n            if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n                this._throwError(\"value out-of-bounds\", value);\n            }\n        } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n            this._throwError(\"value out-of-bounds\", value);\n        }\n\n        v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n        if (this.signed) {\n            v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n        }\n\n        return writer.writeValue(v);\n    }\n\n    decode(reader: Reader): any {\n        let value = reader.readValue().mask(this.size * 8);\n\n        if (this.signed) {\n            value = value.fromTwos(this.size * 8);\n        }\n\n        return reader.coerce(this.name, value);\n    }\n}\n\n","export const version = \"strings/5.4.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n    current  = \"\",\n    NFC      = \"NFC\",\n    NFD      = \"NFD\",\n    NFKC     = \"NFKC\",\n    NFKD     = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n    // A continuation byte was present where there was nothing to continue\n    // - offset = the index the codepoint began in\n    UNEXPECTED_CONTINUE   = \"unexpected continuation byte\",\n\n    // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n    // - offset = the index the codepoint began in\n    BAD_PREFIX            = \"bad codepoint prefix\",\n\n    // The string is too short to process the expected codepoint\n    // - offset = the index the codepoint began in\n    OVERRUN               = \"string overrun\",\n\n    // A missing continuation byte was expected but not found\n    // - offset = the index the continuation byte was expected at\n    MISSING_CONTINUE      = \"missing continuation byte\",\n\n    // The computed code point is outside the range for UTF-8\n    // - offset       = start of this codepoint\n    // - badCodepoint = the computed codepoint; outside the UTF-8 range\n    OUT_OF_RANGE          = \"out of UTF-8 range\",\n\n    // UTF-8 strings may not contain UTF-16 surrogate pairs\n    // - offset       = start of this codepoint\n    // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n    UTF16_SURROGATE       = \"UTF-16 surrogate\",\n\n    // The string is an overlong reperesentation\n    // - offset       = start of this codepoint\n    // - badCodepoint = the computed codepoint; already bounds checked\n    OVERLONG              = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n    return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n    // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n    if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n        let i = 0;\n        for (let o = offset + 1; o < bytes.length; o++) {\n            if (bytes[o] >> 6 !== 0x02) { break; }\n            i++;\n        }\n        return i;\n    }\n\n    // This byte runs us past the end of the string, so just jump to the end\n    // (but the first byte was read already read and therefore skipped)\n    if (reason === Utf8ErrorReason.OVERRUN) {\n        return bytes.length - offset - 1;\n    }\n\n    // Nothing to skip\n    return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n    // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n    if (reason === Utf8ErrorReason.OVERLONG) {\n        output.push(badCodepoint);\n        return 0;\n    }\n\n    // Put the replacement character into the output\n    output.push(0xfffd);\n\n    // Otherwise, process as if ignoring errors\n    return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n    error: errorFunc,\n    ignore: ignoreFunc,\n    replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array<number> {\n    if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n    bytes = arrayify(bytes);\n\n    const result: Array<number> = [];\n    let i = 0;\n\n    // Invalid bytes are ignored\n    while(i < bytes.length) {\n\n        const c = bytes[i++];\n\n        // 0xxx xxxx\n        if (c >> 7 === 0) {\n            result.push(c);\n            continue;\n        }\n\n        // Multibyte; how many bytes left for this character?\n        let extraLength = null;\n        let overlongMask = null;\n\n        // 110x xxxx 10xx xxxx\n        if ((c & 0xe0) === 0xc0) {\n            extraLength = 1;\n            overlongMask = 0x7f;\n\n        // 1110 xxxx 10xx xxxx 10xx xxxx\n        } else if ((c & 0xf0) === 0xe0) {\n            extraLength = 2;\n            overlongMask = 0x7ff;\n\n        // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n        } else if ((c & 0xf8) === 0xf0) {\n            extraLength = 3;\n            overlongMask = 0xffff;\n\n        } else {\n            if ((c & 0xc0) === 0x80) {\n                i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n            } else {\n                i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n            }\n            continue;\n        }\n\n        // Do we have enough bytes in our data?\n        if (i - 1 + extraLength >= bytes.length) {\n            i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n            continue;\n        }\n\n        // Remove the length prefix from the char\n        let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n        for (let j = 0; j < extraLength; j++) {\n            let nextChar = bytes[i];\n\n            // Invalid continuation byte\n            if ((nextChar & 0xc0) != 0x80) {\n                i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n                res = null;\n                break;\n            };\n\n            res = (res << 6) | (nextChar & 0x3f);\n            i++;\n        }\n\n        // See above loop for invalid contimuation byte\n        if (res === null) { continue; }\n\n        // Maximum code point\n        if (res > 0x10ffff) {\n            i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n            continue;\n        }\n\n        // Reserved for UTF-16 surrogate halves\n        if (res >= 0xd800 && res <= 0xdfff) {\n            i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n            continue;\n        }\n\n        // Check for overlong sequences (more bytes than needed)\n        if (res <= overlongMask) {\n            i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n            continue;\n        }\n\n        result.push(res);\n    }\n\n    return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n    if (form != UnicodeNormalizationForm.current) {\n        logger.checkNormalize();\n        str = str.normalize(form);\n    }\n\n    let result = [];\n    for (let i = 0; i < str.length; i++) {\n        const c = str.charCodeAt(i);\n\n        if (c < 0x80) {\n            result.push(c);\n\n        } else if (c < 0x800) {\n            result.push((c >> 6) | 0xc0);\n            result.push((c & 0x3f) | 0x80);\n\n        } else if ((c & 0xfc00) == 0xd800) {\n            i++;\n            const c2 = str.charCodeAt(i);\n\n            if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n                throw new Error(\"invalid utf-8 string\");\n            }\n\n            // Surrogate Pair\n            const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n            result.push((pair >> 18) | 0xf0);\n            result.push(((pair >> 12) & 0x3f) | 0x80);\n            result.push(((pair >> 6) & 0x3f) | 0x80);\n            result.push((pair & 0x3f) | 0x80);\n\n        } else {\n            result.push((c >> 12) | 0xe0);\n            result.push(((c >> 6) & 0x3f) | 0x80);\n            result.push((c & 0x3f) | 0x80);\n        }\n    }\n\n    return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n    const hex = (\"0000\" + value.toString(16));\n    return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n    return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n        if (codePoint < 256) {\n            switch (codePoint) {\n                case 8:  return \"\\\\b\";\n                case 9:  return \"\\\\t\";\n                case 10: return \"\\\\n\"\n                case 13: return \"\\\\r\";\n                case 34: return \"\\\\\\\"\";\n                case 92: return \"\\\\\\\\\";\n            }\n\n            if (codePoint >= 32 && codePoint < 127) {\n                return String.fromCharCode(codePoint);\n            }\n        }\n\n        if (codePoint <= 0xffff) {\n            return escapeChar(codePoint);\n        }\n\n        codePoint -= 0x10000;\n        return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n    }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array<number>): string {\n    return codePoints.map((codePoint) => {\n        if (codePoint <= 0xffff) {\n            return String.fromCharCode(codePoint);\n        }\n        codePoint -= 0x10000;\n        return String.fromCharCode(\n            (((codePoint >> 10) & 0x3ff) + 0xd800),\n            ((codePoint & 0x3ff) + 0xdc00)\n        );\n    }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n    return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array<number> {\n    return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n    // Get the bytes\n    const bytes = toUtf8Bytes(text);\n\n    // Check we have room for null-termination\n    if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n    // Zero-pad (implicitly null-terminates)\n    return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n    const data = arrayify(bytes);\n\n    // Must be 32 bytes with a null-termination\n    if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n    if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n    // Find the null termination\n    let length = 31;\n    while (data[length - 1] === 0) { length--; }\n\n    // Determine the string value\n    return toUtf8String(data.slice(0, length));\n}\n\n","\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n    l: number,          // Lo value\n    h: number,          // High value (less the lo)\n    d?: number,         // Delta/stride (default: 1)\n    s?: number,         // Shift (default: 1)\n    e?: Array<number>   // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array<number> };\n\nfunction bytes2(data: string): Array<number> {\n    if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n    let result = [];\n    for (let i = 0; i < data.length; i += 4) {\n        result.push(parseInt(data.substring(i, i + 4), 16));\n    }\n    return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array<number>): Table {\n    if (!func) {\n        func = function(value: string) { return [ parseInt(value, 16) ]; }\n    }\n\n    let lo = 0;\n\n    let result: Table = { };\n    data.split(\",\").forEach((pair) => {\n        let comps = pair.split(\":\");\n        lo += parseInt(comps[0], 16);\n        result[lo] = func(comps[1]);\n    });\n\n    return result;\n}\n\nfunction createRangeTable(data: string): Array<Ranged> {\n    let hi = 0;\n    return data.split(\",\").map((v) => {\n        let comps = v.split(\"-\");\n        if (comps.length === 1) {\n            comps[1] = \"0\";\n        } else if (comps[1] === \"\") {\n            comps[1] = \"1\";\n        }\n\n        let lo = hi + parseInt(comps[0], 16);\n        hi = parseInt(comps[1], 16);\n        return { l: lo, h: hi };\n    });\n}\n\nfunction matchMap(value: number, ranges: Array<Ranged>): Ranged {\n    let lo = 0;\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        lo += range.l;\n        if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n            if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n            return range;\n        }\n    }\n    return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array<Ranged> = [\n    { h: 25, s: 32, l: 65 },\n    { h: 30, s: 32, e: [ 23 ], l: 127 },\n    { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n    { h: 14, s: 1, l: 57, d: 2 },\n    { h: 44, s: 1, l: 17, d: 2 },\n    { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n    { h: 16, s: 1, l: 68, d: 2 },\n    { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n    { h: 26, s: 32, e: [ 17 ], l: 435 },\n    { h: 22, s: 1, l: 71, d: 2 },\n    { h: 15, s: 80, l: 40 },\n    { h: 31, s: 32, l: 16 },\n    { h: 32, s: 1, l: 80, d: 2 },\n    { h: 52, s: 1, l: 42, d: 2 },\n    { h: 12, s: 1, l: 55, d: 2 },\n    { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n    { h: 14, s: 1, l: 48, d: 2 },\n    { h: 37, s: 48, l: 49 },\n    { h: 148, s: 1, l: 6351, d: 2 },\n    { h: 88, s: 1, l: 160, d: 2 },\n    { h: 15, s: 16, l: 704 },\n    { h: 25, s: 26, l: 854 },\n    { h: 25, s: 32, l: 55915 },\n    { h: 37, s: 40, l: 1247 },\n    { h: 25, s: -119711, l: 53248 },\n    { h: 25, s: -119763, l: 52 },\n    { h: 25, s: -119815, l: 52 },\n    { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n    { h: 25, s: -119919, l: 52 },\n    { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n    { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n    { h: 25, s: -120075, l: 52 },\n    { h: 25, s: -120127, l: 52 },\n    { h: 25, s: -120179, l: 52 },\n    { h: 25, s: -120231, l: 52 },\n    { h: 25, s: -120283, l: 52 },\n    { h: 25, s: -120335, l: 52 },\n    { h: 24, s: -119543, e: [ 17 ], l: 56 },\n    { h: 24, s: -119601, e: [ 17 ], l: 58 },\n    { h: 24, s: -119659, e: [ 17 ], l: 58 },\n    { h: 24, s: -119717, e: [ 17 ], l: 58 },\n    { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array<Array<number>>): Array<number> {\n    return values.reduce((accum, value) => {\n        value.forEach((value) => { accum.push(value); });\n        return accum;\n    }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n    return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array<number> {\n    let range = matchMap(codepoint, Table_B_2_ranges);\n    if (range) { return [ codepoint + range.s ]; }\n\n    let codes = Table_B_2_lut_abs[codepoint];\n    if (codes) { return codes; }\n\n    let shift = Table_B_2_lut_rel[codepoint];\n    if (shift) { return [ codepoint + shift[0] ]; }\n\n    let complex = Table_B_2_complex[codepoint];\n    if (complex) { return complex; }\n\n    return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n    return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n    // This allows platforms with incomplete normalize to bypass\n    // it for very basic names which the built-in toLowerCase\n    // will certainly handle correctly\n    if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n    // Get the code points (keeping the current normalization)\n    let codes = toUtf8CodePoints(value);\n\n    codes = flatten(codes.map((code) => {\n        // Substitute Table B.1 (Maps to Nothing)\n        if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n        if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n        // Substitute Table B.2 (Case Folding)\n        let codesTableB2 = _nameprepTableB2(code);\n        if (codesTableB2) { return codesTableB2; }\n\n        // No Substitution\n        return [ code ];\n    }));\n\n    // Normalize using form KC\n    codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n    // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n    codes.forEach((code) => {\n        if (_nameprepTableC(code)) {\n            throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n        }\n    });\n\n    // Prohibit Unassigned Code Points (Table A.1)\n    codes.forEach((code) => {\n        if (_nameprepTableA1(code)) {\n            throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n        }\n    });\n\n    // IDNA extras\n    let name = _toUtf8String(codes);\n\n    // IDNA: 4.2.3.1\n    if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n        throw new Error(\"invalid hyphen\");\n    }\n\n    // IDNA: 4.2.4\n    if (name.length > 63) { throw new Error(\"too long\"); }\n\n\n\n    return name;\n}\n\n","\"use strict\";\n\nimport { formatBytes32String, parseBytes32String } from \"./bytes32\";\nimport { nameprep } from \"./idna\";\nimport { _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, UnicodeNormalizationForm, Utf8ErrorFunc, Utf8ErrorFuncs, Utf8ErrorReason } from \"./utf8\";\n\nexport {\n    _toEscapedUtf8String,\n    toUtf8Bytes,\n    toUtf8CodePoints,\n    toUtf8String,\n\n    Utf8ErrorFunc,\n    Utf8ErrorFuncs,\n    Utf8ErrorReason,\n\n    UnicodeNormalizationForm,\n\n    formatBytes32String,\n    parseBytes32String,\n\n    nameprep\n}\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n    constructor(localName: string) {\n        super(\"string\", localName);\n    }\n\n    defaultValue(): string {\n        return \"\";\n    }\n\n    encode(writer: Writer, value: any): number {\n        return super.encode(writer, toUtf8Bytes(value));\n    }\n\n    decode(reader: Reader): any {\n        return toUtf8String(super.decode(reader));\n    }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n    readonly coders: Array<Coder>;\n\n    constructor(coders: Array<Coder>, localName: string) {\n        let dynamic = false;\n        const types: Array<string> = [];\n        coders.forEach((coder) => {\n            if (coder.dynamic) { dynamic = true; }\n            types.push(coder.type);\n        });\n        const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n        super(\"tuple\", type, localName, dynamic);\n        this.coders = coders;\n    }\n\n    defaultValue(): any {\n        const values: any = [ ];\n        this.coders.forEach((coder) => {\n            values.push(coder.defaultValue());\n        });\n\n        // We only output named properties for uniquely named coders\n        const uniqueNames = this.coders.reduce((accum, coder) => {\n            const name = coder.localName;\n            if (name) {\n                if (!accum[name]) { accum[name] = 0; }\n                accum[name]++;\n            }\n            return accum;\n        }, <{ [ name: string ]: number }>{ });\n\n        // Add named values\n        this.coders.forEach((coder: Coder, index: number) => {\n            let name = coder.localName;\n            if (!name || uniqueNames[name] !== 1) { return; }\n\n            if (name === \"length\") { name = \"_length\"; }\n\n            if (values[name] != null) { return; }\n\n            values[name] = values[index];\n        });\n\n        return Object.freeze(values);\n    }\n\n    encode(writer: Writer, value: Array<any> | { [ name: string ]: any }): number {\n        return pack(writer, this.coders, value);\n    }\n\n    decode(reader: Reader): any {\n        return reader.coerce(this.name, unpack(reader, this.coders));\n    }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n    readonly coerceFunc: CoerceFunc;\n\n    constructor(coerceFunc?: CoerceFunc) {\n        logger.checkNew(new.target, AbiCoder);\n        defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n    }\n\n    _getCoder(param: ParamType): Coder {\n\n        switch (param.baseType) {\n            case \"address\":\n                return new AddressCoder(param.name);\n            case \"bool\":\n                return new BooleanCoder(param.name);\n            case \"string\":\n                return new StringCoder(param.name);\n            case \"bytes\":\n                return new BytesCoder(param.name);\n            case \"array\":\n                return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n            case \"tuple\":\n                return new TupleCoder((param.components || []).map((component) => {\n                    return this._getCoder(component);\n                }), param.name);\n            case \"\":\n                return new NullCoder(param.name);\n        }\n\n        // u?int[0-9]*\n        let match = param.type.match(paramTypeNumber);\n        if (match) {\n            let size = parseInt(match[2] || \"256\");\n            if (size === 0 || size > 256 || (size % 8) !== 0) {\n                logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n            }\n            return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n        }\n\n        // bytes[0-9]+\n        match = param.type.match(paramTypeBytes);\n        if (match) {\n            let size = parseInt(match[1]);\n            if (size === 0 || size > 32) {\n                logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n            }\n            return new FixedBytesCoder(size, param.name);\n        }\n\n        return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n    }\n\n    _getWordSize(): number { return 32; }\n\n    _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n        return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n    }\n\n    _getWriter(): Writer {\n        return new Writer(this._getWordSize());\n    }\n\n    getDefaultValue(types: ReadonlyArray<string | ParamType>): Result {\n        const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n        const coder = new TupleCoder(coders, \"_\");\n        return coder.defaultValue();\n    }\n\n    encode(types: ReadonlyArray<string | ParamType>, values: ReadonlyArray<any>): string {\n        if (types.length !== values.length) {\n            logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n                count: { types: types.length, values: values.length },\n                value: { types: types, values: values }\n            });\n        }\n\n        const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n        const coder = (new TupleCoder(coders, \"_\"));\n\n        const writer = this._getWriter();\n        coder.encode(writer, values);\n        return writer.data;\n    }\n\n    decode(types: ReadonlyArray<string | ParamType>, data: BytesLike, loose?: boolean): Result {\n        const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n        const coder = new TupleCoder(coders, \"_\");\n        return coder.decode(this._getReader(arrayify(data), loose));\n    }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n    return keccak256(toUtf8Bytes(text));\n}\n","export const version = \"hash/5.4.0\";\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\n\nexport function isValidName(name: string): boolean {\n    try {\n        const comps = name.split(\".\");\n        for (let i = 0; i < comps.length; i++) {\n            if (nameprep(comps[i]).length === 0) {\n                throw new Error(\"empty\")\n            }\n        }\n        return true;\n    } catch (error) { }\n    return false;\n}\n\nexport function namehash(name: string): string {\n    /* istanbul ignore if */\n    if (typeof(name) !== \"string\") {\n        logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n    }\n\n    let current = name;\n    let result: string | Uint8Array = Zeros;\n    while (current.length) {\n        const partition = current.match(Partition);\n        if (partition == null || partition[2] === \"\") {\n            logger.throwArgumentError(\"invalid ENS address; missing component\", \"name\", name);\n        }\n        const label = toUtf8Bytes(nameprep(partition[3]));\n        result = keccak256(concat([result, keccak256(label)]));\n\n        current = partition[2] || \"\";\n    }\n\n    return hexlify(result);\n}\n\n","import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n    if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n    return keccak256(concat([\n        toUtf8Bytes(messagePrefix),\n        toUtf8Bytes(String(message.length)),\n        message\n    ]));\n}\n\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n    const bytes = arrayify(value);\n    const padOffset = bytes.length % 32\n    if (padOffset) {\n        return hexConcat([ bytes, padding.slice(padOffset) ]);\n    }\n    return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record<string, string> = {\n    name: \"string\",\n    version: \"string\",\n    chainId: \"uint256\",\n    verifyingContract: \"address\",\n    salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array<string> = [\n    \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n    return function (value: any){\n        if (typeof(value) !== \"string\") {\n            logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n        }\n        return value;\n    }\n}\n\nconst domainChecks: Record<string, (value: any) => any> = {\n    name: checkString(\"name\"),\n    version: checkString(\"version\"),\n    chainId: function(value: any) {\n        try {\n            return BigNumber.from(value).toString()\n        } catch (error) { }\n        return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n    },\n    verifyingContract: function(value: any) {\n        try {\n            return getAddress(value).toLowerCase();\n        } catch (error) { }\n        return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n    },\n    salt: function(value: any) {\n        try {\n            const bytes = arrayify(value);\n            if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n            return hexlify(bytes);\n        } catch (error) { }\n        return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n    }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n    // intXX and uintXX\n    {\n        const match = type.match(/^(u?)int(\\d*)$/);\n        if (match) {\n            const signed = (match[1] === \"\");\n\n            const width = parseInt(match[2] || \"256\");\n            if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n                logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n            }\n\n            const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n            const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n            return function(value: BigNumberish) {\n                const v = BigNumber.from(value);\n\n                if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n                    logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n                }\n\n                return hexZeroPad(v.toTwos(256).toHexString(), 32);\n            };\n        }\n    }\n\n    // bytesXX\n    {\n        const match = type.match(/^bytes(\\d+)$/);\n        if (match) {\n            const width = parseInt(match[1]);\n            if (width === 0 || width > 32 || match[1] !== String(width)) {\n                logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n            }\n\n            return function(value: BytesLike) {\n                const bytes = arrayify(value);\n                if (bytes.length !== width) {\n                    logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n                }\n                return hexPadRight(value);\n            };\n        }\n    }\n\n    switch (type) {\n        case \"address\": return function(value: string) {\n            return hexZeroPad(getAddress(value), 32);\n        };\n        case \"bool\": return function(value: boolean) {\n            return ((!value) ? hexFalse: hexTrue);\n        };\n        case \"bytes\": return function(value: BytesLike) {\n            return keccak256(value);\n        };\n        case \"string\": return function(value: string) {\n            return id(value);\n        };\n    }\n\n    return null;\n}\n\nfunction encodeType(name: string, fields: Array<TypedDataField>): string {\n    return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n    readonly primaryType: string;\n    readonly types: Record<string, Array<TypedDataField>>;\n\n    readonly _encoderCache: Record<string, (value: any) => string>;\n    readonly _types: Record<string, string>;\n\n    constructor(types: Record<string, Array<TypedDataField>>) {\n        defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n        defineReadOnly(this, \"_encoderCache\", { });\n        defineReadOnly(this, \"_types\", { });\n\n        // Link struct types to their direct child structs\n        const links: Record<string, Record<string, boolean>> = { };\n\n        // Link structs to structs which contain them as a child\n        const parents: Record<string, Array<string>> = { };\n\n        // Link all subtypes within a given struct\n        const subtypes: Record<string, Record<string, boolean>> = { };\n\n        Object.keys(types).forEach((type) => {\n            links[type] = { };\n            parents[type] = [ ];\n            subtypes[type] = { }\n        });\n\n        for (const name in types) {\n\n            const uniqueNames: Record<string, boolean> = { };\n\n            types[name].forEach((field) => {\n\n                // Check each field has a unique name\n                if (uniqueNames[field.name]) {\n                    logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n                }\n                uniqueNames[field.name] = true;\n\n                // Get the base type (drop any array specifiers)\n                const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n                if (baseType === name) {\n                    logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n                }\n\n                // Is this a base encoding type?\n                const encoder = getBaseEncoder(baseType);\n                if (encoder) { return ;}\n\n                if (!parents[baseType]) {\n                    logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n                }\n\n                // Add linkage\n                parents[baseType].push(name);\n                links[name][baseType] = true;\n            });\n        }\n\n        // Deduce the primary type\n        const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n        if (primaryTypes.length === 0) {\n            logger.throwArgumentError(\"missing primary type\", \"types\", types);\n        } else if (primaryTypes.length > 1) {\n            logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n        }\n\n        defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n        // Check for circular type references\n        function checkCircular(type: string, found: Record<string, boolean>) {\n            if (found[type]) {\n                logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n            }\n\n            found[type] = true;\n\n            Object.keys(links[type]).forEach((child) => {\n                if (!parents[child]) { return; }\n\n                // Recursively check children\n                checkCircular(child, found);\n\n                // Mark all ancestors as having this decendant\n                Object.keys(found).forEach((subtype) => {\n                    subtypes[subtype][child] = true;\n                });\n            });\n\n            delete found[type];\n        }\n        checkCircular(this.primaryType, { });\n\n        // Compute each fully describe type\n        for (const name in subtypes) {\n            const st = Object.keys(subtypes[name]);\n            st.sort();\n            this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n        }\n    }\n\n    getEncoder(type: string): (value: any) => string {\n        let encoder = this._encoderCache[type];\n        if (!encoder) {\n            encoder = this._encoderCache[type] = this._getEncoder(type);\n        }\n        return encoder;\n    }\n\n    _getEncoder(type: string): (value: any) => string {\n\n        // Basic encoder type (address, bool, uint256, etc)\n        {\n            const encoder = getBaseEncoder(type);\n            if (encoder) { return encoder; }\n        }\n\n        // Array\n        const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n        if (match) {\n            const subtype = match[1];\n            const subEncoder = this.getEncoder(subtype);\n            const length = parseInt(match[3]);\n            return (value: Array<any>) => {\n                if (length >= 0 && value.length !== length) {\n                    logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n                }\n\n                let result = value.map(subEncoder);\n                if (this._types[subtype]) {\n                    result = result.map(keccak256);\n                }\n\n                return keccak256(hexConcat(result));\n            };\n        }\n\n        // Struct\n        const fields = this.types[type];\n        if (fields) {\n            const encodedType = id(this._types[type]);\n            return (value: Record<string, any>) => {\n                const values = fields.map(({ name, type }) => {\n                    const result = this.getEncoder(type)(value[name]);\n                    if (this._types[type]) { return keccak256(result); }\n                    return result;\n                });\n                values.unshift(encodedType);\n                return hexConcat(values);\n            }\n        }\n\n        return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n    }\n\n    encodeType(name: string): string {\n        const result = this._types[name];\n        if (!result) {\n            logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n        }\n        return result;\n    }\n\n    encodeData(type: string, value: any): string {\n        return this.getEncoder(type)(value);\n    }\n\n    hashStruct(name: string, value: Record<string, any>): string {\n        return keccak256(this.encodeData(name, value));\n    }\n\n    encode(value: Record<string, any>): string {\n        return this.encodeData(this.primaryType, value);\n    }\n\n    hash(value: Record<string, any>): string {\n        return this.hashStruct(this.primaryType, value);\n    }\n\n    _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n        // Basic encoder type (address, bool, uint256, etc)\n        {\n            const encoder = getBaseEncoder(type);\n            if (encoder) { return callback(type, value); }\n        }\n\n        // Array\n        const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n        if (match) {\n            const subtype = match[1];\n            const length = parseInt(match[3]);\n            if (length >= 0 && value.length !== length) {\n                logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n            }\n            return value.map((v: any) => this._visit(subtype, v, callback));\n        }\n\n        // Struct\n        const fields = this.types[type];\n        if (fields) {\n            return fields.reduce((accum, { name, type }) => {\n                accum[name] = this._visit(type, value[name], callback);\n                return accum;\n            }, <Record<string, any>>{});\n        }\n\n        return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n    }\n\n    visit(value: Record<string, any>, callback: (type: string, data: any) => any): any {\n        return this._visit(this.primaryType, value, callback);\n    }\n\n    static from(types: Record<string, Array<TypedDataField>>): TypedDataEncoder {\n        return new TypedDataEncoder(types);\n    }\n\n    static getPrimaryType(types: Record<string, Array<TypedDataField>>): string {\n        return TypedDataEncoder.from(types).primaryType;\n    }\n\n    static hashStruct(name: string, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n        return TypedDataEncoder.from(types).hashStruct(name, value);\n    }\n\n    static hashDomain(domain: TypedDataDomain): string {\n        const domainFields: Array<TypedDataField> = [ ];\n        for (const name in domain) {\n            const type = domainFieldTypes[name];\n            if (!type) {\n                logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n            }\n            domainFields.push({ name, type });\n        }\n\n        domainFields.sort((a, b) => {\n            return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n        });\n\n        return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n    }\n\n    static encode(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n        return hexConcat([\n            \"0x1901\",\n            TypedDataEncoder.hashDomain(domain),\n            TypedDataEncoder.from(types).hash(value)\n        ]);\n    }\n\n    static hash(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n        return keccak256(TypedDataEncoder.encode(domain, types, value));\n    }\n\n    // Replaces all address types with ENS names with their looked up address\n    static async resolveNames(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, resolveName: (name: string) => Promise<string>): Promise<{ domain: TypedDataDomain, value: any }> {\n        // Make a copy to isolate it from the object passed in\n        domain = shallowCopy(domain);\n\n        // Look up all ENS names\n        const ensCache: Record<string, string> = { };\n\n        // Do we need to look up the domain's verifyingContract?\n        if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n            ensCache[domain.verifyingContract] = \"0x\";\n        }\n\n        // We are going to use the encoder to visit all the base values\n        const encoder = TypedDataEncoder.from(types);\n\n        // Get a list of all the addresses\n        encoder.visit(value, (type: string, value: any) => {\n            if (type === \"address\" && !isHexString(value, 20)) {\n                ensCache[value] = \"0x\";\n            }\n            return value;\n        });\n\n        // Lookup each name\n        for (const name in ensCache) {\n            ensCache[name] = await resolveName(name);\n        }\n\n        // Replace the domain verifyingContract if needed\n        if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n            domain.verifyingContract = ensCache[domain.verifyingContract];\n        }\n\n        // Replace all ENS names with their address\n        value = encoder.visit(value, (type: string, value: any) => {\n            if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n            return value;\n        });\n\n        return { domain, value };\n    }\n\n    static getPayload(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): any {\n        // Validate the domain fields\n        TypedDataEncoder.hashDomain(domain);\n\n        // Derive the EIP712Domain Struct reference type\n        const domainValues: Record<string, any> = { };\n        const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n        domainFieldNames.forEach((name) => {\n            const value = (<any>domain)[name];\n            if (value == null) { return; }\n            domainValues[name] = domainChecks[name](value);\n            domainTypes.push({ name, type: domainFieldTypes[name] });\n        });\n\n        const encoder = TypedDataEncoder.from(types);\n\n        const typesWithDomain = shallowCopy(types);\n        if (typesWithDomain.EIP712Domain) {\n            logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n        } else {\n            typesWithDomain.EIP712Domain = domainTypes;\n        }\n\n        // Validate the data structures and types\n        encoder.encode(value);\n\n        return {\n            types: typesWithDomain,\n            domain: domainValues,\n            primaryType: encoder.primaryType,\n            message: encoder.visit(value, (type: string, value: any) => {\n\n                // bytes\n                if (type.match(/^bytes(\\d*)/)) {\n                    return hexlify(arrayify(value));\n                }\n\n                // uint or int\n                if (type.match(/^u?int/)) {\n                    return BigNumber.from(value).toString();\n                }\n\n                switch (type) {\n                    case \"address\":\n                        return value.toLowerCase();\n                    case \"bool\":\n                        return !!value;\n                    case \"string\":\n                        if (typeof(value) !== \"string\") {\n                            logger.throwArgumentError(`invalid string`, \"value\", value);\n                        }\n                        return value;\n                }\n\n                return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n            })\n        };\n    }\n}\n\n","\"use strict\";\n\nimport { id } from \"./id\";\nimport { isValidName, namehash } from \"./namehash\";\nimport { hashMessage, messagePrefix } from \"./message\";\n\nimport { TypedDataEncoder as _TypedDataEncoder } from \"./typed-data\";\n\nexport {\n    id,\n\n    namehash,\n    isValidName,\n\n    messagePrefix,\n    hashMessage,\n\n    _TypedDataEncoder,\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description<LogDescription> {\n    readonly eventFragment: EventFragment;\n    readonly name: string;\n    readonly signature: string;\n    readonly topic: string;\n    readonly args: Result\n}\n\nexport class TransactionDescription extends Description<TransactionDescription> {\n    readonly functionFragment: FunctionFragment;\n    readonly name: string;\n    readonly args: Result;\n    readonly signature: string;\n    readonly sighash: string;\n    readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description<ErrorDescription> {\n    readonly errorFragment: ErrorFragment;\n    readonly name: string;\n    readonly args: Result;\n    readonly signature: string;\n    readonly sighash: string;\n}\n\nexport class Indexed extends Description<Indexed> {\n    readonly hash: string;\n    readonly _isIndexed: boolean;\n\n    static isIndexed(value: any): value is Indexed {\n        return !!(value && value._isIndexed);\n    }\n}\n\nconst BuiltinErrors: Record<string, { signature: string, inputs: Array<string>, name: string, reason?: boolean }> = {\n    \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n    \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n    const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n    (<any>wrap).error = error;\n    return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array<ParamType>): void {\n    params.reduce((accum, param) => {\n        if (param.name) {\n            if (accum[param.name]) {\n                logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n            }\n            accum[param.name] = true;\n        }\n        return accum;\n    }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n    readonly fragments: ReadonlyArray<Fragment>;\n\n    readonly errors: { [ name: string ]: ErrorFragment };\n    readonly events: { [ name: string ]: EventFragment };\n    readonly functions: { [ name: string ]: FunctionFragment };\n    readonly structs: { [ name: string ]: any };\n\n    readonly deploy: ConstructorFragment;\n\n    readonly _abiCoder: AbiCoder;\n\n    readonly _isInterface: boolean;\n\n    constructor(fragments: string | ReadonlyArray<Fragment | JsonFragment | string>) {\n        logger.checkNew(new.target, Interface);\n\n        let abi: ReadonlyArray<Fragment | JsonFragment | string> = [ ];\n        if (typeof(fragments) === \"string\") {\n            abi = JSON.parse(fragments);\n        } else {\n            abi = fragments;\n        }\n\n        defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n            return Fragment.from(fragment);\n        }).filter((fragment) => (fragment != null)));\n\n        defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n        defineReadOnly(this, \"functions\", { });\n        defineReadOnly(this, \"errors\", { });\n        defineReadOnly(this, \"events\", { });\n        defineReadOnly(this, \"structs\", { });\n\n        // Add all fragments by their signature\n        this.fragments.forEach((fragment) => {\n            let bucket: { [ name: string ]: Fragment } = null;\n            switch (fragment.type) {\n                case \"constructor\":\n                    if (this.deploy) {\n                        logger.warn(\"duplicate definition - constructor\");\n                        return;\n                    }\n                    //checkNames(fragment, \"input\", fragment.inputs);\n                    defineReadOnly(this, \"deploy\", <ConstructorFragment>fragment);\n                    return;\n                case \"function\":\n                    //checkNames(fragment, \"input\", fragment.inputs);\n                    //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n                    bucket = this.functions;\n                    break;\n                case \"event\":\n                    //checkNames(fragment, \"input\", fragment.inputs);\n                    bucket = this.events;\n                    break;\n                case \"error\":\n                    bucket = this.errors;\n                    break;\n                default:\n                    return;\n            }\n\n            let signature = fragment.format();\n            if (bucket[signature]) {\n                logger.warn(\"duplicate definition - \" + signature);\n                return;\n            }\n\n            bucket[signature] = fragment;\n        });\n\n        // If we do not have a constructor add a default\n        if (!this.deploy) {\n            defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n                payable: false,\n                type: \"constructor\"\n            }));\n        }\n\n        defineReadOnly(this, \"_isInterface\", true);\n    }\n\n    format(format?: string): string | Array<string> {\n        if (!format) { format = FormatTypes.full; }\n        if (format === FormatTypes.sighash) {\n            logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n        }\n\n        const abi = this.fragments.map((fragment) => fragment.format(format));\n\n        // We need to re-bundle the JSON fragments a bit\n        if (format === FormatTypes.json) {\n             return JSON.stringify(abi.map((j) => JSON.parse(j)));\n        }\n\n        return abi;\n    }\n\n    // Sub-classes can override these to handle other blockchains\n    static getAbiCoder(): AbiCoder {\n        return defaultAbiCoder;\n    }\n\n    static getAddress(address: string): string {\n        return getAddress(address);\n    }\n\n    static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n        return hexDataSlice(id(fragment.format()), 0, 4);\n    }\n\n    static getEventTopic(eventFragment: EventFragment): string {\n        return id(eventFragment.format());\n    }\n\n    // Find a function definition by any means necessary (unless it is ambiguous)\n    getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n        if (isHexString(nameOrSignatureOrSighash)) {\n            for (const name in this.functions) {\n                if (nameOrSignatureOrSighash === this.getSighash(name)) {\n                    return this.functions[name];\n                }\n            }\n            logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n        }\n\n        // It is a bare name, look up the function (will return null if ambiguous)\n        if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n            const name = nameOrSignatureOrSighash.trim();\n            const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n            if (matching.length === 0) {\n                logger.throwArgumentError(\"no matching function\", \"name\", name);\n            } else if (matching.length > 1) {\n                logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n            }\n\n            return this.functions[matching[0]];\n        }\n\n        // Normlize the signature and lookup the function\n        const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n        if (!result) {\n            logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n        }\n        return result;\n    }\n\n    // Find an event definition by any means necessary (unless it is ambiguous)\n    getEvent(nameOrSignatureOrTopic: string): EventFragment {\n        if (isHexString(nameOrSignatureOrTopic)) {\n            const topichash = nameOrSignatureOrTopic.toLowerCase();\n            for (const name in this.events) {\n                if (topichash === this.getEventTopic(name)) {\n                    return this.events[name];\n                }\n            }\n            logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n        }\n\n        // It is a bare name, look up the function (will return null if ambiguous)\n        if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n            const name = nameOrSignatureOrTopic.trim();\n            const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n            if (matching.length === 0) {\n                logger.throwArgumentError(\"no matching event\", \"name\", name);\n            } else if (matching.length > 1) {\n                logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n            }\n\n            return this.events[matching[0]];\n        }\n\n        // Normlize the signature and lookup the function\n        const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n        if (!result) {\n            logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n        }\n        return result;\n    }\n\n    // Find a function definition by any means necessary (unless it is ambiguous)\n    getError(nameOrSignatureOrSighash: string): ErrorFragment {\n        if (isHexString(nameOrSignatureOrSighash)) {\n            const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n            for (const name in this.errors) {\n                const error = this.errors[name];\n                if (nameOrSignatureOrSighash === getSighash(error)) {\n                    return this.errors[name];\n                }\n            }\n            logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n        }\n\n        // It is a bare name, look up the function (will return null if ambiguous)\n        if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n            const name = nameOrSignatureOrSighash.trim();\n            const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n            if (matching.length === 0) {\n                logger.throwArgumentError(\"no matching error\", \"name\", name);\n            } else if (matching.length > 1) {\n                logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n            }\n\n            return this.errors[matching[0]];\n        }\n\n        // Normlize the signature and lookup the function\n        const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n        if (!result) {\n            logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n        }\n        return result;\n    }\n\n    // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n    getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n        if (typeof(fragment) === \"string\") {\n            try {\n                fragment = this.getFunction(fragment);\n            } catch (error) {\n                try {\n                    fragment = this.getError(<string>fragment);\n                } catch (_) {\n                    throw error;\n                }\n            }\n        }\n\n        return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n    }\n\n    // Get the topic (the bytes32 hash) used by Solidity to identify an event\n    getEventTopic(eventFragment: EventFragment | string): string {\n        if (typeof(eventFragment) === \"string\") {\n            eventFragment = this.getEvent(eventFragment);\n        }\n\n        return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n    }\n\n\n    _decodeParams(params: ReadonlyArray<ParamType>, data: BytesLike): Result {\n        return this._abiCoder.decode(params, data)\n    }\n\n    _encodeParams(params: ReadonlyArray<ParamType>, values: ReadonlyArray<any>): string {\n        return this._abiCoder.encode(params, values)\n    }\n\n    encodeDeploy(values?: ReadonlyArray<any>): string {\n        return this._encodeParams(this.deploy.inputs, values || [ ]);\n    }\n\n    decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n        if (typeof(fragment) === \"string\") {\n            fragment = this.getError(fragment);\n        }\n\n        const bytes = arrayify(data);\n\n        if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n            logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n        }\n\n        return this._decodeParams(fragment.inputs, bytes.slice(4));\n    }\n\n    encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray<any>): string {\n        if (typeof(fragment) === \"string\") {\n            fragment = this.getError(fragment);\n        }\n\n        return hexlify(concat([\n            this.getSighash(fragment),\n            this._encodeParams(fragment.inputs, values || [ ])\n        ]));\n    }\n\n    // Decode the data for a function call (e.g. tx.data)\n    decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n        if (typeof(functionFragment) === \"string\") {\n            functionFragment = this.getFunction(functionFragment);\n        }\n\n        const bytes = arrayify(data);\n\n        if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n            logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n        }\n\n        return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n    }\n\n    // Encode the data for a function call (e.g. tx.data)\n    encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray<any>): string {\n        if (typeof(functionFragment) === \"string\") {\n            functionFragment = this.getFunction(functionFragment);\n        }\n\n        return hexlify(concat([\n            this.getSighash(functionFragment),\n            this._encodeParams(functionFragment.inputs, values || [ ])\n        ]));\n    }\n\n    // Decode the result from a function call (e.g. from eth_call)\n    decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n        if (typeof(functionFragment) === \"string\") {\n            functionFragment = this.getFunction(functionFragment);\n        }\n\n        let bytes = arrayify(data);\n\n        let reason: string = null;\n        let errorArgs: Result = null;\n        let errorName: string = null;\n        let errorSignature: string = null;\n        switch (bytes.length % this._abiCoder._getWordSize()) {\n            case 0:\n                try {\n                    return this._abiCoder.decode(functionFragment.outputs, bytes);\n                } catch (error) { }\n                break;\n\n            case 4: {\n                const selector = hexlify(bytes.slice(0, 4));\n                const builtin = BuiltinErrors[selector];\n                if (builtin) {\n                    errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n                    errorName = builtin.name;\n                    errorSignature = builtin.signature;\n                    if (builtin.reason) { reason = errorArgs[0]; }\n                } else {\n                    try {\n                        const error = this.getError(selector);\n                        errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n                        errorName = error.name;\n                        errorSignature = error.format();\n                    } catch (error) {\n                        console.log(error);\n                    }\n                }\n                break;\n            }\n        }\n\n        return logger.throwError(\"call revert exception\", Logger.errors.CALL_EXCEPTION, {\n            method: functionFragment.format(),\n            errorArgs, errorName, errorSignature, reason\n        });\n    }\n\n    // Encode the result for a function call (e.g. for eth_call)\n    encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray<any>): string {\n        if (typeof(functionFragment) === \"string\") {\n            functionFragment = this.getFunction(functionFragment);\n        }\n\n        return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n    }\n\n    // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n    encodeFilterTopics(eventFragment: EventFragment, values: ReadonlyArray<any>): Array<string | Array<string>> {\n        if (typeof(eventFragment) === \"string\") {\n            eventFragment = this.getEvent(eventFragment);\n        }\n\n        if (values.length > eventFragment.inputs.length) {\n            logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n                argument: \"values\",\n                value: values\n            })\n        }\n\n        let topics: Array<string | Array<string>> = [];\n        if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n        const encodeTopic = (param: ParamType, value: any): string => {\n            if (param.type === \"string\") {\n                 return id(value);\n            } else if (param.type === \"bytes\") {\n                 return keccak256(hexlify(value));\n            }\n\n            // Check addresses are valid\n            if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n            return hexZeroPad(hexlify(value), 32);\n        };\n\n        values.forEach((value, index) => {\n\n            let param = eventFragment.inputs[index];\n\n            if (!param.indexed) {\n                if (value != null) {\n                    logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n                }\n                return;\n            }\n\n            if (value == null) {\n                topics.push(null);\n            } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n                logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n            } else if (Array.isArray(value)) {\n                topics.push(value.map((value) => encodeTopic(param, value)));\n            } else {\n                topics.push(encodeTopic(param, value));\n            }\n        });\n\n        // Trim off trailing nulls\n        while (topics.length && topics[topics.length - 1] === null) {\n            topics.pop();\n        }\n\n        return topics;\n    }\n\n    encodeEventLog(eventFragment: EventFragment, values: ReadonlyArray<any>): { data: string, topics: Array<string> } {\n        if (typeof(eventFragment) === \"string\") {\n            eventFragment = this.getEvent(eventFragment);\n        }\n\n        const topics: Array<string> = [ ];\n\n        const dataTypes: Array<ParamType> = [ ];\n        const dataValues: Array<string> = [ ];\n\n        if (!eventFragment.anonymous) {\n            topics.push(this.getEventTopic(eventFragment));\n        }\n\n        if (values.length !== eventFragment.inputs.length) {\n            logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n        }\n\n        eventFragment.inputs.forEach((param, index) => {\n            const value = values[index];\n            if (param.indexed) {\n                if (param.type === \"string\") {\n                    topics.push(id(value))\n                } else if (param.type === \"bytes\") {\n                    topics.push(keccak256(value))\n                } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n                    // @TOOD\n                    throw new Error(\"not implemented\");\n                } else {\n                    topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n                }\n            } else {\n                dataTypes.push(param);\n                dataValues.push(value);\n            }\n        });\n\n        return {\n            data: this._abiCoder.encode(dataTypes , dataValues),\n            topics: topics\n        };\n    }\n\n    // Decode a filter for the event and the search criteria\n    decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray<string>): Result {\n        if (typeof(eventFragment) === \"string\") {\n            eventFragment = this.getEvent(eventFragment);\n        }\n\n        if (topics != null && !eventFragment.anonymous) {\n            let topicHash = this.getEventTopic(eventFragment);\n            if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n                logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n            }\n            topics = topics.slice(1);\n        }\n\n        let indexed: Array<ParamType> = [];\n        let nonIndexed: Array<ParamType> = [];\n        let dynamic: Array<boolean> = [];\n\n        eventFragment.inputs.forEach((param, index) => {\n            if (param.indexed) {\n                if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n                    indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n                    dynamic.push(true);\n                } else {\n                    indexed.push(param);\n                    dynamic.push(false);\n                }\n            } else {\n                nonIndexed.push(param);\n                dynamic.push(false);\n            }\n        });\n\n        let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n        let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n        let result: (Array<any> & { [ key: string ]: any }) = [ ];\n        let nonIndexedIndex = 0, indexedIndex = 0;\n        eventFragment.inputs.forEach((param, index) => {\n            if (param.indexed) {\n                if (resultIndexed == null) {\n                    result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n                } else if (dynamic[index]) {\n                    result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n                } else {\n                    try {\n                        result[index] = resultIndexed[indexedIndex++];\n                    } catch (error) {\n                        result[index] = error;\n                    }\n                }\n            } else {\n                try {\n                    result[index] = resultNonIndexed[nonIndexedIndex++];\n                } catch (error) {\n                    result[index] = error;\n                }\n            }\n\n            // Add the keyword argument if named and safe\n            if (param.name && result[param.name] == null) {\n                const value = result[index];\n\n                // Make error named values throw on access\n                if (value instanceof Error) {\n                    Object.defineProperty(result, param.name, {\n                        get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n                    });\n                } else {\n                    result[param.name] = value;\n                }\n            }\n        });\n\n        // Make all error indexed values throw on access\n        for (let i = 0; i < result.length; i++) {\n            const value = result[i];\n            if (value instanceof Error) {\n                Object.defineProperty(result, i, {\n                    get: () => { throw wrapAccessError(`index ${ i }`, value); }\n                });\n            }\n        }\n\n        return Object.freeze(result);\n    }\n\n    // Given a transaction, find the matching function fragment (if any) and\n    // determine all its properties and call parameters\n    parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n        let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n        if (!fragment) { return null; }\n\n        return new TransactionDescription({\n            args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n            functionFragment: fragment,\n            name: fragment.name,\n            signature: fragment.format(),\n            sighash: this.getSighash(fragment),\n            value: BigNumber.from(tx.value || \"0\"),\n        });\n    }\n\n    // @TODO\n    //parseCallResult(data: BytesLike): ??\n\n    // Given an event log, find the matching event fragment (if any) and\n    // determine all its properties and values\n    parseLog(log: { topics: Array<string>, data: string}): LogDescription {\n        let fragment = this.getEvent(log.topics[0]);\n\n        if (!fragment || fragment.anonymous) { return null; }\n\n        // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n        //        Probably not, because just because it is the only event in the ABI does\n        //        not mean we have the full ABI; maybe jsut a fragment?\n\n\n       return new LogDescription({\n            eventFragment: fragment,\n            name: fragment.name,\n            signature: fragment.format(),\n            topic: this.getEventTopic(fragment),\n            args: this.decodeEventLog(fragment, log.data, log.topics)\n        });\n    }\n\n    parseError(data: BytesLike): ErrorDescription {\n        const hexData = hexlify(data);\n        let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n        if (!fragment) { return null; }\n\n        return new ErrorDescription({\n            args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n            errorFragment: fragment,\n            name: fragment.name,\n            signature: fragment.format(),\n            sighash: this.getSighash(fragment),\n        });\n    }\n\n\n    /*\n    static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {\n        if (Interface.isInterface(value)) {\n            return value;\n        }\n        if (typeof(value) === \"string\") {\n            return new Interface(JSON.parse(value));\n        }\n        return new Interface(value);\n    }\n    */\n\n    static isInterface(value: any): value is Interface {\n        return !!(value && value._isInterface);\n    }\n}\n\n","\"use strict\";\n\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from \"./fragments\";\nimport { AbiCoder, CoerceFunc, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from \"./interface\";\n\nexport {\n    ConstructorFragment,\n    ErrorFragment,\n    EventFragment,\n    Fragment,\n    FunctionFragment,\n    ParamType,\n    FormatTypes,\n\n    AbiCoder,\n    defaultAbiCoder,\n\n    Interface,\n    Indexed,\n\n    /////////////////////////\n    // Types\n\n    CoerceFunc,\n    JsonFragment,\n    JsonFragmentType,\n\n    Result,\n    checkResultErrors,\n\n    LogDescription,\n    TransactionDescription\n};\n","export const version = \"abstract-provider/5.4.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n    to?: string,\n    from?: string,\n    nonce?: BigNumberish,\n\n    gasLimit?: BigNumberish,\n    gasPrice?: BigNumberish,\n\n    data?: BytesLike,\n    value?: BigNumberish,\n    chainId?: number\n\n    type?: number;\n    accessList?: AccessListish;\n\n    maxPriorityFeePerGas?: BigNumberish;\n    maxFeePerGas?: BigNumberish;\n}\n\nexport interface TransactionResponse extends Transaction {\n    hash: string;\n\n    // Only if a transaction has been mined\n    blockNumber?: number,\n    blockHash?: string,\n    timestamp?: number,\n\n    confirmations: number,\n\n    // Not optional (as it is in Transaction)\n    from: string;\n\n    // The raw transaction\n    raw?: string,\n\n    // This function waits until the transaction has been mined\n    wait: (confirmations?: number) => Promise<TransactionReceipt>\n};\n\nexport type BlockTag = string | number;\n\ninterface _Block {\n    hash: string;\n    parentHash: string;\n    number: number;\n\n    timestamp: number;\n    nonce: string;\n    difficulty: number;\n\n    gasLimit: BigNumber;\n    gasUsed: BigNumber;\n\n    miner: string;\n    extraData: string;\n\n    baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n    transactions: Array<string>;\n}\n\nexport interface BlockWithTransactions extends _Block {\n    transactions: Array<TransactionResponse>;\n}\n\n\nexport interface Log {\n    blockNumber: number;\n    blockHash: string;\n    transactionIndex: number;\n\n    removed: boolean;\n\n    address: string;\n    data: string;\n\n    topics: Array<string>;\n\n    transactionHash: string;\n    logIndex: number;\n}\n\nexport interface TransactionReceipt {\n    to: string;\n    from: string;\n    contractAddress: string,\n    transactionIndex: number,\n    root?: string,\n    gasUsed: BigNumber,\n    logsBloom: string,\n    blockHash: string,\n    transactionHash: string,\n    logs: Array<Log>,\n    blockNumber: number,\n    confirmations: number,\n    cumulativeGasUsed: BigNumber,\n    effectiveGasPrice: BigNumber,\n    byzantium: boolean,\n    type: number;\n    status?: number\n};\n\nexport interface FeeData {\n    maxFeePerGas: null | BigNumber;\n    maxPriorityFeePerGas: null | BigNumber;\n    gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n    address?: string;\n    topics?: Array<string | Array<string> | null>;\n}\n\nexport interface Filter extends EventFilter {\n    fromBlock?: BlockTag,\n    toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n    blockHash?: string;\n}\n\n//export type CallTransactionable = {\n//    call(transaction: TransactionRequest): Promise<TransactionResponse>;\n//};\n\nexport abstract class ForkEvent extends Description {\n    readonly expiry: number;\n\n    readonly _isForkEvent?: boolean;\n\n    static isForkEvent(value: any): value is ForkEvent {\n        return !!(value && value._isForkEvent);\n    }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n    readonly blockHash: string;\n\n    readonly _isBlockForkEvent?: boolean;\n\n    constructor(blockHash: string, expiry?: number) {\n        if (!isHexString(blockHash, 32)) {\n            logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n        }\n\n        super({\n            _isForkEvent: true,\n            _isBlockForkEvent: true,\n            expiry: (expiry || 0),\n            blockHash: blockHash\n        });\n    }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n    readonly hash: string;\n\n    readonly _isTransactionOrderForkEvent?: boolean;\n\n    constructor(hash: string, expiry?: number) {\n        if (!isHexString(hash, 32)) {\n            logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n        }\n\n        super({\n            _isForkEvent: true,\n            _isTransactionForkEvent: true,\n            expiry: (expiry || 0),\n            hash: hash\n        });\n    }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n    readonly beforeHash: string;\n    readonly afterHash: string;\n\n    constructor(beforeHash: string, afterHash: string, expiry?: number) {\n        if (!isHexString(beforeHash, 32)) {\n            logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n        }\n        if (!isHexString(afterHash, 32)) {\n            logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n        }\n\n        super({\n            _isForkEvent: true,\n            _isTransactionOrderForkEvent: true,\n            expiry: (expiry || 0),\n            beforeHash: beforeHash,\n            afterHash: afterHash\n        });\n    }\n}\n\nexport type EventType = string | Array<string | Array<string>> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array<any>) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n    // Network\n    abstract getNetwork(): Promise<Network>;\n\n    // Latest State\n    abstract getBlockNumber(): Promise<number>;\n    abstract getGasPrice(): Promise<BigNumber>;\n    async getFeeData(): Promise<FeeData> {\n        const { block, gasPrice } = await resolveProperties({\n            block: this.getBlock(\"latest\"),\n            gasPrice: this.getGasPrice().catch((error) => {\n                // @TODO: Why is this now failing on Calaveras?\n                //console.log(error);\n                return null;\n            })\n        });\n\n        let maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n        if (block && block.baseFeePerGas) {\n            // We may want to compute this more accurately in the future,\n            // using the formula \"check if the base fee is correct\".\n            // See: https://eips.ethereum.org/EIPS/eip-1559\n            maxPriorityFeePerGas = BigNumber.from(\"1000000000\");\n            maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n        }\n\n        return { maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n    }\n\n    // Account\n    abstract getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber>;\n    abstract getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;\n    abstract getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> ;\n    abstract getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n\n    // Execution\n    abstract sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;\n    abstract call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n    abstract estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;\n\n    // Queries\n    abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;\n    abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;\n    abstract getTransaction(transactionHash: string): Promise<TransactionResponse>;\n    abstract getTransactionReceipt(transactionHash: string): Promise<TransactionReceipt>;\n\n    // Bloom-filter Queries\n    abstract getLogs(filter: Filter): Promise<Array<Log>>;\n\n    // ENS\n    abstract resolveName(name: string | Promise<string>): Promise<string>;\n    abstract lookupAddress(address: string | Promise<string>): Promise<string>;\n\n    // Event Emitter (ish)\n    abstract on(eventName: EventType, listener: Listener): Provider;\n    abstract once(eventName: EventType, listener: Listener): Provider;\n    abstract emit(eventName: EventType, ...args: Array<any>): boolean\n    abstract listenerCount(eventName?: EventType): number;\n    abstract listeners(eventName?: EventType): Array<Listener>;\n    abstract off(eventName: EventType, listener?: Listener): Provider;\n    abstract removeAllListeners(eventName?: EventType): Provider;\n\n    // Alias for \"on\"\n    addListener(eventName: EventType, listener: Listener): Provider {\n        return this.on(eventName, listener);\n    }\n\n    // Alias for \"off\"\n    removeListener(eventName: EventType, listener: Listener): Provider {\n        return this.off(eventName, listener);\n    }\n\n    // @TODO: This *could* be implemented here, but would pull in events...\n    abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt>;\n\n    readonly _isProvider: boolean;\n\n    constructor() {\n        logger.checkAbstract(new.target, Provider);\n        defineReadOnly(this, \"_isProvider\", true);\n    }\n\n    static isProvider(value: any): value is Provider {\n        return !!(value && value._isProvider);\n    }\n\n/*\n    static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n        // No ENS...\n        if (!network.ensAddress) {\n            errors.throwError(\n                \"network does support ENS\",\n                errors.UNSUPPORTED_OPERATION,\n                { operation: \"ENS\", network: network.name }\n            );\n        }\n\n        // Not a namehash\n        if (!isHexString(namehash, 32)) {\n            errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n        }\n\n        // keccak256(\"resolver(bytes32)\")\n        let data = \"0x0178b8bf\" + namehash.substring(2);\n        let transaction = { to: network.ensAddress, data: data };\n\n        return provider.call(transaction).then((data) => {\n            return provider.formatter.callAddress(data);\n        });\n    }\n\n    static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n        return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n            if (!resolverAddress) { return null; }\n\n            // keccak256(\"addr(bytes32)\")\n            let data = \"0x3b3b57de\" + namehash(name).substring(2);\n            let transaction = { to: resolverAddress, data: data };\n            return callable.call(transaction).then((data) => {\n                return this.formatter.callAddress(data);\n            });\n\n        })\n    }\n*/\n}\n","export const version = \"abstract-signer/5.4.0\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array<string> = [\n    \"accessList\", \"chainId\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n    Logger.errors.INSUFFICIENT_FUNDS,\n    Logger.errors.NONCE_EXPIRED,\n    Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n    name?: string;\n    version?: string;\n    chainId?: BigNumberish;\n    verifyingContract?: string;\n    salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n    name: string;\n    type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n    readonly address: string;\n    readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n//  - A Signer MUST always make sure, that if present, the \"from\" field\n//    matches the Signer, before sending or signing a transaction\n//  - A Signer SHOULD always wrap private information (such as a private\n//    key or mnemonic) in a function, so that console.log does not leak\n//    the data\n\n// @TODO: This is a temporary measure to preserse backwards compatibility\n//        In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n    _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;\n}\n\nexport abstract class Signer {\n    readonly provider?: Provider;\n\n    ///////////////////\n    // Sub-classes MUST implement these\n\n    // Returns the checksum address\n    abstract getAddress(): Promise<string>\n\n    // Returns the signed prefixed-message. This MUST treat:\n    // - Bytes as a binary message\n    // - string as a UTF8-message\n    // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n    abstract signMessage(message: Bytes | string): Promise<string>;\n\n    // Signs a transaxction and returns the fully serialized, signed transaction.\n    // The EXACT transaction MUST be signed, and NO additional properties to be added.\n    // - This MAY throw if signing transactions is not supports, but if\n    //   it does, sentTransaction MUST be overridden.\n    abstract signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;\n\n    // Returns a new instance of the Signer, connected to provider.\n    // This MAY throw if changing providers is not supported.\n    abstract connect(provider: Provider): Signer;\n\n    readonly _isSigner: boolean;\n\n\n    ///////////////////\n    // Sub-classes MUST call super\n    constructor() {\n        logger.checkAbstract(new.target, Signer);\n        defineReadOnly(this, \"_isSigner\", true);\n    }\n\n\n    ///////////////////\n    // Sub-classes MAY override these\n\n    async getBalance(blockTag?: BlockTag): Promise<BigNumber> {\n        this._checkProvider(\"getBalance\");\n        return await this.provider.getBalance(this.getAddress(), blockTag);\n    }\n\n    async getTransactionCount(blockTag?: BlockTag): Promise<number> {\n        this._checkProvider(\"getTransactionCount\");\n        return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n    }\n\n    // Populates \"from\" if unspecified, and estimates the gas for the transation\n    async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n        this._checkProvider(\"estimateGas\");\n        const tx = await resolveProperties(this.checkTransaction(transaction));\n        return await this.provider.estimateGas(tx);\n    }\n\n    // Populates \"from\" if unspecified, and calls with the transation\n    async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag): Promise<string> {\n        this._checkProvider(\"call\");\n        const tx = await resolveProperties(this.checkTransaction(transaction));\n        return await this.provider.call(tx, blockTag);\n    }\n\n    // Populates all fields in a transaction, signs it and sends it to the network\n    sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n        this._checkProvider(\"sendTransaction\");\n        return this.populateTransaction(transaction).then((tx) => {\n            return this.signTransaction(tx).then((signedTx) => {\n                return this.provider.sendTransaction(signedTx);\n            });\n        });\n    }\n\n    async getChainId(): Promise<number> {\n        this._checkProvider(\"getChainId\");\n        const network = await this.provider.getNetwork();\n        return network.chainId;\n    }\n\n    async getGasPrice(): Promise<BigNumber> {\n        this._checkProvider(\"getGasPrice\");\n        return await this.provider.getGasPrice();\n    }\n\n    async getFeeData(): Promise<FeeData> {\n        this._checkProvider(\"getFeeData\");\n        return await this.provider.getFeeData();\n    }\n\n\n    async resolveName(name: string): Promise<string> {\n        this._checkProvider(\"resolveName\");\n        return await this.provider.resolveName(name);\n    }\n\n\n\n    // Checks a transaction does not contain invalid keys and if\n    // no \"from\" is provided, populates it.\n    // - does NOT require a provider\n    // - adds \"from\" is not present\n    // - returns a COPY (safe to mutate the result)\n    // By default called from: (overriding these prevents it)\n    //   - call\n    //   - estimateGas\n    //   - populateTransaction (and therefor sendTransaction)\n    checkTransaction(transaction: Deferrable<TransactionRequest>): Deferrable<TransactionRequest> {\n        for (const key in transaction) {\n            if (allowedTransactionKeys.indexOf(key) === -1) {\n                logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n            }\n        }\n\n        const tx = shallowCopy(transaction);\n\n        if (tx.from == null) {\n            tx.from = this.getAddress();\n\n        } else {\n            // Make sure any provided address matches this signer\n            tx.from = Promise.all([\n                Promise.resolve(tx.from),\n                this.getAddress()\n            ]).then((result) => {\n                if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n                    logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n                }\n                return result[0];\n            });\n        }\n\n        return tx;\n    }\n\n    // Populates ALL keys for a transaction and checks that \"from\" matches\n    // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n    // By default called from: (overriding these prevents it)\n    //   - sendTransaction\n    //\n    // Notes:\n    //  - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n    async populateTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionRequest> {\n\n        const tx: Deferrable<TransactionRequest> = await resolveProperties(this.checkTransaction(transaction))\n\n        if (tx.to != null) {\n            tx.to = Promise.resolve(tx.to).then(async (to) => {\n                if (to == null) { return null; }\n                const address = await this.resolveName(to);\n                if (address == null) {\n                    logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n                }\n                return address;\n            });\n        }\n\n        // Do not allow mixing pre-eip-1559 and eip-1559 proerties\n        const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n        if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n            logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n        } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n            logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n        }\n\n        if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n            // Fully-formed EIP-1559 transaction (skip getFeeData)\n            tx.type = 2;\n\n        } else if (tx.type === 0 || tx.type === 1) {\n            // Explicit Legacy or EIP-2930 transaction\n\n            // Populate missing gasPrice\n            if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n        } else {\n\n            // We need to get fee data to determine things\n            const feeData = await this.getFeeData();\n\n            if (tx.type == null) {\n                // We need to auto-detect the intended type of this transaction...\n\n                if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n                    // The network supports EIP-1559!\n\n                    // Upgrade transaction from null to eip-1559\n                    tx.type = 2;\n\n                    if (tx.gasPrice != null) {\n                        // Using legacy gasPrice property on an eip-1559 network,\n                        // so use gasPrice as both fee properties\n                        const gasPrice = tx.gasPrice;\n                        delete tx.gasPrice;\n                        tx.maxFeePerGas = gasPrice;\n                        tx.maxPriorityFeePerGas = gasPrice;\n\n                    } else {\n                        // Populate missing fee data\n                        if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n                        if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n                    }\n\n                } else if (feeData.gasPrice != null) {\n                    // Network doesn't support EIP-1559...\n\n                    // ...but they are trying to use EIP-1559 properties\n                    if (hasEip1559) {\n                        logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n                            operation: \"populateTransaction\"\n                        });\n                    }\n\n                    // Populate missing fee data\n                    if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n                    // Explicitly set untyped transaction to legacy\n                    tx.type = 0;\n\n                } else {\n                    // getFeeData has failed us.\n                    logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n                        operation: \"signer.getFeeData\"\n                    });\n                }\n\n            } else if (tx.type === 2) {\n                // Explicitly using EIP-1559\n\n                // Populate missing fee data\n                if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n                if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n            }\n        }\n\n        if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n        if (tx.gasLimit == null) {\n            tx.gasLimit = this.estimateGas(tx).catch((error) => {\n                if (forwardErrors.indexOf(error.code) >= 0) {\n                    throw error;\n                }\n\n                return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n                    error: error,\n                    tx: tx\n                });\n            });\n        }\n\n        if (tx.chainId == null) {\n            tx.chainId = this.getChainId();\n        } else {\n            tx.chainId = Promise.all([\n                Promise.resolve(tx.chainId),\n                this.getChainId()\n            ]).then((results) => {\n                if (results[1] !== 0 && results[0] !== results[1]) {\n                    logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n                }\n                return results[0];\n            });\n        }\n\n        return await resolveProperties(tx);\n    }\n\n\n    ///////////////////\n    // Sub-classes SHOULD leave these alone\n\n    _checkProvider(operation?: string): void {\n        if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: (operation || \"_checkProvider\") });\n        }\n    }\n\n    static isSigner(value: any): value is Signer {\n        return !!(value && value._isSigner);\n    }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n    readonly address: string;\n\n    constructor(address: string, provider?: Provider) {\n        logger.checkNew(new.target, VoidSigner);\n        super();\n        defineReadOnly(this, \"address\", address);\n        defineReadOnly(this, \"provider\", provider || null);\n    }\n\n    getAddress(): Promise<string> {\n        return Promise.resolve(this.address);\n    }\n\n    _fail(message: string, operation: string): Promise<any> {\n        return Promise.resolve().then(() => {\n            logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n        });\n    }\n\n    signMessage(message: Bytes | string): Promise<string> {\n        return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n    }\n\n    signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n        return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n    }\n\n    _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n        return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n    }\n\n    connect(provider: Provider): VoidSigner {\n        return new VoidSigner(this.address, provider);\n    }\n}\n\n","module.exports = assert;\n\nfunction assert(val, msg) {\n  if (!val)\n    throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n  if (l != r)\n    throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg !== 'string') {\n    for (var i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n    return res;\n  }\n  if (enc === 'hex') {\n    msg = msg.replace(/[^a-z0-9]+/ig, '');\n    if (msg.length % 2 !== 0)\n      msg = '0' + msg;\n    for (var i = 0; i < msg.length; i += 2)\n      res.push(parseInt(msg[i] + msg[i + 1], 16));\n  } else {\n    for (var i = 0; i < msg.length; i++) {\n      var c = msg.charCodeAt(i);\n      var hi = c >> 8;\n      var lo = c & 0xff;\n      if (hi)\n        res.push(hi, lo);\n      else\n        res.push(lo);\n    }\n  }\n  return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n  if (enc === 'hex')\n    return toHex(arr);\n  else\n    return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n  var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n  naf.fill(0);\n\n  var ws = 1 << (w + 1);\n  var k = num.clone();\n\n  for (var i = 0; i < naf.length; i++) {\n    var z;\n    var mod = k.andln(ws - 1);\n    if (k.isOdd()) {\n      if (mod > (ws >> 1) - 1)\n        z = (ws >> 1) - mod;\n      else\n        z = mod;\n      k.isubn(z);\n    } else {\n      z = 0;\n    }\n\n    naf[i] = z;\n    k.iushrn(1);\n  }\n\n  return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n  var jsf = [\n    [],\n    [],\n  ];\n\n  k1 = k1.clone();\n  k2 = k2.clone();\n  var d1 = 0;\n  var d2 = 0;\n  var m8;\n  while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n    // First phase\n    var m14 = (k1.andln(3) + d1) & 3;\n    var m24 = (k2.andln(3) + d2) & 3;\n    if (m14 === 3)\n      m14 = -1;\n    if (m24 === 3)\n      m24 = -1;\n    var u1;\n    if ((m14 & 1) === 0) {\n      u1 = 0;\n    } else {\n      m8 = (k1.andln(7) + d1) & 7;\n      if ((m8 === 3 || m8 === 5) && m24 === 2)\n        u1 = -m14;\n      else\n        u1 = m14;\n    }\n    jsf[0].push(u1);\n\n    var u2;\n    if ((m24 & 1) === 0) {\n      u2 = 0;\n    } else {\n      m8 = (k2.andln(7) + d2) & 7;\n      if ((m8 === 3 || m8 === 5) && m14 === 2)\n        u2 = -m24;\n      else\n        u2 = m24;\n    }\n    jsf[1].push(u2);\n\n    // Second phase\n    if (2 * d1 === u1 + 1)\n      d1 = 1 - d1;\n    if (2 * d2 === u2 + 1)\n      d2 = 1 - d2;\n    k1.iushrn(1);\n    k2.iushrn(1);\n  }\n\n  return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n  var key = '_' + name;\n  obj.prototype[name] = function cachedProperty() {\n    return this[key] !== undefined ? this[key] :\n      this[key] = computer.call(this);\n  };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n  return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n    bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n  return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n  this.type = type;\n  this.p = new BN(conf.p, 16);\n\n  // Use Montgomery, when there is no fast reduction for the prime\n  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n  // Useful for many curves\n  this.zero = new BN(0).toRed(this.red);\n  this.one = new BN(1).toRed(this.red);\n  this.two = new BN(2).toRed(this.red);\n\n  // Curve configuration, optional\n  this.n = conf.n && new BN(conf.n, 16);\n  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n  // Temporary arrays\n  this._wnafT1 = new Array(4);\n  this._wnafT2 = new Array(4);\n  this._wnafT3 = new Array(4);\n  this._wnafT4 = new Array(4);\n\n  this._bitLength = this.n ? this.n.bitLength() : 0;\n\n  // Generalized Greg Maxwell's trick\n  var adjustCount = this.n && this.p.div(this.n);\n  if (!adjustCount || adjustCount.cmpn(100) > 0) {\n    this.redN = null;\n  } else {\n    this._maxwellTrick = true;\n    this.redN = this.n.toRed(this.red);\n  }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n  assert(p.precomputed);\n  var doubles = p._getDoubles();\n\n  var naf = getNAF(k, 1, this._bitLength);\n  var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n  I /= 3;\n\n  // Translate into more windowed form\n  var repr = [];\n  var j;\n  var nafW;\n  for (j = 0; j < naf.length; j += doubles.step) {\n    nafW = 0;\n    for (var l = j + doubles.step - 1; l >= j; l--)\n      nafW = (nafW << 1) + naf[l];\n    repr.push(nafW);\n  }\n\n  var a = this.jpoint(null, null, null);\n  var b = this.jpoint(null, null, null);\n  for (var i = I; i > 0; i--) {\n    for (j = 0; j < repr.length; j++) {\n      nafW = repr[j];\n      if (nafW === i)\n        b = b.mixedAdd(doubles.points[j]);\n      else if (nafW === -i)\n        b = b.mixedAdd(doubles.points[j].neg());\n    }\n    a = a.add(b);\n  }\n  return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n  var w = 4;\n\n  // Precompute window\n  var nafPoints = p._getNAFPoints(w);\n  w = nafPoints.wnd;\n  var wnd = nafPoints.points;\n\n  // Get NAF form\n  var naf = getNAF(k, w, this._bitLength);\n\n  // Add `this`*(N+1) for every w-NAF index\n  var acc = this.jpoint(null, null, null);\n  for (var i = naf.length - 1; i >= 0; i--) {\n    // Count zeroes\n    for (var l = 0; i >= 0 && naf[i] === 0; i--)\n      l++;\n    if (i >= 0)\n      l++;\n    acc = acc.dblp(l);\n\n    if (i < 0)\n      break;\n    var z = naf[i];\n    assert(z !== 0);\n    if (p.type === 'affine') {\n      // J +- P\n      if (z > 0)\n        acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n    } else {\n      // J +- J\n      if (z > 0)\n        acc = acc.add(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.add(wnd[(-z - 1) >> 1].neg());\n    }\n  }\n  return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n  points,\n  coeffs,\n  len,\n  jacobianResult) {\n  var wndWidth = this._wnafT1;\n  var wnd = this._wnafT2;\n  var naf = this._wnafT3;\n\n  // Fill all arrays\n  var max = 0;\n  var i;\n  var j;\n  var p;\n  for (i = 0; i < len; i++) {\n    p = points[i];\n    var nafPoints = p._getNAFPoints(defW);\n    wndWidth[i] = nafPoints.wnd;\n    wnd[i] = nafPoints.points;\n  }\n\n  // Comb small window NAFs\n  for (i = len - 1; i >= 1; i -= 2) {\n    var a = i - 1;\n    var b = i;\n    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n      naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n      naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n      max = Math.max(naf[a].length, max);\n      max = Math.max(naf[b].length, max);\n      continue;\n    }\n\n    var comb = [\n      points[a], /* 1 */\n      null, /* 3 */\n      null, /* 5 */\n      points[b], /* 7 */\n    ];\n\n    // Try to avoid Projective points, if possible\n    if (points[a].y.cmp(points[b].y) === 0) {\n      comb[1] = points[a].add(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].add(points[b].neg());\n    } else {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    }\n\n    var index = [\n      -3, /* -1 -1 */\n      -1, /* -1 0 */\n      -5, /* -1 1 */\n      -7, /* 0 -1 */\n      0, /* 0 0 */\n      7, /* 0 1 */\n      5, /* 1 -1 */\n      1, /* 1 0 */\n      3,  /* 1 1 */\n    ];\n\n    var jsf = getJSF(coeffs[a], coeffs[b]);\n    max = Math.max(jsf[0].length, max);\n    naf[a] = new Array(max);\n    naf[b] = new Array(max);\n    for (j = 0; j < max; j++) {\n      var ja = jsf[0][j] | 0;\n      var jb = jsf[1][j] | 0;\n\n      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n      naf[b][j] = 0;\n      wnd[a] = comb;\n    }\n  }\n\n  var acc = this.jpoint(null, null, null);\n  var tmp = this._wnafT4;\n  for (i = max; i >= 0; i--) {\n    var k = 0;\n\n    while (i >= 0) {\n      var zero = true;\n      for (j = 0; j < len; j++) {\n        tmp[j] = naf[j][i] | 0;\n        if (tmp[j] !== 0)\n          zero = false;\n      }\n      if (!zero)\n        break;\n      k++;\n      i--;\n    }\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n    if (i < 0)\n      break;\n\n    for (j = 0; j < len; j++) {\n      var z = tmp[j];\n      p;\n      if (z === 0)\n        continue;\n      else if (z > 0)\n        p = wnd[j][(z - 1) >> 1];\n      else if (z < 0)\n        p = wnd[j][(-z - 1) >> 1].neg();\n\n      if (p.type === 'affine')\n        acc = acc.mixedAdd(p);\n      else\n        acc = acc.add(p);\n    }\n  }\n  // Zeroify references\n  for (i = 0; i < len; i++)\n    wnd[i] = null;\n\n  if (jacobianResult)\n    return acc;\n  else\n    return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n  this.curve = curve;\n  this.type = type;\n  this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n  throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n  return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  bytes = utils.toArray(bytes, enc);\n\n  var len = this.p.byteLength();\n\n  // uncompressed, hybrid-odd, hybrid-even\n  if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n      bytes.length - 1 === 2 * len) {\n    if (bytes[0] === 0x06)\n      assert(bytes[bytes.length - 1] % 2 === 0);\n    else if (bytes[0] === 0x07)\n      assert(bytes[bytes.length - 1] % 2 === 1);\n\n    var res =  this.point(bytes.slice(1, 1 + len),\n      bytes.slice(1 + len, 1 + 2 * len));\n\n    return res;\n  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n              bytes.length - 1 === len) {\n    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n  }\n  throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n  return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n  var len = this.curve.p.byteLength();\n  var x = this.getX().toArray('be', len);\n\n  if (compact)\n    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n  return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n  return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n  if (this.precomputed)\n    return this;\n\n  var precomputed = {\n    doubles: null,\n    naf: null,\n    beta: null,\n  };\n  precomputed.naf = this._getNAFPoints(8);\n  precomputed.doubles = this._getDoubles(4, power);\n  precomputed.beta = this._getBeta();\n  this.precomputed = precomputed;\n\n  return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n  if (!this.precomputed)\n    return false;\n\n  var doubles = this.precomputed.doubles;\n  if (!doubles)\n    return false;\n\n  return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n  if (this.precomputed && this.precomputed.doubles)\n    return this.precomputed.doubles;\n\n  var doubles = [ this ];\n  var acc = this;\n  for (var i = 0; i < power; i += step) {\n    for (var j = 0; j < step; j++)\n      acc = acc.dbl();\n    doubles.push(acc);\n  }\n  return {\n    step: step,\n    points: doubles,\n  };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n  if (this.precomputed && this.precomputed.naf)\n    return this.precomputed.naf;\n\n  var res = [ this ];\n  var max = (1 << wnd) - 1;\n  var dbl = max === 1 ? null : this.dbl();\n  for (var i = 1; i < max; i++)\n    res[i] = res[i - 1].add(dbl);\n  return {\n    wnd: wnd,\n    points: res,\n  };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n  return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n  var r = this;\n  for (var i = 0; i < k; i++)\n    r = r.dbl();\n  return r;\n};\n","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","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n  Base.call(this, 'short', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.tinv = this.two.redInvm();\n\n  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n  // If the curve is endomorphic, precalculate beta and lambda\n  this.endo = this._getEndomorphism(conf);\n  this._endoWnafT1 = new Array(4);\n  this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n  // No efficient endomorphism\n  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n    return;\n\n  // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n  var beta;\n  var lambda;\n  if (conf.beta) {\n    beta = new BN(conf.beta, 16).toRed(this.red);\n  } else {\n    var betas = this._getEndoRoots(this.p);\n    // Choose the smallest beta\n    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n    beta = beta.toRed(this.red);\n  }\n  if (conf.lambda) {\n    lambda = new BN(conf.lambda, 16);\n  } else {\n    // Choose the lambda that is matching selected beta\n    var lambdas = this._getEndoRoots(this.n);\n    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n      lambda = lambdas[0];\n    } else {\n      lambda = lambdas[1];\n      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n    }\n  }\n\n  // Get basis vectors, used for balanced length-two representation\n  var basis;\n  if (conf.basis) {\n    basis = conf.basis.map(function(vec) {\n      return {\n        a: new BN(vec.a, 16),\n        b: new BN(vec.b, 16),\n      };\n    });\n  } else {\n    basis = this._getEndoBasis(lambda);\n  }\n\n  return {\n    beta: beta,\n    lambda: lambda,\n    basis: basis,\n  };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n  // Find roots of for x^2 + x + 1 in F\n  // Root = (-1 +- Sqrt(-3)) / 2\n  //\n  var red = num === this.p ? this.red : BN.mont(num);\n  var tinv = new BN(2).toRed(red).redInvm();\n  var ntinv = tinv.redNeg();\n\n  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n  var l1 = ntinv.redAdd(s).fromRed();\n  var l2 = ntinv.redSub(s).fromRed();\n  return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n  // aprxSqrt >= sqrt(this.n)\n  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n  // 3.74\n  // Run EGCD, until r(L + 1) < aprxSqrt\n  var u = lambda;\n  var v = this.n.clone();\n  var x1 = new BN(1);\n  var y1 = new BN(0);\n  var x2 = new BN(0);\n  var y2 = new BN(1);\n\n  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n  var a0;\n  var b0;\n  // First vector\n  var a1;\n  var b1;\n  // Second vector\n  var a2;\n  var b2;\n\n  var prevR;\n  var i = 0;\n  var r;\n  var x;\n  while (u.cmpn(0) !== 0) {\n    var q = v.div(u);\n    r = v.sub(q.mul(u));\n    x = x2.sub(q.mul(x1));\n    var y = y2.sub(q.mul(y1));\n\n    if (!a1 && r.cmp(aprxSqrt) < 0) {\n      a0 = prevR.neg();\n      b0 = x1;\n      a1 = r.neg();\n      b1 = x;\n    } else if (a1 && ++i === 2) {\n      break;\n    }\n    prevR = r;\n\n    v = u;\n    u = r;\n    x2 = x1;\n    x1 = x;\n    y2 = y1;\n    y1 = y;\n  }\n  a2 = r.neg();\n  b2 = x;\n\n  var len1 = a1.sqr().add(b1.sqr());\n  var len2 = a2.sqr().add(b2.sqr());\n  if (len2.cmp(len1) >= 0) {\n    a2 = a0;\n    b2 = b0;\n  }\n\n  // Normalize signs\n  if (a1.negative) {\n    a1 = a1.neg();\n    b1 = b1.neg();\n  }\n  if (a2.negative) {\n    a2 = a2.neg();\n    b2 = b2.neg();\n  }\n\n  return [\n    { a: a1, b: b1 },\n    { a: a2, b: b2 },\n  ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n  var basis = this.endo.basis;\n  var v1 = basis[0];\n  var v2 = basis[1];\n\n  var c1 = v2.b.mul(k).divRound(this.n);\n  var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n  var p1 = c1.mul(v1.a);\n  var p2 = c2.mul(v2.a);\n  var q1 = c1.mul(v1.b);\n  var q2 = c2.mul(v2.b);\n\n  // Calculate answer\n  var k1 = k.sub(p1).sub(p2);\n  var k2 = q1.add(q2).neg();\n  return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  // XXX Is there any way to tell if the number is odd without converting it\n  // to non-red form?\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n  if (point.inf)\n    return true;\n\n  var x = point.x;\n  var y = point.y;\n\n  var ax = this.a.redMul(x);\n  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n  return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n    function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n      var npoints = this._endoWnafT1;\n      var ncoeffs = this._endoWnafT2;\n      for (var i = 0; i < points.length; i++) {\n        var split = this._endoSplit(coeffs[i]);\n        var p = points[i];\n        var beta = p._getBeta();\n\n        if (split.k1.negative) {\n          split.k1.ineg();\n          p = p.neg(true);\n        }\n        if (split.k2.negative) {\n          split.k2.ineg();\n          beta = beta.neg(true);\n        }\n\n        npoints[i * 2] = p;\n        npoints[i * 2 + 1] = beta;\n        ncoeffs[i * 2] = split.k1;\n        ncoeffs[i * 2 + 1] = split.k2;\n      }\n      var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n      // Clean-up references to points and coefficients\n      for (var j = 0; j < i * 2; j++) {\n        npoints[j] = null;\n        ncoeffs[j] = null;\n      }\n      return res;\n    };\n\nfunction Point(curve, x, y, isRed) {\n  Base.BasePoint.call(this, curve, 'affine');\n  if (x === null && y === null) {\n    this.x = null;\n    this.y = null;\n    this.inf = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    // Force redgomery representation when loading from JSON\n    if (isRed) {\n      this.x.forceRed(this.curve.red);\n      this.y.forceRed(this.curve.red);\n    }\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    this.inf = false;\n  }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n  return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n  return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n  if (!this.curve.endo)\n    return;\n\n  var pre = this.precomputed;\n  if (pre && pre.beta)\n    return pre.beta;\n\n  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n  if (pre) {\n    var curve = this.curve;\n    var endoMul = function(p) {\n      return curve.point(p.x.redMul(curve.endo.beta), p.y);\n    };\n    pre.beta = beta;\n    beta.precomputed = {\n      beta: null,\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(endoMul),\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(endoMul),\n      },\n    };\n  }\n  return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n  if (!this.precomputed)\n    return [ this.x, this.y ];\n\n  return [ this.x, this.y, this.precomputed && {\n    doubles: this.precomputed.doubles && {\n      step: this.precomputed.doubles.step,\n      points: this.precomputed.doubles.points.slice(1),\n    },\n    naf: this.precomputed.naf && {\n      wnd: this.precomputed.naf.wnd,\n      points: this.precomputed.naf.points.slice(1),\n    },\n  } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n  if (typeof obj === 'string')\n    obj = JSON.parse(obj);\n  var res = curve.point(obj[0], obj[1], red);\n  if (!obj[2])\n    return res;\n\n  function obj2point(obj) {\n    return curve.point(obj[0], obj[1], red);\n  }\n\n  var pre = obj[2];\n  res.precomputed = {\n    beta: null,\n    doubles: pre.doubles && {\n      step: pre.doubles.step,\n      points: [ res ].concat(pre.doubles.points.map(obj2point)),\n    },\n    naf: pre.naf && {\n      wnd: pre.naf.wnd,\n      points: [ res ].concat(pre.naf.points.map(obj2point)),\n    },\n  };\n  return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.inf)\n    return p;\n\n  // P + O = P\n  if (p.inf)\n    return this;\n\n  // P + P = 2P\n  if (this.eq(p))\n    return this.dbl();\n\n  // P + (-P) = O\n  if (this.neg().eq(p))\n    return this.curve.point(null, null);\n\n  // P + Q = O\n  if (this.x.cmp(p.x) === 0)\n    return this.curve.point(null, null);\n\n  var c = this.y.redSub(p.y);\n  if (c.cmpn(0) !== 0)\n    c = c.redMul(this.x.redSub(p.x).redInvm());\n  var nx = c.redSqr().redISub(this.x).redISub(p.x);\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.inf)\n    return this;\n\n  // 2P = O\n  var ys1 = this.y.redAdd(this.y);\n  if (ys1.cmpn(0) === 0)\n    return this.curve.point(null, null);\n\n  var a = this.curve.a;\n\n  var x2 = this.x.redSqr();\n  var dyinv = ys1.redInvm();\n  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n  var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n  k = new BN(k, 16);\n  if (this.isInfinity())\n    return this;\n  else if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else if (this.curve.endo)\n    return this.curve._endoWnafMulAdd([ this ], [ k ]);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs, true);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n  return this === p ||\n         this.inf === p.inf &&\n             (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n  if (this.inf)\n    return this;\n\n  var res = this.curve.point(this.x, this.y.redNeg());\n  if (_precompute && this.precomputed) {\n    var pre = this.precomputed;\n    var negate = function(p) {\n      return p.neg();\n    };\n    res.precomputed = {\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(negate),\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(negate),\n      },\n    };\n  }\n  return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n  if (this.inf)\n    return this.curve.jpoint(null, null, null);\n\n  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n  return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n  Base.BasePoint.call(this, curve, 'jacobian');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.one;\n    this.y = this.curve.one;\n    this.z = new BN(0);\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = new BN(z, 16);\n  }\n  if (!this.x.red)\n    this.x = this.x.toRed(this.curve.red);\n  if (!this.y.red)\n    this.y = this.y.toRed(this.curve.red);\n  if (!this.z.red)\n    this.z = this.z.toRed(this.curve.red);\n\n  this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n  return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n  if (this.isInfinity())\n    return this.curve.point(null, null);\n\n  var zinv = this.z.redInvm();\n  var zinv2 = zinv.redSqr();\n  var ax = this.x.redMul(zinv2);\n  var ay = this.y.redMul(zinv2).redMul(zinv);\n\n  return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p;\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 12M + 4S + 7A\n  var pz2 = p.z.redSqr();\n  var z2 = this.z.redSqr();\n  var u1 = this.x.redMul(pz2);\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y.redMul(pz2.redMul(p.z));\n  var s2 = p.y.redMul(z2.redMul(this.z));\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(p.z).redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p.toJ();\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 8M + 3S + 7A\n  var z2 = this.z.redSqr();\n  var u1 = this.x;\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y;\n  var s2 = p.y.redMul(z2).redMul(this.z);\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n  if (pow === 0)\n    return this;\n  if (this.isInfinity())\n    return this;\n  if (!pow)\n    return this.dbl();\n\n  var i;\n  if (this.curve.zeroA || this.curve.threeA) {\n    var r = this;\n    for (i = 0; i < pow; i++)\n      r = r.dbl();\n    return r;\n  }\n\n  // 1M + 2S + 1A + N * (4S + 5M + 8A)\n  // N = 1 => 6M + 6S + 9A\n  var a = this.curve.a;\n  var tinv = this.curve.tinv;\n\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  // Reuse results\n  var jyd = jy.redAdd(jy);\n  for (i = 0; i < pow; i++) {\n    var jx2 = jx.redSqr();\n    var jyd2 = jyd.redSqr();\n    var jyd4 = jyd2.redSqr();\n    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n    var t1 = jx.redMul(jyd2);\n    var nx = c.redSqr().redISub(t1.redAdd(t1));\n    var t2 = t1.redISub(nx);\n    var dny = c.redMul(t2);\n    dny = dny.redIAdd(dny).redISub(jyd4);\n    var nz = jyd.redMul(jz);\n    if (i + 1 < pow)\n      jz4 = jz4.redMul(jyd4);\n\n    jx = nx;\n    jz = nz;\n    jyd = dny;\n  }\n\n  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  if (this.curve.zeroA)\n    return this._zeroDbl();\n  else if (this.curve.threeA)\n    return this._threeDbl();\n  else\n    return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 14A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a; a = 0\n    var m = xx.redAdd(xx).redIAdd(xx);\n    // T = M ^ 2 - 2*S\n    var t = m.redSqr().redISub(s).redISub(s);\n\n    // 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2*Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-dbl-2009-l\n    // 2M + 5S + 13A\n\n    // A = X1^2\n    var a = this.x.redSqr();\n    // B = Y1^2\n    var b = this.y.redSqr();\n    // C = B^2\n    var c = b.redSqr();\n    // D = 2 * ((X1 + B)^2 - A - C)\n    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n    d = d.redIAdd(d);\n    // E = 3 * A\n    var e = a.redAdd(a).redIAdd(a);\n    // F = E^2\n    var f = e.redSqr();\n\n    // 8 * C\n    var c8 = c.redIAdd(c);\n    c8 = c8.redIAdd(c8);\n    c8 = c8.redIAdd(c8);\n\n    // X3 = F - 2 * D\n    nx = f.redISub(d).redISub(d);\n    // Y3 = E * (D - X3) - 8 * C\n    ny = e.redMul(d.redISub(nx)).redISub(c8);\n    // Z3 = 2 * Y1 * Z1\n    nz = this.y.redMul(this.z);\n    nz = nz.redIAdd(nz);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 15A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a\n    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n    // T = M^2 - 2 * S\n    var t = m.redSqr().redISub(s).redISub(s);\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2 * Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n    // 3M + 5S\n\n    // delta = Z1^2\n    var delta = this.z.redSqr();\n    // gamma = Y1^2\n    var gamma = this.y.redSqr();\n    // beta = X1 * gamma\n    var beta = this.x.redMul(gamma);\n    // alpha = 3 * (X1 - delta) * (X1 + delta)\n    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n    // X3 = alpha^2 - 8 * beta\n    var beta4 = beta.redIAdd(beta);\n    beta4 = beta4.redIAdd(beta4);\n    var beta8 = beta4.redAdd(beta4);\n    nx = alpha.redSqr().redISub(beta8);\n    // Z3 = (Y1 + Z1)^2 - gamma - delta\n    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n    var ggamma8 = gamma.redSqr();\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n  var a = this.curve.a;\n\n  // 4M + 6S + 10A\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  var jx2 = jx.redSqr();\n  var jy2 = jy.redSqr();\n\n  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n  var jxd4 = jx.redAdd(jx);\n  jxd4 = jxd4.redIAdd(jxd4);\n  var t1 = jxd4.redMul(jy2);\n  var nx = c.redSqr().redISub(t1.redAdd(t1));\n  var t2 = t1.redISub(nx);\n\n  var jyd8 = jy2.redSqr();\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  var ny = c.redMul(t2).redISub(jyd8);\n  var nz = jy.redAdd(jy).redMul(jz);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n  if (!this.curve.zeroA)\n    return this.dbl().add(this);\n\n  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n  // 5M + 10S + ...\n\n  // XX = X1^2\n  var xx = this.x.redSqr();\n  // YY = Y1^2\n  var yy = this.y.redSqr();\n  // ZZ = Z1^2\n  var zz = this.z.redSqr();\n  // YYYY = YY^2\n  var yyyy = yy.redSqr();\n  // M = 3 * XX + a * ZZ2; a = 0\n  var m = xx.redAdd(xx).redIAdd(xx);\n  // MM = M^2\n  var mm = m.redSqr();\n  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n  e = e.redIAdd(e);\n  e = e.redAdd(e).redIAdd(e);\n  e = e.redISub(mm);\n  // EE = E^2\n  var ee = e.redSqr();\n  // T = 16*YYYY\n  var t = yyyy.redIAdd(yyyy);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  // U = (M + E)^2 - MM - EE - T\n  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n  // X3 = 4 * (X1 * EE - 4 * YY * U)\n  var yyu4 = yy.redMul(u);\n  yyu4 = yyu4.redIAdd(yyu4);\n  yyu4 = yyu4.redIAdd(yyu4);\n  var nx = this.x.redMul(ee).redISub(yyu4);\n  nx = nx.redIAdd(nx);\n  nx = nx.redIAdd(nx);\n  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  // Z3 = (Z1 + E)^2 - ZZ - EE\n  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n  k = new BN(k, kbase);\n\n  return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n  if (p.type === 'affine')\n    return this.eq(p.toJ());\n\n  if (this === p)\n    return true;\n\n  // x1 * z2^2 == x2 * z1^2\n  var z2 = this.z.redSqr();\n  var pz2 = p.z.redSqr();\n  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n    return false;\n\n  // y1 * z2^3 == y2 * z1^3\n  var z3 = z2.redMul(this.z);\n  var pz3 = pz2.redMul(p.z);\n  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n  var zs = this.z.redSqr();\n  var rx = x.toRed(this.curve.red).redMul(zs);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(zs);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\nJPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n  if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n    return false;\n  }\n  if (i < 0 || i + 1 >= msg.length) {\n    return false;\n  }\n  return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg === 'string') {\n    if (!enc) {\n      // Inspired by stringToUtf8ByteArray() in closure-library by Google\n      // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n      // Apache License 2.0\n      // https://github.com/google/closure-library/blob/master/LICENSE\n      var p = 0;\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        if (c < 128) {\n          res[p++] = c;\n        } else if (c < 2048) {\n          res[p++] = (c >> 6) | 192;\n          res[p++] = (c & 63) | 128;\n        } else if (isSurrogatePair(msg, i)) {\n          c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n          res[p++] = (c >> 18) | 240;\n          res[p++] = ((c >> 12) & 63) | 128;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        } else {\n          res[p++] = (c >> 12) | 224;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        }\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n  if (options.type === 'short')\n    this.curve = new curve.short(options);\n  else if (options.type === 'edwards')\n    this.curve = new curve.edwards(options);\n  else\n    this.curve = new curve.mont(options);\n  this.g = this.curve.g;\n  this.n = this.curve.n;\n  this.hash = options.hash;\n\n  assert(this.g.validate(), 'Invalid curve');\n  assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n  Object.defineProperty(curves, name, {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      var curve = new PresetCurve(options);\n      Object.defineProperty(curves, name, {\n        configurable: true,\n        enumerable: true,\n        value: curve,\n      });\n      return curve;\n    },\n  });\n}\n\ndefineCurve('p192', {\n  type: 'short',\n  prime: 'p192',\n  p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n  b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n  n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n    '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n  ],\n});\n\ndefineCurve('p224', {\n  type: 'short',\n  prime: 'p224',\n  p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n  b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n  n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n    'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n  ],\n});\n\ndefineCurve('p256', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n  a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n  b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n  n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n  ],\n});\n\ndefineCurve('p384', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 ffffffff',\n  a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 fffffffc',\n  b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n     '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n  n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n     'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n  hash: hash.sha384,\n  gRed: false,\n  g: [\n    'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n    '5502f25d bf55296c 3a545e38 72760ab7',\n    '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n  ],\n});\n\ndefineCurve('p521', {\n  type: 'short',\n  prime: null,\n  p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff',\n  a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff fffffffc',\n  b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n     '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n     '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n  n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n     'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n  hash: hash.sha512,\n  gRed: false,\n  g: [\n    '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n    '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n    'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n    '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n    '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n    '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n  ],\n});\n\ndefineCurve('curve25519', {\n  type: 'mont',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '76d06',\n  b: '1',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '9',\n  ],\n});\n\ndefineCurve('ed25519', {\n  type: 'edwards',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '-1',\n  c: '1',\n  // -121665 * (121666^(-1)) (mod P)\n  d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n    // 4/5\n    '6666666666666666666666666666666666666666666666666666666666666658',\n  ],\n});\n\nvar pre;\ntry {\n  pre = require('./precomputed/secp256k1');\n} catch (e) {\n  pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n  type: 'short',\n  prime: 'k256',\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n  a: '0',\n  b: '7',\n  n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n  h: '1',\n  hash: hash.sha256,\n\n  // Precomputed endomorphism\n  beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n  lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n  basis: [\n    {\n      a: '3086d221a7d46bcde86c90e49284eb15',\n      b: '-e4437ed6010e88286f547fa90abfe4c3',\n    },\n    {\n      a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n      b: '3086d221a7d46bcde86c90e49284eb15',\n    },\n  ],\n\n  gRed: false,\n  g: [\n    '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n    '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n    pre,\n  ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n  if (!(this instanceof HmacDRBG))\n    return new HmacDRBG(options);\n  this.hash = options.hash;\n  this.predResist = !!options.predResist;\n\n  this.outLen = this.hash.outSize;\n  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n  this._reseed = null;\n  this.reseedInterval = null;\n  this.K = null;\n  this.V = null;\n\n  var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n  var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n  var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n  this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n  var seed = entropy.concat(nonce).concat(pers);\n\n  this.K = new Array(this.outLen / 8);\n  this.V = new Array(this.outLen / 8);\n  for (var i = 0; i < this.V.length; i++) {\n    this.K[i] = 0x00;\n    this.V[i] = 0x01;\n  }\n\n  this._update(seed);\n  this._reseed = 1;\n  this.reseedInterval = 0x1000000000000;  // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n  return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n  var kmac = this._hmac()\n                 .update(this.V)\n                 .update([ 0x00 ]);\n  if (seed)\n    kmac = kmac.update(seed);\n  this.K = kmac.digest();\n  this.V = this._hmac().update(this.V).digest();\n  if (!seed)\n    return;\n\n  this.K = this._hmac()\n               .update(this.V)\n               .update([ 0x01 ])\n               .update(seed)\n               .digest();\n  this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n  // Optional entropy enc\n  if (typeof entropyEnc !== 'string') {\n    addEnc = add;\n    add = entropyEnc;\n    entropyEnc = null;\n  }\n\n  entropy = utils.toArray(entropy, entropyEnc);\n  add = utils.toArray(add, addEnc);\n\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n  this._update(entropy.concat(add || []));\n  this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n  if (this._reseed > this.reseedInterval)\n    throw new Error('Reseed is required');\n\n  // Optional encoding\n  if (typeof enc !== 'string') {\n    addEnc = add;\n    add = enc;\n    enc = null;\n  }\n\n  // Optional additional data\n  if (add) {\n    add = utils.toArray(add, addEnc || 'hex');\n    this._update(add);\n  }\n\n  var temp = [];\n  while (temp.length < len) {\n    this.V = this._hmac().update(this.V).digest();\n    temp = temp.concat(this.V);\n  }\n\n  var res = temp.slice(0, len);\n  this._update(add);\n  this._reseed++;\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n  this.ec = ec;\n  this.priv = null;\n  this.pub = null;\n\n  // KeyPair(ec, { priv: ..., pub: ... })\n  if (options.priv)\n    this._importPrivate(options.priv, options.privEnc);\n  if (options.pub)\n    this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n  if (pub instanceof KeyPair)\n    return pub;\n\n  return new KeyPair(ec, {\n    pub: pub,\n    pubEnc: enc,\n  });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n  if (priv instanceof KeyPair)\n    return priv;\n\n  return new KeyPair(ec, {\n    priv: priv,\n    privEnc: enc,\n  });\n};\n\nKeyPair.prototype.validate = function validate() {\n  var pub = this.getPublic();\n\n  if (pub.isInfinity())\n    return { result: false, reason: 'Invalid public key' };\n  if (!pub.validate())\n    return { result: false, reason: 'Public key is not a point' };\n  if (!pub.mul(this.ec.curve.n).isInfinity())\n    return { result: false, reason: 'Public key * N != O' };\n\n  return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n  // compact is optional argument\n  if (typeof compact === 'string') {\n    enc = compact;\n    compact = null;\n  }\n\n  if (!this.pub)\n    this.pub = this.ec.g.mul(this.priv);\n\n  if (!enc)\n    return this.pub;\n\n  return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n  if (enc === 'hex')\n    return this.priv.toString(16, 2);\n  else\n    return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n  this.priv = new BN(key, enc || 16);\n\n  // Ensure that the priv won't be bigger than n, otherwise we may fail\n  // in fixed multiplication method\n  this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n  if (key.x || key.y) {\n    // Montgomery points only have an `x` coordinate.\n    // Weierstrass/Edwards points on the other hand have both `x` and\n    // `y` coordinates.\n    if (this.ec.curve.type === 'mont') {\n      assert(key.x, 'Need x coordinate');\n    } else if (this.ec.curve.type === 'short' ||\n               this.ec.curve.type === 'edwards') {\n      assert(key.x && key.y, 'Need both x and y coordinate');\n    }\n    this.pub = this.ec.curve.point(key.x, key.y);\n    return;\n  }\n  this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n  if(!pub.validate()) {\n    assert(pub.validate(), 'public point not validated');\n  }\n  return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n  return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n  return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n  return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n  if (options instanceof Signature)\n    return options;\n\n  if (this._importDER(options, enc))\n    return;\n\n  assert(options.r && options.s, 'Signature without r or s');\n  this.r = new BN(options.r, 16);\n  this.s = new BN(options.s, 16);\n  if (options.recoveryParam === undefined)\n    this.recoveryParam = null;\n  else\n    this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n  this.place = 0;\n}\n\nfunction getLength(buf, p) {\n  var initial = buf[p.place++];\n  if (!(initial & 0x80)) {\n    return initial;\n  }\n  var octetLen = initial & 0xf;\n\n  // Indefinite length or overflow\n  if (octetLen === 0 || octetLen > 4) {\n    return false;\n  }\n\n  var val = 0;\n  for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n    val <<= 8;\n    val |= buf[off];\n    val >>>= 0;\n  }\n\n  // Leading zeroes\n  if (val <= 0x7f) {\n    return false;\n  }\n\n  p.place = off;\n  return val;\n}\n\nfunction rmPadding(buf) {\n  var i = 0;\n  var len = buf.length - 1;\n  while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n    i++;\n  }\n  if (i === 0) {\n    return buf;\n  }\n  return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n  data = utils.toArray(data, enc);\n  var p = new Position();\n  if (data[p.place++] !== 0x30) {\n    return false;\n  }\n  var len = getLength(data, p);\n  if (len === false) {\n    return false;\n  }\n  if ((len + p.place) !== data.length) {\n    return false;\n  }\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var rlen = getLength(data, p);\n  if (rlen === false) {\n    return false;\n  }\n  var r = data.slice(p.place, rlen + p.place);\n  p.place += rlen;\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var slen = getLength(data, p);\n  if (slen === false) {\n    return false;\n  }\n  if (data.length !== slen + p.place) {\n    return false;\n  }\n  var s = data.slice(p.place, slen + p.place);\n  if (r[0] === 0) {\n    if (r[1] & 0x80) {\n      r = r.slice(1);\n    } else {\n      // Leading zeroes\n      return false;\n    }\n  }\n  if (s[0] === 0) {\n    if (s[1] & 0x80) {\n      s = s.slice(1);\n    } else {\n      // Leading zeroes\n      return false;\n    }\n  }\n\n  this.r = new BN(r);\n  this.s = new BN(s);\n  this.recoveryParam = null;\n\n  return true;\n};\n\nfunction constructLength(arr, len) {\n  if (len < 0x80) {\n    arr.push(len);\n    return;\n  }\n  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n  arr.push(octets | 0x80);\n  while (--octets) {\n    arr.push((len >>> (octets << 3)) & 0xff);\n  }\n  arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n  var r = this.r.toArray();\n  var s = this.s.toArray();\n\n  // Pad values\n  if (r[0] & 0x80)\n    r = [ 0 ].concat(r);\n  // Pad values\n  if (s[0] & 0x80)\n    s = [ 0 ].concat(s);\n\n  r = rmPadding(r);\n  s = rmPadding(s);\n\n  while (!s[0] && !(s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n  var arr = [ 0x02 ];\n  constructLength(arr, r.length);\n  arr = arr.concat(r);\n  arr.push(0x02);\n  constructLength(arr, s.length);\n  var backHalf = arr.concat(s);\n  var res = [ 0x30 ];\n  constructLength(res, backHalf.length);\n  res = res.concat(backHalf);\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n  if (!(this instanceof EC))\n    return new EC(options);\n\n  // Shortcut `elliptic.ec(curve-name)`\n  if (typeof options === 'string') {\n    assert(Object.prototype.hasOwnProperty.call(curves, options),\n      'Unknown curve ' + options);\n\n    options = curves[options];\n  }\n\n  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n  if (options instanceof curves.PresetCurve)\n    options = { curve: options };\n\n  this.curve = options.curve.curve;\n  this.n = this.curve.n;\n  this.nh = this.n.ushrn(1);\n  this.g = this.curve.g;\n\n  // Point on curve\n  this.g = options.curve.g;\n  this.g.precompute(options.curve.n.bitLength() + 1);\n\n  // Hash for function for DRBG\n  this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n  return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n  return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n  return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n  if (!options)\n    options = {};\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n    entropy: options.entropy || rand(this.hash.hmacStrength),\n    entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n    nonce: this.n.toArray(),\n  });\n\n  var bytes = this.n.byteLength();\n  var ns2 = this.n.sub(new BN(2));\n  for (;;) {\n    var priv = new BN(drbg.generate(bytes));\n    if (priv.cmp(ns2) > 0)\n      continue;\n\n    priv.iaddn(1);\n    return this.keyFromPrivate(priv);\n  }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n  var delta = msg.byteLength() * 8 - this.n.bitLength();\n  if (delta > 0)\n    msg = msg.ushrn(delta);\n  if (!truncOnly && msg.cmp(this.n) >= 0)\n    return msg.sub(this.n);\n  else\n    return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n  if (typeof enc === 'object') {\n    options = enc;\n    enc = null;\n  }\n  if (!options)\n    options = {};\n\n  key = this.keyFromPrivate(key, enc);\n  msg = this._truncateToN(new BN(msg, 16));\n\n  // Zero-extend key to provide enough entropy\n  var bytes = this.n.byteLength();\n  var bkey = key.getPrivate().toArray('be', bytes);\n\n  // Zero-extend nonce to have the same byte size as N\n  var nonce = msg.toArray('be', bytes);\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    entropy: bkey,\n    nonce: nonce,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n  });\n\n  // Number of bytes to generate\n  var ns1 = this.n.sub(new BN(1));\n\n  for (var iter = 0; ; iter++) {\n    var k = options.k ?\n      options.k(iter) :\n      new BN(drbg.generate(this.n.byteLength()));\n    k = this._truncateToN(k, true);\n    if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n      continue;\n\n    var kp = this.g.mul(k);\n    if (kp.isInfinity())\n      continue;\n\n    var kpX = kp.getX();\n    var r = kpX.umod(this.n);\n    if (r.cmpn(0) === 0)\n      continue;\n\n    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n    s = s.umod(this.n);\n    if (s.cmpn(0) === 0)\n      continue;\n\n    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n                        (kpX.cmp(r) !== 0 ? 2 : 0);\n\n    // Use complement of `s`, if it is > `n / 2`\n    if (options.canonical && s.cmp(this.nh) > 0) {\n      s = this.n.sub(s);\n      recoveryParam ^= 1;\n    }\n\n    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n  }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n  msg = this._truncateToN(new BN(msg, 16));\n  key = this.keyFromPublic(key, enc);\n  signature = new Signature(signature, 'hex');\n\n  // Perform primitive values validation\n  var r = signature.r;\n  var s = signature.s;\n  if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n    return false;\n  if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n    return false;\n\n  // Validate signature\n  var sinv = s.invm(this.n);\n  var u1 = sinv.mul(msg).umod(this.n);\n  var u2 = sinv.mul(r).umod(this.n);\n  var p;\n\n  if (!this.curve._maxwellTrick) {\n    p = this.g.mulAdd(u1, key.getPublic(), u2);\n    if (p.isInfinity())\n      return false;\n\n    return p.getX().umod(this.n).cmp(r) === 0;\n  }\n\n  // NOTE: Greg Maxwell's trick, inspired by:\n  // https://git.io/vad3K\n\n  p = this.g.jmulAdd(u1, key.getPublic(), u2);\n  if (p.isInfinity())\n    return false;\n\n  // Compare `p.x` of Jacobian point with `r`,\n  // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n  // inverse of `p.z^2`\n  return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n  assert((3 & j) === j, 'The recovery param is more than two bits');\n  signature = new Signature(signature, enc);\n\n  var n = this.n;\n  var e = new BN(msg);\n  var r = signature.r;\n  var s = signature.s;\n\n  // A set LSB signifies that the y-coordinate is odd\n  var isYOdd = j & 1;\n  var isSecondKey = j >> 1;\n  if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n    throw new Error('Unable to find sencond key candinate');\n\n  // 1.1. Let x = r + jn.\n  if (isSecondKey)\n    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n  else\n    r = this.curve.pointFromX(r, isYOdd);\n\n  var rInv = signature.r.invm(n);\n  var s1 = n.sub(e).mul(rInv).umod(n);\n  var s2 = s.mul(rInv).umod(n);\n\n  // 1.6.1 Compute Q = r^-1 (sR -  eG)\n  //               Q = r^-1 (sR + -eG)\n  return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n  signature = new Signature(signature, enc);\n  if (signature.recoveryParam !== null)\n    return signature.recoveryParam;\n\n  for (var i = 0; i < 4; i++) {\n    var Qprime;\n    try {\n      Qprime = this.recoverPubKey(e, signature, i);\n    } catch (e) {\n      continue;\n    }\n\n    if (Qprime.eq(Q))\n      return i;\n  }\n  throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","import _ec from \"elliptic\";\nimport EC = _ec.ec;\n\nexport { EC }\n","export const version = \"signing-key/5.4.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n    if (!_curve) {\n        _curve = new EC(\"secp256k1\");\n    }\n    return _curve;\n}\n\nexport class SigningKey {\n\n    readonly curve: string;\n\n    readonly privateKey: string;\n    readonly publicKey: string;\n    readonly compressedPublicKey: string;\n\n    //readonly address: string;\n\n    readonly _isSigningKey: boolean;\n\n    constructor(privateKey: BytesLike) {\n        defineReadOnly(this, \"curve\", \"secp256k1\");\n\n        defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n\n        const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n        defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n        defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n        defineReadOnly(this, \"_isSigningKey\", true);\n    }\n\n    _addPoint(other: BytesLike): string {\n        const p0 =  getCurve().keyFromPublic(arrayify(this.publicKey));\n        const p1 =  getCurve().keyFromPublic(arrayify(other));\n        return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n    }\n\n    signDigest(digest: BytesLike): Signature {\n        const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n        const digestBytes = arrayify(digest);\n        if (digestBytes.length !== 32) {\n            logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n        }\n        const signature = keyPair.sign(digestBytes, { canonical: true });\n        return splitSignature({\n            recoveryParam: signature.recoveryParam,\n            r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n            s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n        })\n    }\n\n    computeSharedSecret(otherKey: BytesLike): string {\n        const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n        const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n        return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n    }\n\n    static isSigningKey(value: any): value is SigningKey {\n        return !!(value && value._isSigningKey);\n    }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n    const sig = splitSignature(signature);\n    const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n    return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n    const bytes = arrayify(key);\n\n    if (bytes.length === 32) {\n        const signingKey = new SigningKey(bytes);\n        if (compressed) {\n            return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n        }\n        return signingKey.publicKey;\n\n    } else if (bytes.length === 33) {\n        if (compressed) { return hexlify(bytes); }\n        return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n    } else if (bytes.length === 65) {\n        if (!compressed) { return hexlify(bytes); }\n        return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n    }\n\n    return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.4.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array<string> }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n                            Array<[ string, Array<string> ]> |\n                            Record<string, Array<string>>;\n\nexport enum TransactionTypes {\n    legacy = 0,\n    eip2930 = 1,\n    eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n    to?: string;\n    nonce?: number;\n\n    gasLimit?: BigNumberish;\n    gasPrice?: BigNumberish;\n\n    data?: BytesLike;\n    value?: BigNumberish;\n    chainId?: number;\n\n    // Typed-Transaction features\n    type?: number | null;\n\n    // EIP-2930; Type 1 & EIP-1559; Type 2\n    accessList?: AccessListish;\n\n    // EIP-1559; Type 2\n    maxPriorityFeePerGas?: BigNumberish;\n    maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n    hash?: string;\n\n    to?: string;\n    from?: string;\n    nonce: number;\n\n    gasLimit: BigNumber;\n    gasPrice?: BigNumber;\n\n    data: string;\n    value: BigNumber;\n    chainId: number;\n\n    r?: string;\n    s?: string;\n    v?: number;\n\n    // Typed-Transaction features\n    type?: number | null;\n\n    // EIP-2930; Type 1 & EIP-1559; Type 2\n    accessList?: AccessList;\n\n    // EIP-1559; Type 2\n    maxPriorityFeePerGas?: BigNumber;\n    maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n    if (value === \"0x\") { return null; }\n    return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n    if (value === \"0x\") { return Zero; }\n    return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n    { name: \"nonce\",    maxLength: 32, numeric: true },\n    { name: \"gasPrice\", maxLength: 32, numeric: true },\n    { name: \"gasLimit\", maxLength: 32, numeric: true },\n    { name: \"to\",          length: 20 },\n    { name: \"value\",    maxLength: 32, numeric: true },\n    { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n    chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n    const publicKey = computePublicKey(key);\n    return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n    return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n    const result = stripZeros(BigNumber.from(value).toHexString());\n    if (result.length > 32) {\n        logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n    }\n    return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array<string>): { address: string,storageKeys: Array<string> } {\n    return {\n        address: getAddress(addr),\n        storageKeys: (storageKeys || []).map((storageKey, index) => {\n            if (hexDataLength(storageKey) !== 32) {\n                logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n            }\n            return storageKey.toLowerCase();\n        })\n    };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n    if (Array.isArray(value)) {\n        return (<Array<[ string, Array<string>] | { address: string, storageKeys: Array<string>}>>value).map((set, index) => {\n            if (Array.isArray(set)) {\n                if (set.length > 2) {\n                    logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n                }\n                return accessSetify(set[0], set[1])\n            }\n            return accessSetify(set.address, set.storageKeys);\n        });\n    }\n\n    const result: Array<{ address: string, storageKeys: Array<string> }> = Object.keys(value).map((addr) => {\n        const storageKeys: Record<string, true> = value[addr].reduce((accum, storageKey) => {\n            accum[storageKey] = true;\n            return accum;\n        }, <Record<string, true>>{ });\n        return accessSetify(addr, Object.keys(storageKeys).sort())\n    });\n    result.sort((a, b) => (a.address.localeCompare(b.address)));\n    return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array<string> ]> {\n    return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n    // If there is an explicit gasPrice, make sure it matches the\n    // EIP-1559 fees; otherwise they may not understand what they\n    // think they are setting in terms of fee.\n    if (transaction.gasPrice != null) {\n        const gasPrice = BigNumber.from(transaction.gasPrice);\n        const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n        if (!gasPrice.eq(maxFeePerGas)) {\n            logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n                gasPrice, maxFeePerGas\n            });\n        }\n    }\n\n    const fields: any = [\n        formatNumber(transaction.chainId || 0, \"chainId\"),\n        formatNumber(transaction.nonce || 0, \"nonce\"),\n        formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n        formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n        formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n        ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n        formatNumber(transaction.value || 0, \"value\"),\n        (transaction.data || \"0x\"),\n        (formatAccessList(transaction.accessList || []))\n    ];\n\n    if (signature) {\n        const sig = splitSignature(signature);\n        fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n        fields.push(stripZeros(sig.r));\n        fields.push(stripZeros(sig.s));\n    }\n\n    return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n    const fields: any = [\n        formatNumber(transaction.chainId || 0, \"chainId\"),\n        formatNumber(transaction.nonce || 0, \"nonce\"),\n        formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n        formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n        ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n        formatNumber(transaction.value || 0, \"value\"),\n        (transaction.data || \"0x\"),\n        (formatAccessList(transaction.accessList || []))\n    ];\n\n    if (signature) {\n        const sig = splitSignature(signature);\n        fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n        fields.push(stripZeros(sig.r));\n        fields.push(stripZeros(sig.s));\n    }\n\n    return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n    checkProperties(transaction, allowedTransactionKeys);\n\n    const raw: Array<string | Uint8Array> = [];\n\n    transactionFields.forEach(function(fieldInfo) {\n        let value = (<any>transaction)[fieldInfo.name] || ([]);\n        const options: DataOptions = { };\n        if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n        value = arrayify(hexlify(value, options));\n\n        // Fixed-width field\n        if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n            logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n        }\n\n        // Variable-width (with a maximum)\n        if (fieldInfo.maxLength) {\n            value = stripZeros(value);\n            if (value.length > fieldInfo.maxLength) {\n                logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n            }\n        }\n\n        raw.push(hexlify(value));\n    });\n\n    let chainId = 0;\n    if (transaction.chainId != null) {\n        // A chainId was provided; if non-zero we'll use EIP-155\n        chainId = transaction.chainId;\n\n        if (typeof(chainId) !== \"number\") {\n            logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n        }\n\n    } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n        // No chainId provided, but the signature is signing with EIP-155; derive chainId\n        chainId = Math.floor((signature.v - 35) / 2);\n    }\n\n    // We have an EIP-155 transaction (chainId was specified and non-zero)\n    if (chainId !== 0) {\n        raw.push(hexlify(chainId)); // @TODO: hexValue?\n        raw.push(\"0x\");\n        raw.push(\"0x\");\n    }\n\n    // Requesting an unsigned transation\n    if (!signature) {\n        return RLP.encode(raw);\n    }\n\n    // The splitSignature will ensure the transaction has a recoveryParam in the\n    // case that the signTransaction function only adds a v.\n    const sig = splitSignature(signature);\n\n    // We pushed a chainId and null r, s on for hashing only; remove those\n    let v = 27 + sig.recoveryParam\n    if (chainId !== 0) {\n        raw.pop();\n        raw.pop();\n        raw.pop();\n        v += chainId * 2 + 8;\n\n        // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n        if (sig.v > 28 && sig.v !== v) {\n             logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n        }\n    } else if (sig.v !== v) {\n         logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n    }\n\n    raw.push(hexlify(v));\n    raw.push(stripZeros(arrayify(sig.r)));\n    raw.push(stripZeros(arrayify(sig.s)));\n\n    return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n    // Legacy and EIP-155 Transactions\n    if (transaction.type == null || transaction.type === 0) {\n        if (transaction.accessList != null) {\n            logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n        }\n        return _serialize(transaction, signature);\n    }\n\n    // Typed Transactions (EIP-2718)\n    switch (transaction.type) {\n        case 1:\n            return _serializeEip2930(transaction, signature);\n        case 2:\n            return _serializeEip1559(transaction, signature);\n        default:\n            break;\n    }\n\n    return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"serializeTransaction\",\n        transactionType: transaction.type\n    });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array<string>, serialize: (tx: UnsignedTransaction) => string): void {\n    try {\n        const recid = handleNumber(fields[0]).toNumber();\n        if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n        tx.v = recid;\n    } catch (error) {\n        logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n    }\n\n    tx.r = hexZeroPad(fields[1], 32);\n    tx.s = hexZeroPad(fields[2], 32);\n\n    try {\n        const digest = keccak256(serialize(tx));\n        tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n    } catch (error) {\n        console.log(error);\n    }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n    const transaction = RLP.decode(payload.slice(1));\n\n    if (transaction.length !== 9 && transaction.length !== 12) {\n        logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n    }\n\n    const maxPriorityFeePerGas = handleNumber(transaction[2]);\n    const maxFeePerGas = handleNumber(transaction[3]);\n    const tx: Transaction = {\n        type:                  2,\n        chainId:               handleNumber(transaction[0]).toNumber(),\n        nonce:                 handleNumber(transaction[1]).toNumber(),\n        maxPriorityFeePerGas:  maxPriorityFeePerGas,\n        maxFeePerGas:          maxFeePerGas,\n        gasPrice:              null,\n        gasLimit:              handleNumber(transaction[4]),\n        to:                    handleAddress(transaction[5]),\n        value:                 handleNumber(transaction[6]),\n        data:                  transaction[7],\n        accessList:            accessListify(transaction[8]),\n    };\n\n    // Unsigned EIP-1559 Transaction\n    if (transaction.length === 9) { return tx; }\n\n    tx.hash = keccak256(payload);\n\n    _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n    return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n    const transaction = RLP.decode(payload.slice(1));\n\n    if (transaction.length !== 8 && transaction.length !== 11) {\n        logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n    }\n\n    const tx: Transaction = {\n        type:       1,\n        chainId:    handleNumber(transaction[0]).toNumber(),\n        nonce:      handleNumber(transaction[1]).toNumber(),\n        gasPrice:   handleNumber(transaction[2]),\n        gasLimit:   handleNumber(transaction[3]),\n        to:         handleAddress(transaction[4]),\n        value:      handleNumber(transaction[5]),\n        data:       transaction[6],\n        accessList: accessListify(transaction[7])\n    };\n\n    // Unsigned EIP-2930 Transaction\n    if (transaction.length === 8) { return tx; }\n\n    tx.hash = keccak256(payload);\n\n    _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n    return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n    const transaction = RLP.decode(rawTransaction);\n\n    if (transaction.length !== 9 && transaction.length !== 6) {\n        logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n    }\n\n    const tx: Transaction = {\n        nonce:    handleNumber(transaction[0]).toNumber(),\n        gasPrice: handleNumber(transaction[1]),\n        gasLimit: handleNumber(transaction[2]),\n        to:       handleAddress(transaction[3]),\n        value:    handleNumber(transaction[4]),\n        data:     transaction[5],\n        chainId:  0\n    };\n\n    // Legacy unsigned transaction\n    if (transaction.length === 6) { return tx; }\n\n    try {\n        tx.v = BigNumber.from(transaction[6]).toNumber();\n\n    } catch (error) {\n        console.log(error);\n        return tx;\n    }\n\n    tx.r = hexZeroPad(transaction[7], 32);\n    tx.s = hexZeroPad(transaction[8], 32);\n\n    if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n        // EIP-155 unsigned transaction\n        tx.chainId = tx.v;\n        tx.v = 0;\n\n    } else {\n        // Signed Tranasaction\n\n        tx.chainId = Math.floor((tx.v - 35) / 2);\n        if (tx.chainId < 0) { tx.chainId = 0; }\n\n        let recoveryParam = tx.v - 27;\n\n        const raw = transaction.slice(0, 6);\n\n        if (tx.chainId !== 0) {\n            raw.push(hexlify(tx.chainId));\n            raw.push(\"0x\");\n            raw.push(\"0x\");\n            recoveryParam -= tx.chainId * 2 + 8;\n        }\n\n        const digest = keccak256(RLP.encode(raw));\n        try {\n            tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n        } catch (error) {\n            console.log(error);\n        }\n\n        tx.hash = keccak256(rawTransaction);\n    }\n\n    tx.type = null;\n\n    return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n    const payload = arrayify(rawTransaction);\n\n    // Legacy and EIP-155 Transactions\n    if (payload[0] > 0x7f) { return _parse(payload); }\n\n    // Typed Transaction (EIP-2718)\n    switch (payload[0]) {\n        case 1:\n            return _parseEip2930(payload);\n        case 2:\n            return _parseEip1559(payload);\n        default:\n            break;\n    }\n\n    return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"parseTransaction\",\n        transactionType: payload[0]\n    });\n}\n\n","export const version = \"contracts/5.4.0\";\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n    gasLimit?: BigNumberish | Promise<BigNumberish>;\n    gasPrice?: BigNumberish | Promise<BigNumberish>;\n    maxFeePerGas?: BigNumberish | Promise<BigNumberish>;\n    maxPriorityFeePerGas?: BigNumberish | Promise<BigNumberish>;\n    nonce?: BigNumberish | Promise<BigNumberish>;\n    type?: number;\n    accessList?: AccessListish;\n};\n\nexport interface PayableOverrides extends Overrides {\n    value?: BigNumberish | Promise<BigNumberish>;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n    blockTag?: BlockTag | Promise<BlockTag>;\n    from?: string | Promise<string>;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n//  - abstract-provider:TransactionRequest\n//  - transactions:Transaction\n//  - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n    to?: string;\n    from?: string;\n    nonce?: number;\n\n    gasLimit?: BigNumber;\n    gasPrice?: BigNumber;\n\n    data?: string;\n    value?: BigNumber;\n    chainId?: number;\n\n    type?: number;\n    accessList?: AccessList;\n\n    maxFeePerGas?: BigNumber;\n    maxPriorityFeePerGas?: BigNumber;\n};\n\nexport type EventFilter = {\n    address?: string;\n    topics?: Array<string|Array<string>>;\n};\n\n\nexport type ContractFunction<T = any> = (...args: Array<any>) => Promise<T>;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n    // The event name\n    event?: string;\n\n    // The event signature\n    eventSignature?: string;\n\n    // The parsed arguments to the event\n    args?: Result;\n\n    // If parsing the arguments failed, this is the error\n    decodeError?: Error;\n\n    // A function that can be used to decode event data and topics\n    decode?: (data: string, topics?: Array<string>) => any;\n\n    // A function that will remove the listener responsible for this event (if any)\n    removeListener: () => void;\n\n    // Get blockchain details about this event's block and transaction\n    getBlock: () => Promise<Block>;\n    getTransaction: () => Promise<TransactionResponse>;\n    getTransactionReceipt: () => Promise<TransactionReceipt>;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n    events?: Array<Event>;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n    wait(confirmations?: number): Promise<ContractReceipt>;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n    chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n    type: true, accessList: true,\n    maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise<string>): Promise<string> {\n    const name = await nameOrPromise;\n\n    // If it is already an address, just use it (after adding checksum)\n    try {\n        return getAddress(name);\n    } catch (error) { }\n\n    if (!resolver) {\n        logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"resolveName\"\n        });\n    }\n\n    const address = await resolver.resolveName(name);\n\n    if (address == null) {\n        logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n    }\n\n    return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array<ParamType>): Promise<any> {\n    if (Array.isArray(paramType)) {\n        return await Promise.all(paramType.map((paramType, index) => {\n            return resolveAddresses(\n                resolver,\n                ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n                paramType\n            );\n        }));\n    }\n\n    if (paramType.type === \"address\") {\n        return await resolveName(resolver, value);\n    }\n\n    if (paramType.type === \"tuple\") {\n        return await resolveAddresses(resolver, value, paramType.components);\n    }\n\n    if (paramType.baseType === \"array\") {\n        if (!Array.isArray(value)) { return Promise.reject(new Error(\"invalid value for array\")); }\n        return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n    }\n\n    return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array<any>): Promise<PopulatedTransaction> {\n    // If an extra argument is given, it is overrides\n    let overrides: CallOverrides = { };\n    if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n        overrides = shallowCopy(args.pop());\n    }\n\n    // Make sure the parameter count matches\n    logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n    // Populate \"from\" override (allow promises)\n    if (contract.signer) {\n        if (overrides.from) {\n            // Contracts with a Signer are from the Signer's frame-of-reference;\n            // but we allow overriding \"from\" if it matches the signer\n            overrides.from = resolveProperties({\n                override: resolveName(contract.signer, overrides.from),\n                signer: contract.signer.getAddress()\n            }).then(async (check) => {\n                if (getAddress(check.signer) !== check.override) {\n                    logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n                        operation: \"overrides.from\"\n                    });\n                }\n\n                return check.override;\n            });\n\n        } else {\n            overrides.from = contract.signer.getAddress();\n        }\n\n    } else if (overrides.from) {\n        overrides.from = resolveName(contract.provider, overrides.from);\n\n    //} else {\n        // Contracts without a signer can override \"from\", and if\n        // unspecified the zero address is used\n        //overrides.from = AddressZero;\n    }\n\n    // Wait for all dependencies to be resolved (prefer the signer over the provider)\n    const resolved = await resolveProperties({\n        args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n        address: contract.resolvedAddress,\n        overrides: (resolveProperties(overrides) || { })\n    });\n\n    // The ABI coded transaction\n    const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n    const tx: PopulatedTransaction = {\n      data: data,\n      to: resolved.address\n    };\n\n    // Resolved Overrides\n    const ro = resolved.overrides;\n\n    // Populate simple overrides\n    if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n    if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n    if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n    if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n    if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n    if (ro.from != null) { tx.from = ro.from; }\n\n    if (ro.type != null) { tx.type = ro.type; }\n    if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n    // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n    if (tx.gasLimit == null && fragment.gas != null) {\n        // Conmpute the intrinisic gas cost for this transaction\n        // @TODO: This is based on the yellow paper as of Petersburg; this is something\n        // we may wish to parameterize in v6 as part of the Network object. Since this\n        // is always a non-nil to address, we can ignore G_create, but may wish to add\n        // similar logic to the ContractFactory.\n        let intrinsic = 21000;\n        const bytes = arrayify(data);\n        for (let i = 0; i < bytes.length; i++) {\n            intrinsic += 4;\n            if (bytes[i]) { intrinsic += 64; }\n        }\n        tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n    }\n\n    // Populate \"value\" override\n    if (ro.value) {\n        const roValue = BigNumber.from(ro.value);\n        if (!roValue.isZero() && !fragment.payable) {\n            logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"overrides.value\",\n                value: overrides.value\n            });\n        }\n        tx.value = roValue;\n    }\n\n    // Remvoe the overrides\n    delete overrides.nonce;\n    delete overrides.gasLimit;\n    delete overrides.gasPrice;\n    delete overrides.from;\n    delete overrides.value;\n\n    delete overrides.type;\n    delete overrides.accessList;\n\n    delete overrides.maxFeePerGas;\n    delete overrides.maxPriorityFeePerGas;\n\n    // Make sure there are no stray overrides, which may indicate a\n    // typo or using an unsupported key.\n    const leftovers = Object.keys(overrides).filter((key) => ((<any>overrides)[key] != null));\n    if (leftovers.length) {\n        logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"overrides\",\n            overrides: leftovers\n        });\n    }\n\n    return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction<PopulatedTransaction> {\n    return function(...args: Array<any>): Promise<PopulatedTransaction> {\n        return populateTransaction(contract, fragment, args);\n    };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction<BigNumber> {\n    const signerOrProvider = (contract.signer || contract.provider);\n    return async function(...args: Array<any>): Promise<BigNumber> {\n        if (!signerOrProvider) {\n            logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"estimateGas\"\n            })\n        }\n\n        const tx = await populateTransaction(contract, fragment, args);\n        return await signerOrProvider.estimateGas(tx);\n    };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n    const signerOrProvider = (contract.signer || contract.provider);\n\n    return async function(...args: Array<any>): Promise<any> {\n        // Extract the \"blockTag\" override if present\n        let blockTag = undefined;\n        if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n            const overrides = shallowCopy(args.pop());\n            if (overrides.blockTag != null) {\n                blockTag = await overrides.blockTag;\n            }\n            delete overrides.blockTag;\n            args.push(overrides);\n        }\n\n        // If the contract was just deployed, wait until it is mined\n        if (contract.deployTransaction != null) {\n            await contract._deployed(blockTag);\n        }\n\n        // Call a node and get the result\n        const tx = await populateTransaction(contract, fragment, args);\n        const result = await signerOrProvider.call(tx, blockTag);\n\n        try {\n            let value = contract.interface.decodeFunctionResult(fragment, result);\n            if (collapseSimple && fragment.outputs.length === 1) {\n                value = value[0];\n            }\n            return value;\n\n        } catch (error) {\n            if (error.code === Logger.errors.CALL_EXCEPTION) {\n                error.address = contract.address;\n                error.args = args;\n                error.transaction = tx;\n            }\n            throw error;\n         }\n    };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction<TransactionResponse> {\n    return async function(...args: Array<any>): Promise<TransactionResponse> {\n        if (!contract.signer) {\n            logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"sendTransaction\"\n            })\n        }\n\n        // If the contract was just deployed, wait until it is minded\n        if (contract.deployTransaction != null) {\n            await contract._deployed();\n        }\n\n        const txRequest = await populateTransaction(contract, fragment, args);\n\n        const tx = await contract.signer.sendTransaction(txRequest);\n\n        // Tweak the tw.wait so the receipt has extra properties\n        const wait = tx.wait.bind(tx);\n        tx.wait = (confirmations?: number) => {\n            return wait(confirmations).then((receipt: ContractReceipt) => {\n                receipt.events = receipt.logs.map((log) => {\n                    let event: Event = (<Event>deepCopy(log));\n                    let parsed: LogDescription = null;\n                    try {\n                        parsed = contract.interface.parseLog(log);\n                    } catch (e){ }\n\n                    // Successfully parsed the event log; include it\n                    if (parsed) {\n                        event.args = parsed.args;\n                        event.decode = (data: BytesLike, topics?: Array<any>) => {\n                            return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n                        };\n                        event.event = parsed.name;\n                        event.eventSignature = parsed.signature;\n                    }\n\n                    // Useful operations\n                    event.removeListener = () => { return contract.provider; }\n                    event.getBlock = () => {\n                        return contract.provider.getBlock(receipt.blockHash);\n                    }\n                    event.getTransaction = () => {\n                        return contract.provider.getTransaction(receipt.transactionHash);\n                    }\n                    event.getTransactionReceipt = () => {\n                        return Promise.resolve(receipt);\n                    }\n\n                    return event;\n                });\n\n                return receipt;\n            });\n        };\n        return tx;\n    };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n    if (fragment.constant) {\n        return buildCall(contract, fragment, collapseSimple);\n    }\n    return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n    if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n        return \"*\";\n    }\n\n    return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n        if (Array.isArray(topic)) {\n            return topic.join(\"|\");\n        }\n        return topic;\n    }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n    readonly tag: string;\n    readonly filter: EventFilter;\n    private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n    constructor(tag: string, filter: EventFilter) {\n        defineReadOnly(this, \"tag\", tag);\n        defineReadOnly(this, \"filter\", filter);\n        this._listeners = [ ];\n    }\n\n    addListener(listener: Listener, once: boolean): void {\n        this._listeners.push({ listener: listener, once: once });\n    }\n\n    removeListener(listener: Listener): void {\n        let done = false;\n        this._listeners = this._listeners.filter((item) => {\n            if (done || item.listener !== listener) { return true; }\n            done = true;\n            return false;\n        });\n    }\n\n    removeAllListeners(): void {\n        this._listeners = [];\n    }\n\n    listeners(): Array<Listener> {\n        return this._listeners.map((i) => i.listener);\n    }\n\n    listenerCount(): number {\n        return this._listeners.length;\n    }\n\n    run(args: Array<any>): number {\n        const listenerCount = this.listenerCount();\n        this._listeners = this._listeners.filter((item) => {\n\n            const argsCopy = args.slice();\n\n            // Call the callback in the next event loop\n            setTimeout(() => {\n                item.listener.apply(this, argsCopy);\n            }, 0);\n\n            // Reschedule it if it not \"once\"\n            return !(item.once);\n        });\n\n        return listenerCount;\n    }\n\n    prepareEvent(event: Event): void {\n    }\n\n    // Returns the array that will be applied to an emit\n    getEmit(event: Event): Array<any> {\n        return [ event ];\n    }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n    constructor() {\n        super(\"error\", null);\n    }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n//       or have a common abstract super class, with enough constructor\n//       options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additioanlly dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n    readonly address: string;\n    readonly interface: Interface;\n    readonly fragment: EventFragment;\n\n    constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array<string|Array<string>>) {\n        const filter: EventFilter = {\n            address: address\n        }\n\n        let topic = contractInterface.getEventTopic(fragment);\n        if (topics) {\n            if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n            filter.topics = topics.slice();\n        } else {\n            filter.topics = [ topic ];\n        }\n\n        super(getEventTag(filter), filter);\n        defineReadOnly(this, \"address\", address);\n        defineReadOnly(this, \"interface\", contractInterface);\n        defineReadOnly(this, \"fragment\", fragment);\n    }\n\n\n    prepareEvent(event: Event): void {\n        super.prepareEvent(event);\n\n        event.event = this.fragment.name;\n        event.eventSignature = this.fragment.format();\n\n        event.decode = (data: BytesLike, topics?: Array<string>) => {\n            return this.interface.decodeEventLog(this.fragment, data, topics);\n        };\n\n        try {\n            event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n        } catch (error) {\n            event.args = null;\n            event.decodeError = error;\n        }\n    }\n\n    getEmit(event: Event): Array<any> {\n        const errors = checkResultErrors(event.args);\n        if (errors.length) { throw errors[0].error; }\n\n        const args = (event.args || []).slice();\n        args.push(event);\n        return args;\n    }\n}\n\n// A Wildard Event will attempt to populate:\n//  - event            The name of the event name\n//  - eventSignature   The full signature of the event\n//  - decode           A function to decode data and topics\n//  - args             The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n    readonly address: string;\n    readonly interface: Interface;\n\n    constructor(address: string, contractInterface: Interface) {\n        super(\"*\", { address: address });\n        defineReadOnly(this, \"address\", address);\n        defineReadOnly(this, \"interface\", contractInterface);\n    }\n\n    prepareEvent(event: Event): void {\n        super.prepareEvent(event);\n\n        try {\n            const parsed = this.interface.parseLog(event);\n            event.event = parsed.name;\n            event.eventSignature = parsed.signature;\n\n            event.decode = (data: BytesLike, topics?: Array<string>) => {\n                return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n            };\n\n            event.args = parsed.args;\n        } catch (error) {\n            // No matching event\n        }\n    }\n}\n\nexport type ContractInterface = string | ReadonlyArray<Fragment | JsonFragment | string> | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n    readonly address: string;\n    readonly interface: Interface;\n\n    readonly signer: Signer;\n    readonly provider: Provider;\n\n    readonly functions: { [ name: string ]: ContractFunction };\n\n    readonly callStatic: { [ name: string ]: ContractFunction };\n    readonly estimateGas: { [ name: string ]: ContractFunction<BigNumber> };\n    readonly populateTransaction: { [ name: string ]: ContractFunction<PopulatedTransaction> };\n\n    readonly filters: { [ name: string ]: (...args: Array<any>) => EventFilter };\n\n    // This will always be an address. This will only differ from\n    // address if an ENS name was used in the constructor\n    readonly resolvedAddress: Promise<string>;\n\n    // This is only set if the contract was created with a call to deploy\n    readonly deployTransaction: TransactionResponse;\n\n    _deployedPromise: Promise<Contract>;\n\n    // A list of RunningEvents to track listsners for each event tag\n    _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n    // Wrapped functions to call emit and allow deregistration from the provider\n    _wrappedEmits: { [ eventTag: string ]: (...args: Array<any>) => void };\n\n    constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n        logger.checkNew(new.target, Contract);\n\n        // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n        //address = getAddress(address);\n        defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n\n        if (signerOrProvider == null) {\n            defineReadOnly(this, \"provider\", null);\n            defineReadOnly(this, \"signer\", null);\n        } else if (Signer.isSigner(signerOrProvider)) {\n            defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n            defineReadOnly(this, \"signer\", signerOrProvider);\n        } else if (Provider.isProvider(signerOrProvider)) {\n            defineReadOnly(this, \"provider\", signerOrProvider);\n            defineReadOnly(this, \"signer\", null);\n        } else {\n            logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n        }\n\n        defineReadOnly(this, \"callStatic\", { });\n        defineReadOnly(this, \"estimateGas\", { });\n        defineReadOnly(this, \"functions\", { });\n        defineReadOnly(this, \"populateTransaction\", { });\n\n        defineReadOnly(this, \"filters\", { });\n\n        {\n            const uniqueFilters: { [ name: string ]: Array<string> } = { };\n            Object.keys(this.interface.events).forEach((eventSignature) => {\n                const event = this.interface.events[eventSignature];\n                defineReadOnly(this.filters, eventSignature, (...args: Array<any>) => {\n                    return {\n                        address: this.address,\n                        topics: this.interface.encodeFilterTopics(event, args)\n                   }\n                });\n                if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n                uniqueFilters[event.name].push(eventSignature);\n            });\n\n            Object.keys(uniqueFilters).forEach((name) => {\n                const filters = uniqueFilters[name];\n                if (filters.length === 1) {\n                    defineReadOnly(this.filters, name, this.filters[filters[0]]);\n                } else {\n                    logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n                }\n            });\n        }\n\n        defineReadOnly(this, \"_runningEvents\", { });\n        defineReadOnly(this, \"_wrappedEmits\", { });\n\n        if (addressOrName == null) {\n            logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n        }\n\n        defineReadOnly(this, \"address\", addressOrName);\n        if (this.provider) {\n            defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n        } else {\n            try {\n                defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n            } catch (error) {\n                // Without a provider, we cannot use ENS names\n                logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n                    operation: \"new Contract\"\n                });\n            }\n        }\n\n        const uniqueNames: { [ name: string ]: Array<string> } = { };\n        const uniqueSignatures: { [ signature: string ]: boolean } = { };\n        Object.keys(this.interface.functions).forEach((signature) => {\n            const fragment = this.interface.functions[signature];\n\n            // Check that the signature is unique; if not the ABI generation has\n            // not been cleaned or may be incorrectly generated\n            if (uniqueSignatures[signature]) {\n                logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n                return;\n            }\n            uniqueSignatures[signature] = true;\n\n            // Track unique names; we only expose bare named functions if they\n            // are ambiguous\n            {\n                const name = fragment.name;\n                if (!uniqueNames[name]) { uniqueNames[name] = [ ]; }\n                uniqueNames[name].push(signature);\n            }\n\n            if ((<Contract>this)[signature] == null) {\n                defineReadOnly<any, any>(this, signature, buildDefault(this, fragment, true));\n            }\n\n            // We do not collapse simple calls on this bucket, which allows\n            // frameworks to safely use this without introspection as well as\n            // allows decoding error recovery.\n            if (this.functions[signature] == null) {\n                defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n            }\n\n            if (this.callStatic[signature] == null) {\n                defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n            }\n\n            if (this.populateTransaction[signature] == null) {\n                defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n            }\n\n            if (this.estimateGas[signature] == null) {\n                defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n            }\n        });\n\n        Object.keys(uniqueNames).forEach((name) => {\n\n            // Ambiguous names to not get attached as bare names\n            const signatures = uniqueNames[name];\n            if (signatures.length > 1) { return; }\n\n            const signature = signatures[0];\n\n            // If overwriting a member property that is null, swallow the error\n            try {\n                if ((<Contract>this)[name] == null) {\n                    defineReadOnly(<Contract>this, name, (<Contract>this)[signature]);\n                }\n            } catch (e) { }\n\n            if (this.functions[name] == null) {\n                defineReadOnly(this.functions, name, this.functions[signature]);\n            }\n\n            if (this.callStatic[name] == null) {\n                defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n            }\n\n            if (this.populateTransaction[name] == null) {\n                defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n            }\n\n            if (this.estimateGas[name] == null) {\n                defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n            }\n        });\n    }\n\n    static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n        return getContractAddress(transaction);\n    }\n\n    static getInterface(contractInterface: ContractInterface): Interface {\n        if (Interface.isInterface(contractInterface)) {\n            return contractInterface;\n        }\n        return new Interface(contractInterface);\n    }\n\n    // @TODO: Allow timeout?\n    deployed(): Promise<Contract> {\n        return this._deployed();\n    }\n\n    _deployed(blockTag?: BlockTag): Promise<Contract> {\n        if (!this._deployedPromise) {\n\n            // If we were just deployed, we know the transaction we should occur in\n            if (this.deployTransaction) {\n                this._deployedPromise = this.deployTransaction.wait().then(() => {\n                    return this;\n                });\n\n            } else {\n                // @TODO: Once we allow a timeout to be passed in, we will wait\n                // up to that many blocks for getCode\n\n                // Otherwise, poll for our code to be deployed\n                this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n                    if (code === \"0x\") {\n                        logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n                            contractAddress: this.address,\n                            operation: \"getDeployed\"\n                        });\n                    }\n                    return this;\n                });\n            }\n        }\n\n        return this._deployedPromise;\n    }\n\n    // @TODO:\n    // estimateFallback(overrides?: TransactionRequest): Promise<BigNumber>\n\n    // @TODO:\n    // estimateDeploy(bytecode: string, ...args): Promise<BigNumber>\n\n    fallback(overrides?: TransactionRequest): Promise<TransactionResponse> {\n        if (!this.signer) {\n            logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n        }\n\n        const tx: Deferrable<TransactionRequest> = shallowCopy(overrides || {});\n\n        [\"from\", \"to\"].forEach(function(key) {\n            if ((<any>tx)[key] == null) { return; }\n            logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n        });\n\n        tx.to = this.resolvedAddress;\n        return this.deployed().then(() => {\n            return this.signer.sendTransaction(tx);\n        });\n    }\n\n    // Reconnect to a different signer or provider\n    connect(signerOrProvider: Signer | Provider | string): Contract {\n        if (typeof(signerOrProvider) === \"string\") {\n            signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n        }\n\n        const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n        if (this.deployTransaction) {\n            defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n        }\n        return contract;\n    }\n\n    // Re-attach to a different on-chain instance of this contract\n    attach(addressOrName: string): Contract {\n        return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n    }\n\n    static isIndexed(value: any): value is Indexed {\n        return Indexed.isIndexed(value);\n    }\n\n    private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n        // Already have an instance of this event running; we can re-use it\n        if (this._runningEvents[runningEvent.tag]) {\n            return this._runningEvents[runningEvent.tag];\n         }\n         return runningEvent\n    }\n\n    private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n        if (typeof(eventName) === \"string\") {\n\n            // Listen for \"error\" events (if your contract has an error event, include\n            // the full signature to bypass this special event keyword)\n            if (eventName === \"error\") {\n                return this._normalizeRunningEvent(new ErrorRunningEvent());\n            }\n\n            // Listen for any event that is registered\n            if (eventName === \"event\") {\n                return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n            }\n\n            // Listen for any event\n            if (eventName === \"*\") {\n                return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n            }\n\n            // Get the event Fragment (throws if ambiguous/unknown event)\n            const fragment = this.interface.getEvent(eventName)\n            return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n        }\n\n        // We have topics to filter by...\n        if (eventName.topics && eventName.topics.length > 0) {\n\n            // Is it a known topichash? (throws if no matching topichash)\n            try {\n                const topic = eventName.topics[0];\n                if (typeof(topic) !== \"string\") {\n                    throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n                }\n                const fragment = this.interface.getEvent(topic);\n                return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n            } catch (error) { }\n\n            // Filter by the unknown topichash\n            const filter: EventFilter = {\n                address: this.address,\n                topics: eventName.topics\n            }\n\n            return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n        }\n\n        return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n    }\n\n    _checkRunningEvents(runningEvent: RunningEvent): void {\n        if (runningEvent.listenerCount() === 0) {\n            delete this._runningEvents[runningEvent.tag];\n\n            // If we have a poller for this, remove it\n            const emit = this._wrappedEmits[runningEvent.tag];\n            if (emit && runningEvent.filter) {\n                this.provider.off(runningEvent.filter, emit);\n                delete this._wrappedEmits[runningEvent.tag];\n            }\n        }\n    }\n\n    // Subclasses can override this to gracefully recover\n    // from parse errors if they wish\n    _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n        const event = <Event>deepCopy(log);\n\n        event.removeListener = () => {\n            if (!listener) { return; }\n            runningEvent.removeListener(listener);\n            this._checkRunningEvents(runningEvent);\n        };\n\n        event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n        event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n        event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n        // This may throw if the topics and data mismatch the signature\n        runningEvent.prepareEvent(event);\n\n        return event;\n    }\n\n    private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n        if (!this.provider) {\n            logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n        }\n\n        runningEvent.addListener(listener, once);\n\n        // Track this running event and its listeners (may already be there; but no hard in updating)\n        this._runningEvents[runningEvent.tag] = runningEvent;\n\n        // If we are not polling the provider, start polling\n        if (!this._wrappedEmits[runningEvent.tag]) {\n            const wrappedEmit = (log: Log) => {\n                let event = this._wrapEvent(runningEvent, log, listener);\n\n                // Try to emit the result for the parameterized event...\n                if (event.decodeError == null) {\n                    try {\n                        const args = runningEvent.getEmit(event);\n                        this.emit(runningEvent.filter, ...args);\n                    } catch (error) {\n                        event.decodeError = error.error;\n                    }\n                }\n\n                // Always emit \"event\" for fragment-base events\n                if (runningEvent.filter != null) {\n                    this.emit(\"event\", event);\n                }\n\n                // Emit \"error\" if there was an error\n                if (event.decodeError != null) {\n                    this.emit(\"error\", event.decodeError, event);\n                }\n            };\n            this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n            // Special events, like \"error\" do not have a filter\n            if (runningEvent.filter != null) {\n                this.provider.on(runningEvent.filter, wrappedEmit);\n            }\n        }\n    }\n\n    queryFilter(event: EventFilter, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise<Array<Event>> {\n        const runningEvent = this._getRunningEvent(event);\n        const filter = shallowCopy(runningEvent.filter);\n\n        if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n            if (toBlock != null) {\n                logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n            }\n            (<FilterByBlockHash>filter).blockHash = fromBlockOrBlockhash;\n        } else {\n             (<Filter>filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n             (<Filter>filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n        }\n\n        return this.provider.getLogs(filter).then((logs) => {\n            return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n        });\n    }\n\n    on(event: EventFilter | string, listener: Listener): this {\n        this._addEventListener(this._getRunningEvent(event), listener, false);\n        return this;\n    }\n\n    once(event: EventFilter | string, listener: Listener): this {\n        this._addEventListener(this._getRunningEvent(event), listener, true);\n        return this;\n    }\n\n    emit(eventName: EventFilter | string, ...args: Array<any>): boolean {\n        if (!this.provider) { return false; }\n\n        const runningEvent = this._getRunningEvent(eventName);\n        const result = (runningEvent.run(args) > 0);\n\n        // May have drained all the \"once\" events; check for living events\n        this._checkRunningEvents(runningEvent);\n\n        return result;\n    }\n\n    listenerCount(eventName?: EventFilter | string): number {\n        if (!this.provider) { return 0; }\n        if (eventName == null) {\n            return Object.keys(this._runningEvents).reduce((accum, key) => {\n                return accum + this._runningEvents[key].listenerCount();\n            }, 0);\n        }\n        return this._getRunningEvent(eventName).listenerCount();\n    }\n\n    listeners(eventName?: EventFilter | string): Array<Listener> {\n        if (!this.provider) { return []; }\n\n        if (eventName == null) {\n            const result: Array<Listener> = [ ];\n            for (let tag in this._runningEvents) {\n                this._runningEvents[tag].listeners().forEach((listener) => {\n                    result.push(listener)\n                });\n            }\n            return result;\n        }\n\n        return this._getRunningEvent(eventName).listeners();\n    }\n\n    removeAllListeners(eventName?: EventFilter | string): this {\n        if (!this.provider) { return this; }\n\n        if (eventName == null) {\n            for (const tag in this._runningEvents) {\n                const runningEvent = this._runningEvents[tag];\n                runningEvent.removeAllListeners();\n                this._checkRunningEvents(runningEvent);\n            }\n            return this;\n        }\n\n        // Delete any listeners\n        const runningEvent = this._getRunningEvent(eventName);\n        runningEvent.removeAllListeners();\n        this._checkRunningEvents(runningEvent);\n\n        return this;\n    }\n\n    off(eventName: EventFilter | string, listener: Listener): this {\n        if (!this.provider) { return this; }\n        const runningEvent = this._getRunningEvent(eventName);\n        runningEvent.removeListener(listener);\n        this._checkRunningEvents(runningEvent);\n        return this;\n    }\n\n    removeListener(eventName: EventFilter | string, listener: Listener): this {\n        return this.off(eventName, listener);\n    }\n\n}\n\nexport class Contract extends BaseContract {\n    // The meta-class properties\n    readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n    readonly interface: Interface;\n    readonly bytecode: string;\n    readonly signer: Signer;\n\n    constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n        let bytecodeHex: string = null;\n\n        if (typeof(bytecode) === \"string\") {\n            bytecodeHex = bytecode;\n        } else if (isBytes(bytecode)) {\n            bytecodeHex = hexlify(bytecode);\n        } else if (bytecode && typeof(bytecode.object) === \"string\") {\n            // Allow the bytecode object from the Solidity compiler\n            bytecodeHex = (<any>bytecode).object;\n        } else {\n            // Crash in the next verification step\n            bytecodeHex = \"!\";\n        }\n\n        // Make sure it is 0x prefixed\n        if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n        // Make sure the final result is valid bytecode\n        if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n            logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n        }\n\n        // If we have a signer, make sure it is valid\n        if (signer && !Signer.isSigner(signer)) {\n            logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n        }\n\n        defineReadOnly(this, \"bytecode\", bytecodeHex);\n        defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n        defineReadOnly(this, \"signer\", signer || null);\n    }\n\n    // @TODO: Future; rename to populteTransaction?\n    getDeployTransaction(...args: Array<any>): TransactionRequest {\n        let tx: TransactionRequest = { };\n\n        // If we have 1 additional argument, we allow transaction overrides\n        if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n            tx = shallowCopy(args.pop());\n            for (const key in tx) {\n                if (!allowedTransactionKeys[key]) {\n                    throw new Error(\"unknown transaction override \" + key);\n                }\n            }\n        }\n\n        // Do not allow these to be overridden in a deployment transaction\n        [\"data\", \"from\", \"to\"].forEach((key) => {\n            if ((<any>tx)[key] == null) { return; }\n            logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n        });\n\n        // Make sure the call matches the constructor signature\n        logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n        // Set the data to the bytecode + the encoded constructor arguments\n        tx.data = hexlify(concat([\n            this.bytecode,\n            this.interface.encodeDeploy(args)\n        ]));\n\n        return tx\n    }\n\n    async deploy(...args: Array<any>): Promise<Contract> {\n\n        let overrides: any = { };\n\n        // If 1 extra parameter was passed in, it contains overrides\n        if (args.length === this.interface.deploy.inputs.length + 1) {\n            overrides = args.pop();\n        }\n\n        // Make sure the call matches the constructor signature\n        logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n        // Resolve ENS names and promises in the arguments\n        const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n        params.push(overrides);\n\n        // Get the deployment transaction (with optional overrides)\n        const unsignedTx = this.getDeployTransaction(...params);\n\n        // Send the deployment transaction\n        const tx = await this.signer.sendTransaction(unsignedTx);\n\n        const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n        const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n        defineReadOnly(contract, \"deployTransaction\", tx);\n        return contract;\n    }\n\n    attach(address: string): Contract {\n        return (<any>(this.constructor)).getContract(address, this.interface, this.signer);\n    }\n\n    connect(signer: Signer) {\n        return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n    }\n\n    static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n        if (compilerOutput == null) {\n            logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n        }\n\n        if (typeof(compilerOutput) === \"string\") {\n            compilerOutput = JSON.parse(compilerOutput);\n        }\n\n        const abi = compilerOutput.abi;\n\n        let bytecode: any = null;\n        if (compilerOutput.bytecode) {\n            bytecode = compilerOutput.bytecode;\n        } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n            bytecode = compilerOutput.evm.bytecode;\n        }\n\n        return new this(abi, bytecode, signer);\n    }\n\n    static getInterface(contractInterface: ContractInterface) {\n        return Contract.getInterface(contractInterface);\n    }\n\n    static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n        return getContractAddress(tx);\n    }\n\n    static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n        return new Contract(address, contractInterface, signer);\n    }\n}\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n    readonly alphabet: string;\n    readonly base: number;\n\n    _alphabetMap: { [ character: string ]: number };\n    _leader: string;\n\n    constructor(alphabet: string) {\n        defineReadOnly(this, \"alphabet\", alphabet);\n        defineReadOnly(this, \"base\", alphabet.length);\n\n        defineReadOnly(this, \"_alphabetMap\", { });\n        defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n        // pre-compute lookup table\n        for (let i = 0; i < alphabet.length; i++) {\n            this._alphabetMap[alphabet.charAt(i)] = i;\n        }\n    }\n\n    encode(value: BytesLike): string {\n        let source = arrayify(value);\n\n        if (source.length === 0) { return \"\"; }\n\n        let digits = [ 0 ]\n        for (let i = 0; i < source.length; ++i) {\n            let carry = source[i];\n            for (let j = 0; j < digits.length; ++j) {\n                carry += digits[j] << 8;\n                digits[j] = carry % this.base;\n                carry = (carry / this.base) | 0;\n            }\n\n            while (carry > 0) {\n                digits.push(carry % this.base);\n                carry = (carry / this.base) | 0;\n            }\n        }\n\n        let string = \"\"\n\n        // deal with leading zeros\n        for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n            string += this._leader;\n        }\n\n        // convert digits to a string\n        for (let q = digits.length - 1; q >= 0; --q) {\n            string += this.alphabet[digits[q]];\n        }\n\n        return string;\n    }\n\n    decode(value: string): Uint8Array {\n        if (typeof(value) !== \"string\") {\n            throw new TypeError(\"Expected String\");\n        }\n\n        let bytes: Array<number> = [];\n        if (value.length === 0) { return new Uint8Array(bytes); }\n\n        bytes.push(0);\n        for (let i = 0; i < value.length; i++) {\n            let byte = this._alphabetMap[value[i]];\n\n            if (byte === undefined) {\n                throw new Error(\"Non-base\" + this.base + \" character\");\n            }\n\n            let carry = byte;\n            for (let j = 0; j < bytes.length; ++j) {\n                carry += bytes[j] * this.base;\n                bytes[j] = carry & 0xff;\n                carry >>= 8;\n            }\n\n            while (carry > 0) {\n                bytes.push(carry & 0xff);\n                carry >>= 8;\n            }\n        }\n\n        // deal with leading zeros\n        for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n            bytes.push(0)\n        }\n\n        return arrayify(new Uint8Array(bytes.reverse()))\n    }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n","export const version = \"sha2/5.4.0\";\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n    return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n    return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n    return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n    if (!SupportedAlgorithm[algorithm]) {\n        logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"hmac\",\n            algorithm: algorithm\n        });\n    }\n\n    return \"0x\" + hash.hmac((<any>hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","import { computeHmac, ripemd160, sha256, sha512 } from \"./sha2\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nexport {\n    computeHmac,\n\n    ripemd160,\n\n    sha256,\n    sha512,\n\n    SupportedAlgorithm\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, SupportedAlgorithm } from \"@ethersproject/sha2\";\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n    password = arrayify(password);\n    salt = arrayify(salt);\n    let hLen;\n    let l = 1;\n    const DK = new Uint8Array(keylen)\n    const block1 = new Uint8Array(salt.length + 4)\n    block1.set(salt);\n    //salt.copy(block1, 0, 0, salt.length)\n\n    let r: number;\n    let T: Uint8Array;\n\n    for (let i = 1; i <= l; i++) {\n        //block1.writeUInt32BE(i, salt.length)\n        block1[salt.length] = (i >> 24) & 0xff;\n        block1[salt.length + 1] = (i >> 16) & 0xff;\n        block1[salt.length + 2] = (i >> 8) & 0xff;\n        block1[salt.length + 3] = i & 0xff;\n\n        //let U = createHmac(password).update(block1).digest();\n        let U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, block1));\n\n        if (!hLen) {\n            hLen = U.length\n            T = new Uint8Array(hLen)\n            l = Math.ceil(keylen / hLen)\n            r = keylen - (l - 1) * hLen\n        }\n\n        //U.copy(T, 0, 0, hLen)\n        T.set(U);\n\n\n        for (let j = 1; j < iterations; j++) {\n            //U = createHmac(password).update(U).digest();\n            U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, U));\n            for (let k = 0; k < hLen; k++) T[k] ^= U[k]\n        }\n\n\n        const destPos = (i - 1) * hLen\n        const len = (i === l ? r : hLen)\n        //T.copy(DK, destPos, 0, len)\n        DK.set(arrayify(T).slice(0, len), destPos);\n    }\n\n    return hexlify(DK)\n}\n\n","\nexport { pbkdf2 } from \"./pbkdf2\";\n","export const version = \"wordlists/5.4.0\";\n","\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n    readonly locale: string;\n\n    constructor(locale: string) {\n        logger.checkAbstract(new.target, Wordlist);\n        defineReadOnly(this, \"locale\", locale);\n    }\n\n    abstract getWord(index: number): string;\n    abstract getWordIndex(word: string): number;\n\n    // Subclasses may override this\n    split(mnemonic: string): Array<string> {\n        return mnemonic.toLowerCase().split(/ +/g)\n    }\n\n    // Subclasses may override this\n    join(words: Array<string>): string {\n        return words.join(\" \");\n    }\n\n    static check(wordlist: Wordlist): string {\n        const words = [];\n        for (let i = 0; i < 2048; i++) {\n            const word = wordlist.getWord(i);\n            /* istanbul ignore if */\n            if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n            words.push(word);\n        }\n        return id(words.join(\"\\n\") + \"\\n\");\n    }\n\n    static register(lang: Wordlist, name?: string): void {\n        if (!name) { name = lang.locale; }\n\n        /* istanbul ignore if */\n        if (exportWordlist) {\n            try {\n                const anyGlobal = (window as any)\n                if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n                    if (!anyGlobal._ethers.wordlists[name]) {\n                         defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n                    }\n                }\n            } catch (error) { }\n        }\n    }\n\n}\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk\";\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n    wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n    }\n}\n\nclass LangCz extends Wordlist {\n    constructor() {\n        super(\"cz\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist.indexOf(word);\n    }\n}\n\nconst langCz = new LangCz();\nWordlist.register(langCz);\n\nexport { langCz };\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array<string> = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n    wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n    }\n}\n\nclass LangEn extends Wordlist {\n    constructor() {\n        super(\"en\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist.indexOf(word);\n    }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo\";\n\nconst lookup: { [word: string]: number } = {};\nlet wordlist: Array<string> = null;\n\nfunction dropDiacritic(word: string): string {\n    logger.checkNormalize();\n    return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n        return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n    }));\n}\n\nfunction expand(word: string): string {\n    const output: Array<number> = [];\n    Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n        // Acute accent\n        if (c === 47) {\n            output.push(204);\n            output.push(129);\n        // n-tilde\n        } else if (c === 126) {\n            output.push(110);\n            output.push(204);\n            output.push(131);\n        } else {\n            output.push(c);\n        }\n    });\n\n    return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n    wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n    wordlist.forEach((word, index) => {\n        lookup[dropDiacritic(word)] = index;\n    });\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for es (Spanish) FAILED\");\n    }\n}\n\nclass LangEs extends Wordlist {\n    constructor() {\n        super(\"es\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return lookup[dropDiacritic(word)];\n    }\n}\n\nconst langEs = new LangEs();\nWordlist.register(langEs);\n\nexport { langEs };\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie\";\n\nlet wordlist: Array<string> = null;\nconst lookup: { [word: string]: number } = { }\n\nfunction dropDiacritic(word: string): string {\n    logger.checkNormalize();\n    return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n        return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n    }));\n}\n\nfunction expand(word: string): string {\n    const output: Array<number> = [];\n\n    Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n        // Acute accent\n        if (c === 47) {\n            output.push(204);\n            output.push(129);\n\n        // Grave accent\n        } else if (c === 45) {\n            output.push(204);\n            output.push(128);\n\n        } else {\n            output.push(c);\n        }\n    });\n\n    return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n    wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n    wordlist.forEach((word, index) => {\n        lookup[dropDiacritic(word)] = index;\n    });\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for fr (French) FAILED\");\n    }\n}\n\nclass LangFr extends Wordlist {\n    constructor() {\n        super(\"fr\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return lookup[dropDiacritic(word)];\n    }\n}\n\nconst langFr = new LangFr();\nWordlist.register(langFr);\n\nexport { langFr };\n","\"use strict\";\n\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst data = [\n\n    // 4-kana words\n    \"AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR\",\n\n    // 5-kana words\n    \"ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR\",\n\n    // 6-kana words\n    \"AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm\",\n\n    // 7-kana words\n    \"ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC\",\n\n    // 8-kana words\n    \"BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD\",\n\n    // 9-kana words\n    \"QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD\",\n\n    // 10-kana words\n    \"IJBEJqXZJ\"\n];\n\n// Maps each character into its kana value (the index)\nconst mapping = \"~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt\"\n\nlet wordlist: Array<string> = null;\n\nfunction hex(word: string) {\n    return hexlify(toUtf8Bytes(word));\n}\n\nconst KiYoKu = \"0xe3818de38284e3818f\";\nconst KyoKu = \"0xe3818de38283e3818f\"\n\nfunction loadWords(lang: Wordlist) {\n    if (wordlist !== null) { return; }\n\n    wordlist = [];\n\n    // Transforms for normalizing (sort is a not quite UTF-8)\n    const transform: { [key: string]: string | boolean } = {};\n\n    // Delete the diacritic marks\n    transform[toUtf8String([227, 130, 154])] = false;\n    transform[toUtf8String([227, 130, 153])] = false;\n\n    // Some simple transforms that sort out most of the order\n    transform[toUtf8String([227, 130, 133])] = toUtf8String([227, 130, 134]);\n    transform[toUtf8String([227, 129, 163])] = toUtf8String([227, 129, 164]);\n    transform[toUtf8String([227, 130, 131])] = toUtf8String([227, 130, 132]);\n    transform[toUtf8String([227, 130, 135])] = toUtf8String([227, 130, 136]);\n\n\n    // Normalize words using the transform\n    function normalize(word: string) {\n        let result = \"\";\n        for (let i = 0; i < word.length; i++) {\n            let kana = word[i];\n            const target = transform[kana];\n            if (target === false) { continue; }\n            if (target) { kana = <string>target; }\n            result += kana;\n        }\n        return result;\n    }\n\n    // Sort how the Japanese list is sorted\n    function sortJapanese(a: string, b: string) {\n        a = normalize(a);\n        b = normalize(b);\n        if (a < b) { return -1; }\n        if (a > b) { return 1; }\n        return 0;\n    }\n\n    // Load all the words\n    for (let length = 3; length <= 9; length++) {\n        const d = data[length - 3];\n        for (let offset = 0; offset < d.length; offset += length) {\n            const word = [];\n            for (let i = 0; i < length; i++) {\n                 const k = mapping.indexOf(d[offset + i]);\n                 word.push(227);\n                 word.push((k & 0x40) ? 130: 129);\n                 word.push((k & 0x3f) + 128);\n            }\n            wordlist.push(toUtf8String(word));\n        }\n    }\n    wordlist.sort(sortJapanese);\n\n    // For some reason kyoku and kiyoku are flipped in node (!!).\n    // The order SHOULD be:\n    //   - kyoku\n    //   - kiyoku\n\n    // This should ignore \"if\", but that doesn't work here??\n    /* istanbul ignore next */\n    if (hex(wordlist[442]) === KiYoKu && hex(wordlist[443]) === KyoKu) {\n        const tmp = wordlist[442];\n        wordlist[442] = wordlist[443];\n        wordlist[443] = tmp;\n    }\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0xcb36b09e6baa935787fd762ce65e80b0c6a8dabdfbc3a7f86ac0e2c4fd111600\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for ja (Japanese) FAILED\");\n    }\n}\n\nclass LangJa extends Wordlist {\n    constructor() {\n        super(\"ja\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist.indexOf(word);\n    }\n\n    split(mnemonic: string): Array<string> {\n        logger.checkNormalize();\n        return mnemonic.split(/(?:\\u3000| )+/g);\n    }\n\n    join(words: Array<string>): string {\n        return words.join(\"\\u3000\");\n    }\n}\n\nconst langJa = new LangJa();\nWordlist.register(langJa);\n\nexport { langJa };\n\n","\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = [\n    \"OYAa\",\n    \"ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@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!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6\",\n    \"ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv\",\n    \"AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo\",\n    \"AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg\",\n    \"HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb\",\n    \"AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl\"\n]\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\"\n\nfunction getHangul(code: number): string {\n    if (code >= 40) {\n        code = code + 168 - 40;\n    } else if (code >= 19) {\n        code = code + 97 - 19;\n    }\n\n    return toUtf8String([ 225, (code >> 6) + 132, (code & 0x3f) + 128]);\n}\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n\n    wordlist = [];\n\n    data.forEach((data, length) => {\n        length += 4;\n        for (let i = 0; i < data.length; i += length) {\n            let word = \"\";\n            for (let j = 0; j < length; j++) {\n                word += getHangul(codes.indexOf(data[i + j]));\n            }\n            wordlist.push(word)\n        }\n    });\n\n    wordlist.sort();\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0xf9eddeace9c5d3da9c93cf7d3cd38f6a13ed3affb933259ae865714e8a3ae71a\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for ko (Korean) FAILED\");\n    }\n}\n\n\nclass LangKo extends Wordlist {\n    constructor() {\n        super(\"ko\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist.indexOf(word);\n    }\n}\n\nconst langKo = new LangKo();\nWordlist.register(langKo);\n\nexport { langKo }\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa\";\n\nlet wordlist: Array<string> = null;\n\nfunction loadWords(lang: Wordlist): void {\n    if (wordlist != null) { return; }\n    wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== \"0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620\") {\n        wordlist = null;\n        throw new Error(\"BIP39 Wordlist for it (Italian) FAILED\");\n    }\n}\n\nclass LangIt extends Wordlist {\n    constructor() {\n        super(\"it\");\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist.indexOf(word);\n    }\n}\n\nconst langIt = new LangIt();\nWordlist.register(langIt);\n\nexport { langIt }\n","\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = \"}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN<di,AM=W5%QO&ka&ua,hM^tm=zV=JA=wR&+X]7P&NB#4J#5L|/b[dA}tJ<Do&6m&u2[U1&Kb.HM&mC=w0&MW<rY,Hq#6M}QG,13&wP}Jp]Ow%ue&Kg<HP<D9~4k~9T&I2_c6$9T#9/[C5~7O~4a=cs&O7=KK=An&l9$6U$8A&uD&QI|/Y&bg}Ux&F2#6b}E2&JN&kW&kp=U/&bb=Xl<Cj}k+~5J#6L&5z&9i}b4&Fo,ho(X0_g3~4O$Fz&QE<HN=Ww]6/%GF-Vw=tj&/D&PN#9g=YO}cL&Of&PI~5I&Ip=vU=IW#9G;0o-wU}ss&QR<BT&R9=tk$PY_dh&Pq-yh]7T,nj.Xu=EP&76=cI&Fs*Xg}z7$Gb&+I=DF,AF=cA}rL#7j=Dz&3y<Aa$52=PQ}b0(iY$Fa}oL&xV#6U=ec=WZ,xh%RY<dp#9N&Fl&44=WH*A7=sh&TB&8P=07;u+&PK}uh}J5#72)V/=xC,AB$k0&f6;1E|+5=1B,3v]6n&wR%b+&xx]7f=Ol}fl;+D^wG]7E;nB;uh^Ir&l5=JL,nS=cf=g5;u6|/Q$Gc=MH%Hg#5d%M6^86=U+$Gz,l/,ir^5y&Ba&/F-IY&FI&be%IZ#77&PW_Nu$kE(Yf&NX]7Z,Jy&FJ(Xo&Nz#/d=y7&MX<Ag}Z+;nE]Dt(iG#4D=13&Pj~4c%v8&Zo%OL&/X#4W<HR&ie~6J_1O(Y2=y5=Ad*cv_eB#6k&PX:BU#7A;uk&Ft&Fx_dD=U2;vB=U5=4F}+O&GN.HH:9s=b0%NV(jO&IH=JT}Z9=VZ<Af,Kx^4m&uJ%c6,6r;9m#+L}cf%Kh&F3~4H=vP}bu,Hz|++,1w]nv}k6;uu$jw*Kl*WX&uM[x7&Fr[m7$NO&QN]hu=JN}nR^8g#/h(ps|KC;vd}xz=V0}p6&FD$G1#7K<bG_4p~8g&cf;u4=tl}+k%5/}fz;uw<cA=u1}gU}VM=LJ=eX&+L&Pr#4U}p2:nC,2K]7H:jF&9x}uX#9O=MB<fz~8X~5m&4D&kN&u5%E/(h7(ZF&VG<de(qM|/e-Wt=3x(a+,/R]f/&ND$Ro&nU}0g=KA%kH&NK$Ke<dS}cB&IX~5g$TN]6m=Uv,Is&Py=Ef%Kz#+/%bi&+A<F4$OG&4C&FL#9V<Zk=2I_eE&6c]nw&kq$HG}y+&A8$P3}OH=XP]70%IS(AJ_gH%GZ&tY&AZ=vb~6y&/r=VI=Wv<Zi=fl=xf&eL}c8}OL=MJ=g8$F7=YT}9u=0+^xC}JH&nL^N0~4T]K2,Cy%OC#6s;vG(AC^xe^cG&MF}Br#9P;wD-7h$O/&xA}Fn^PC]6i]7G&8V$Qs;vl(TB~73~4l<mW&6V=2y&uY&+3)aP}XF;LP&kx$wU=t7;uy<FN&lz)7E=Oo*Y+;wI}9q}le;J6&Ri&4t&Qr#8B=cb&vG=J5|Ql(h5<Yy~4+}QD,Lx=wn%K/&RK=dO&Pw,Q9=co%4u;9u}g0@6a^4I%b0=zo|/c&tX=dQ=OS#+b=yz_AB&wB&Pm=W9$HP_gR=62=AO=ti=hI,oA&jr&dH=tm&b6$P2(x8=zi;nG~7F;05]0n[Ix&3m}rg=Xp=cd&uz]7t;97=cN;vV<jf&FF&F1=6Q&Ik*Kk&P4,2z=fQ]7D&3u,H0=d/}Uw<ZN<7R}Kv;0f$H7,MD]7n$F0#88~9Z%da=by;+T#/u=VF&fO&kr^kf<AB]sU,I5$Ng&Pz;0i&QD&vM=Yl:BM;nJ_xJ]U7&Kf&30,3f|Z9*dC)je_jA&Q4&Kp$NH(Yz#6S&Id%Ib=KX,AD=KV%dP}tW&Pk^+E_Ni=cq,3R}VZ(Si=b+}rv;0j}rZ]uA,/w(Sx&Jv$w9&4d&wE,NJ$Gy=J/]Ls#7k<ZQ<Y/&uj]Ov$PM;v3,2F&+u:up=On&3e,Jv;90=J+&Qm]6q}bK#+d~8Y(h2]hA;99&AS=I/}qB&dQ}yJ-VM}Vl&ui,iB&G3|Dc]7d=eQ%dX%JC_1L~4d^NP;vJ&/1)ZI#7N]9X[bQ&PL=0L(UZ,Lm&kc&IR}n7(iR<AQ<dg=33=vN}ft}au]7I,Ba=x9=dR~6R&Tq=Xi,3d$Nr&Bc}DI&ku&vf]Dn,/F&iD,Ll&Nw=0y&I7=Ls=/A&tU=Qe}Ua&uk&+F=g4=gh=Vj#+1&Qn}Uy*44#5F,Pc&Rz*Xn=oh=5W;0n_Nf(iE<Y7=vr=Zu]oz#5Z%mI=kN=Bv_Jp(T2;vt_Ml<FS&uI=L/&6P]64$M7}86<bo%QX(SI%IY&VK=Al&Ux;vv;ut*E/%uh<ZE|O3,M2(yc]yu=Wk&tp:Ex}hr,Cl&WE)+Z=8U}I2_4Q,hA_si=iw=OM=tM=yZ%Ia=U7;wT}b+;uo=Za}yS!5x}HD}fb#5O_dA;Nv%uB(yB;01(Sf}Fk;v7}Pt#8v<mZ#7L,/r&Pl~4w&f5=Ph$Fw_LF&8m,bL=yJ&BH}p/*Jn}tU~5Q;wB(h6]Df]8p^+B;E4&Wc=d+;Ea&bw$8C&FN,DM=Yf}mP~5w=fT#6V=mC=Fi=AV}jB&AN}lW}aH#/D)dZ;hl;vE}/7,CJ;31&w8,hj%u9_Js=jJ&4M~8k=TN&eC}nL&uc-wi&lX}dj=Mv=e2#6u=cr$uq$6G]8W}Jb:nm=Yg<b3(UA;vX&6n&xF=KT,jC,De&R8&oY=Zv&oB]7/=Z2&Oa}bf,hh(4h^tZ&72&Nx;D2&xL~5h~40)ZG)h+=OJ&RA]Bv$yB=Oq=df,AQ%Jn}OJ;11,3z&Tl&tj;v+^Hv,Dh(id=s+]7N&N3)9Q~8f,S4=uW=w4&uX,LX&3d]CJ&yp&8x<b2_do&lP=y/<cy_dG=Oi=7R(VH(lt_1T,Iq_AA;12^6T%k6#8K[B1{oO<AU[Bt;1b$9S&Ps<8T=St{bY,jB(Zp&63&Uv$9V,PM]6v&Af}zW[bW_oq}sm}nB&Kq&gC&ff_eq_2m&5F&TI}rf}Gf;Zr_z9;ER&jk}iz_sn<BN~+n&vo=Vi%97|ZR=Wc,WE&6t]6z%85(ly#84=KY)6m_5/=aX,N3}Tm&he&6K]tR_B2-I3;u/&hU&lH<AP=iB&IA=XL;/5&Nh=wv<BH#79=vS=zl<AA=0X_RG}Bw&9p$NW,AX&kP_Lp&/Z(Tc]Mu}hs#6I}5B&cI<bq&H9#6m=K9}vH(Y1(Y0#4B&w6,/9&gG<bE,/O=zb}I4_l8<B/;wL%Qo<HO[Mq=XX}0v&BP&F4(mG}0i}nm,EC=9u{I3,xG&/9=JY*DK&hR)BX=EI=cx=b/{6k}yX%A+&wa}Xb=la;wi^lL;0t}jo&Qb=xg=XB}iO<qo{bR=NV&8f=a0&Jy;0v=uK)HK;vN#6h&jB(h/%ud&NI%wY.X7=Pt}Cu-uL&Gs_hl%mH,tm]78=Lb^Q0#7Y=1u<Bt&+Q=Co_RH,w3;1e}ux<aU;ui}U3&Q5%bt]63&UQ|0l&uL}O7&3o,AV&dm|Nj(Xt*5+(Uu&Hh(p7(UF=VR=Bp^Jl&Hd[ix)9/=Iq]C8<67]66}mB%6f}bb}JI]8T$HA}db=YM&pa=2J}tS&Y0=PS&y4=cX$6E,hX,XP&nR;04,FQ&l0&Vm_Dv#5Y~8Z=Bi%MA]6x=JO:+p,Az&9q,Hj~6/}SD=K1:EJ}nA;Qo#/E]9R,Ie&6X%W3]61&v4=xX_MC=0q;06(Xq=fs}IG}Dv=0l}o7$iZ;9v&LH&DP-7a&OY,SZ,Kz,Cv&dh=fx|Nh,F/~7q=XF&w+;9n&Gw;0h}Z7<7O&JK(S7&LS<AD<ac=wo<Dt&zw%4B=4v#8P;9o~6p*vV=Tm,Or&I6=1q}nY=P0=gq&Bl&Uu,Ch%yb}UY=zh}dh}rl(T4_xk(YA#8R*xH,IN}Jn]7V}C4&Ty}j3]7p=cL=3h&wW%Qv<Z3=f0&RI&+S(ic_zq}oN&/Y=z1;Td=LW=0e=OI(Vc,+b^ju(UL;0r:Za%8v=Rp=zw&58&73&wK}qX]6y&8E)a2}WR=wP^ur&nQ<cH}Re=Aq&wk}Q0&+q=PP,Gc|/d^k5,Fw]8Y}Pg]p3=ju=ed}r5_yf&Cs]7z$/G<Cm&Jp&54_1G_gP_Ll}JZ;0u]k8_7k(Sg]65{9i=LN&Sx&WK,iW&fD&Lk{9a}Em-9c#8N&io=sy]8d&nT&IK(lx#7/$lW(Td<s8~49,3o<7Y=MW(T+_Jr&Wd,iL}Ct=xh&5V;v4&8n%Kx=iF&l2_0B{B+,If(J0,Lv;u8=Kx-vB=HC&vS=Z6&fU&vE^xK;3D=4h=MR#45:Jw;0d}iw=LU}I5=I0]gB*im,K9}GU,1k_4U&Tt=Vs(iX&lU(TF#7y,ZO}oA&m5#5P}PN}Uz=hM<B1&FB<aG,e6~7T<tP(UQ_ZT=wu&F8)aQ]iN,1r_Lo&/g:CD}84{J1_Ki&Na&3n$jz&FE=dc;uv;va}in}ll=fv(h1&3h}fp=Cy}BM(+E~8m}lo%v7=hC(T6$cj=BQ=Bw(DR,2j=Ks,NS|F+;00=fU=70}Mb(YU;+G&m7&hr=Sk%Co]t+(X5_Jw}0r}gC(AS-IP&QK<Z2#8Q$WC]WX}T2&pG_Ka,HC=R4&/N;Z+;ch(C7,D4$3p_Mk&B2$8D=n9%Ky#5z(CT&QJ#7B]DC]gW}nf~5M;Iw#80}Tc_1F#4Z-aC}Hl=ph=fz,/3=aW}JM}nn;DG;vm}wn,4P}T3;wx&RG$u+}zK=0b;+J_Ek{re<aZ=AS}yY#5D]7q,Cp}xN=VP*2C}GZ}aG~+m_Cs=OY#6r]6g<GS}LC(UB=3A=Bo}Jy<c4}Is;1P<AG}Op<Z1}ld}nS=1Z,yM&95&98=CJ(4t:2L$Hk=Zo}Vc;+I}np&N1}9y=iv}CO*7p=jL)px]tb^zh&GS&Vl%v/;vR=14=zJ&49|/f]hF}WG;03=8P}o/&Gg&rp;DB,Kv}Ji&Pb;aA^ll(4j%yt}+K$Ht#4y&hY]7Y<F1,eN}bG(Uh%6Z]t5%G7;+F_RE;it}tL=LS&Da=Xx(S+(4f=8G=yI}cJ}WP=37=jS}pX}hd)fp<A8=Jt~+o$HJ=M6}iX=g9}CS=dv=Cj(mP%Kd,xq|+9&LD(4/=Xm&QP=Lc}LX&fL;+K=Op(lu=Qs.qC:+e&L+=Jj#8w;SL]7S(b+#4I=c1&nG_Lf&uH;+R)ZV<bV%B/,TE&0H&Jq&Ah%OF&Ss(p2,Wv&I3=Wl}Vq;1L&lJ#9b_1H=8r=b8=JH(SZ=hD=J2#7U,/U#/X~6P,FU<eL=jx,mG=hG=CE&PU=Se(qX&LY=X6=y4&tk&QQ&tf=4g&xI}W+&mZ=Dc#7w}Lg;DA;wQ_Kb(cJ=hR%yX&Yb,hw{bX_4X;EP;1W_2M}Uc=b5(YF,CM&Tp^OJ{DD]6s=vF=Yo~8q}XH}Fu%P5(SJ=Qt;MO]s8<F3&B3&8T(Ul-BS*dw&dR<87}/8]62$PZ]Lx<Au}9Q]7c=ja=KR,Go,Us&v6(qk}pG&G2=ev^GM%w4&H4]7F&dv]J6}Ew:9w=sj-ZL}Ym$+h(Ut(Um~4n=Xs(U7%eE=Qc_JR<CA#6t<Fv|/I,IS,EG<F2(Xy$/n<Fa(h9}+9_2o&N4#7X<Zq|+f_Dp=dt&na,Ca=NJ)jY=8C=YG=s6&Q+<DO}D3=xB&R1(lw;Qn<bF(Cu|/B}HV=SS&n7,10&u0]Dm%A6^4Q=WR(TD=Xo<GH,Rj(l8)bP&n/=LM&CF,F5&ml=PJ;0k=LG=tq,Rh,D6@4i=1p&+9=YC%er_Mh;nI;0q=Fw]80=xq=FM$Gv;v6&nc;wK%H2&Kj;vs,AA=YP,66}bI(qR~5U=6q~4b$Ni=K5.X3$So&Iu(p+]8G=Cf=RY(TS_O3(iH&57=fE=Dg_Do#9z#7H;FK{qd_2k%JR}en&gh_z8;Rx}9p<cN_Ne,DO;LN_7o~/p=NF=5Y}gN<ce<C1,QE]Wv=3u<BC}GK]yq}DY&u/_hj=II(pz&rC,jV&+Z}ut=NQ;Cg-SR_ZS,+o=u/;Oy_RK_QF(Fx&xP}Wr&TA,Uh&g1=yr{ax[VF$Pg(YB;Ox=Vy;+W(Sp}XV%dd&33(l/]l4#4Y}OE=6c=bw(A7&9t%wd&N/&mo,JH&Qe)fm=Ao}fu=tH\";\nconst deltaData = \"FAZDC6BALcLZCA+GBARCW8wNCcDDZ8LVFBOqqDUiou+M42TFAyERXFb7EjhP+vmBFpFrUpfDV2F7eB+eCltCHJFWLFCED+pWTojEIHFXc3aFn4F68zqjEuKidS1QBVPDEhE7NA4mhMF7oThD49ot3FgtzHFCK0acW1x8DH1EmLoIlrWFBLE+y5+NA3Cx65wJHTaEZVaK1mWAmPGxgYCdxwOjTDIt/faOEhTl1vqNsKtJCOhJWuio2g07KLZEQsFBUpNtwEByBgxFslFheFbiEPvi61msDvApxCzB6rBCzox7joYA5UdDc+Cb4FSgIabpXFAj3bjkmFAxCZE+mD/SFf/0ELecYCt3nLoxC6WEZf2tKDB4oZvrEmqFkKk7BwILA7gtYBpsTq//D4jD0F0wEB9pyQ1BD5Ba0oYHDI+sbDFhvrHXdDHfgFEIJLi5r8qercNFBgFLC4bo5ERJtamWBDFy73KCEb6M8VpmEt330ygCTK58EIIFkYgF84gtGA9Uyh3m68iVrFbWFbcbqiCYHZ9J1jeRPbL8yswhMiDbhEhdNoSwFbZrLT740ABEqgCkO8J1BLd1VhKKR4sD1yUo0z+FF59Mvg71CFbyEhbHSFBKEIKyoQNgQppq9T0KAqePu0ZFGrXOHdKJqkoTFhYvpDNyuuznrN84thJbsCoO6Cu6Xlvntvy0QYuAExQEYtTUBf3CoCqwgGFZ4u1HJFzDVwEy3cjcpV4QvsPaBC3rCGyCF23o4K3pp2gberGgFEJEHo4nHICtyKH2ZqyxhN05KBBJIQlKh/Oujv/DH32VrlqFdIFC7Fz9Ct4kaqFME0UETLprnN9kfy+kFmtQBB0+5CFu0N9Ij8l/VvJDh2oq3hT6EzjTHKFN7ZjZwoTsAZ4Exsko6Fpa6WC+sduz8jyrLpegTv2h1EBeYpLpm2czQW0KoCcS0bCVXCmuWJDBjN1nQNLdF58SFJ0h7i3pC3oEOKy/FjBklL70XvBEEIWp2yZ04xObzAWDDJG7f+DbqBEA7LyiR95j7MDVdDViz2RE5vWlBMv5e4+VfhP3aXNPhvLSynb9O2x4uFBV+3jqu6d5pCG28/sETByvmu/+IJ0L3wb4rj9DNOLBF6XPIODr4L19U9RRofAG6Nxydi8Bki8BhGJbBAJKzbJxkZSlF9Q2Cu8oKqggB9hBArwLLqEBWEtFowy8XK8bEyw9snT+BeyFk1ZCSrdmgfEwFePTgCjELBEnIbjaDDPJm36rG9pztcEzT8dGk23SBhXBB1H4z+OWze0ooFzz8pDBYFvp9j9tvFByf9y4EFdVnz026CGR5qMr7fxMHN8UUdlyJAzlTBDRC28k+L4FB8078ljyD91tUj1ocnTs8vdEf7znbzm+GIjEZnoZE5rnLL700Xc7yHfz05nWxy03vBB9YGHYOWxgMQGBCR24CVYNE1hpfKxN0zKnfJDmmMgMmBWqNbjfSyFCBWSCGCgR8yFXiHyEj+VtD1FB3FpC1zI0kFbzifiKTLm9yq5zFmur+q8FHqjoOBWsBPiDbnCC2ErunV6cJ6TygXFYHYp7MKN9RUlSIS8/xBAGYLzeqUnBF4QbsTuUkUqGs6CaiDWKWjQK9EJkjpkTmNCPYXL\";\n\n// @TODO: Load lazily\n\nconst wordlist: { [key: string]: Array<string> } = {\n    zh_cn: null,\n    zh_tw: null\n}\n\nconst Checks: { [key: string]: string } = {\n    zh_cn: \"0x17bcc4d8547e5a7135e365d1ab443aaae95e76d8230c2782c67305d4f21497a1\",\n    zh_tw: \"0x51e720e90c7b87bec1d70eb6e74a21a449bd3ec9c020b01d3a40ed991b60ce5d\"\n}\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst style = \"~!@#$%^&*_-=[]{}|;:,.()<>?\"\n\nfunction loadWords(lang: Wordlist) {\n    if (wordlist[lang.locale] !== null) { return; }\n\n    wordlist[lang.locale] = [];\n\n    let deltaOffset = 0;\n    for (let i = 0; i < 2048; i++) {\n        const s = style.indexOf(data[i * 3]);\n        const bytes = [\n            228 + (s >> 2),\n            128 + codes.indexOf(data[i * 3 + 1]),\n            128 + codes.indexOf(data[i * 3 + 2]),\n        ];\n\n        if (lang.locale === \"zh_tw\") {\n            const common = s % 4;\n            for (let i = common; i < 3; i++) {\n                bytes[i] = codes.indexOf(deltaData[deltaOffset++]) + ((i == 0) ? 228: 128);\n            }\n        }\n\n        wordlist[lang.locale].push(toUtf8String(bytes));\n    }\n\n    // Verify the computed list matches the official list\n    /* istanbul ignore if */\n    if (Wordlist.check(lang) !== Checks[lang.locale]) {\n        wordlist[lang.locale] = null;\n        throw new Error(\"BIP39 Wordlist for \" + lang.locale + \" (Chinese) FAILED\");\n    }\n}\n\nclass LangZh extends Wordlist {\n    constructor(country: string) {\n        super(\"zh_\" + country);\n    }\n\n    getWord(index: number): string {\n        loadWords(this);\n        return wordlist[this.locale][index];\n    }\n\n    getWordIndex(word: string): number {\n        loadWords(this);\n        return wordlist[this.locale].indexOf(word);\n    }\n\n    split(mnemonic: string): Array<string> {\n        mnemonic = mnemonic.replace(/(?:\\u3000| )+/g, \"\");\n        return mnemonic.split(\"\");\n    }\n}\n\nconst langZhCn = new LangZh(\"cn\");\nWordlist.register(langZhCn);\nWordlist.register(langZhCn, \"zh\");\n\nconst langZhTw = new LangZh(\"tw\");\nWordlist.register(langZhTw);\n\nexport { langZhCn, langZhTw };\n","import { Wordlist } from \"./wordlist\";\n\nimport { langCz as cz } from \"./lang-cz\";\nimport { langEn as en } from \"./lang-en\";\nimport { langEs as es } from \"./lang-es\";\nimport { langFr as fr } from \"./lang-fr\";\nimport { langJa as ja } from \"./lang-ja\";\nimport { langKo as ko } from \"./lang-ko\";\nimport { langIt as it } from \"./lang-it\";\nimport { langZhCn as zh_cn, langZhTw as zh_tw } from \"./lang-zh\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n    cz: cz,\n    en: en,\n    es: es,\n    fr: fr,\n    it: it,\n    ja: ja,\n    ko: ko,\n    zh: zh_cn,\n    zh_cn: zh_cn,\n    zh_tw: zh_tw\n};\n\n\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\nimport { logger, Wordlist } from \"./wordlist\";\n\nimport { wordlists } from \"./wordlists\";\n\nexport {\n    logger,\n    Wordlist,\n    wordlists\n}\n","export const version = \"hdnode/5.4.0\";\n","\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n   return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n   return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n    return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n    return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n    if (wordlist == null) {\n        return wordlists[\"en\"];\n    }\n\n    if (typeof(wordlist) === \"string\") {\n        const words = wordlists[wordlist];\n        if (words == null) {\n            logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n        }\n        return words;\n    }\n\n    return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n    readonly phrase: string;\n    readonly path: string;\n    readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n    readonly privateKey: string;\n    readonly publicKey: string;\n\n    readonly fingerprint: string;\n    readonly parentFingerprint: string;\n\n    readonly address: string;\n\n    readonly mnemonic?: Mnemonic;\n    readonly path: string;\n\n    readonly chainCode: string;\n\n    readonly index: number;\n    readonly depth: number;\n\n    /**\n     *  This constructor should not be called directly.\n     *\n     *  Please use:\n     *   - fromMnemonic\n     *   - fromSeed\n     */\n    constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n        logger.checkNew(new.target, HDNode);\n\n        /* istanbul ignore if */\n        if (constructorGuard !== _constructorGuard) {\n            throw new Error(\"HDNode constructor cannot be called directly\");\n        }\n\n        if (privateKey) {\n            const signingKey = new SigningKey(privateKey);\n            defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n            defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n        } else {\n            defineReadOnly(this, \"privateKey\", null);\n            defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n        }\n\n        defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n        defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n        defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n        defineReadOnly(this, \"chainCode\", chainCode);\n\n        defineReadOnly(this, \"index\", index);\n        defineReadOnly(this, \"depth\", depth);\n\n        if (mnemonicOrPath == null) {\n            // From a source that does not preserve the path (e.g. extended keys)\n            defineReadOnly(this, \"mnemonic\", null);\n            defineReadOnly(this, \"path\", null);\n\n        } else if (typeof(mnemonicOrPath) === \"string\") {\n            // From a source that does not preserve the mnemonic (e.g. neutered)\n            defineReadOnly(this, \"mnemonic\", null);\n            defineReadOnly(this, \"path\", mnemonicOrPath);\n\n        } else {\n            // From a fully qualified source\n            defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n            defineReadOnly(this, \"path\", mnemonicOrPath.path);\n        }\n    }\n\n    get extendedKey(): string {\n        // We only support the mainnet values for now, but if anyone needs\n        // testnet values, let me know. I believe current senitment is that\n        // we should always use mainnet, and use BIP-44 to derive the network\n        //   - Mainnet: public=0x0488B21E, private=0x0488ADE4\n        //   - Testnet: public=0x043587CF, private=0x04358394\n\n        if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n        return base58check(concat([\n            ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n            hexlify(this.depth),\n            this.parentFingerprint,\n            hexZeroPad(hexlify(this.index), 4),\n            this.chainCode,\n            ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n        ]));\n    }\n\n    neuter(): HDNode {\n        return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n    }\n\n    private _derive(index: number): HDNode {\n        if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n        // Base path\n        let path = this.path;\n        if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n        const data = new Uint8Array(37);\n\n        if (index & HardenedBit) {\n            if (!this.privateKey) {\n                throw new Error(\"cannot derive child of neutered node\");\n            }\n\n            // Data = 0x00 || ser_256(k_par)\n            data.set(arrayify(this.privateKey), 1);\n\n            // Hardened path\n            if (path) { path += \"'\"; }\n\n        } else {\n            // Data = ser_p(point(k_par))\n            data.set(arrayify(this.publicKey));\n        }\n\n        // Data += ser_32(i)\n        for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n        const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n        const IL = I.slice(0, 32);\n        const IR = I.slice(32);\n\n        // The private key\n        let ki: string = null\n\n        // The public key\n        let Ki: string = null;\n\n        if (this.privateKey) {\n            ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n        } else {\n            const ek = new SigningKey(hexlify(IL));\n            Ki = ek._addPoint(this.publicKey);\n        }\n\n        let mnemonicOrPath: Mnemonic | string = path;\n\n        const srcMnemonic =  this.mnemonic;\n        if (srcMnemonic) {\n            mnemonicOrPath = Object.freeze({\n                phrase: srcMnemonic.phrase,\n                path: path,\n                locale: (srcMnemonic.locale || \"en\")\n            });\n        }\n\n        return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n    }\n\n    derivePath(path: string): HDNode {\n        const components = path.split(\"/\");\n\n        if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n            throw new Error(\"invalid path - \" + path);\n        }\n\n        if (components[0] === \"m\") { components.shift(); }\n\n        let result: HDNode = this;\n        for (let i = 0; i < components.length; i++) {\n            const component = components[i];\n            if (component.match(/^[0-9]+'$/)) {\n                const index = parseInt(component.substring(0, component.length - 1));\n                if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n                result = result._derive(HardenedBit + index);\n            } else if (component.match(/^[0-9]+$/)) {\n                const index = parseInt(component);\n                if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n                result = result._derive(index);\n            } else {\n                throw new Error(\"invalid path component - \" + component);\n            }\n        }\n\n        return result;\n    }\n\n\n    static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n        const seedArray: Uint8Array = arrayify(seed);\n        if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n        const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n        return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n    }\n\n    static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n        // If a locale name was passed in, find the associated wordlist\n        wordlist = getWordlist(wordlist);\n\n        // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n        mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n        return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n            phrase: mnemonic,\n            path: \"m\",\n            locale: wordlist.locale\n        });\n    }\n\n    static fromSeed(seed: BytesLike): HDNode {\n        return HDNode._fromSeed(seed, null);\n    }\n\n    static fromExtendedKey(extendedKey: string): HDNode {\n        const bytes = Base58.decode(extendedKey);\n\n        if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n            logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n        }\n\n        const depth = bytes[4];\n        const parentFingerprint = hexlify(bytes.slice(5, 9));\n        const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n        const chainCode = hexlify(bytes.slice(13, 45));\n        const key = bytes.slice(45, 78);\n\n        switch (hexlify(bytes.slice(0, 4))) {\n            // Public Key\n            case \"0x0488b21e\": case \"0x043587cf\":\n                return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n            // Private Key\n            case \"0x0488ade4\": case \"0x04358394 \":\n                if (key[0] !== 0) { break; }\n                return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n        }\n\n        return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n    }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n    if (!password) { password = \"\"; }\n\n    const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n    return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n    wordlist = getWordlist(wordlist);\n\n    logger.checkNormalize();\n\n    const words = wordlist.split(mnemonic);\n    if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n    const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n    let offset = 0;\n    for (let i = 0; i < words.length; i++) {\n        let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n        if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n        for (let bit = 0; bit < 11; bit++) {\n            if (index & (1 << (10 - bit))) {\n                entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n            }\n            offset++;\n        }\n    }\n\n    const entropyBits = 32 * words.length / 3;\n\n    const checksumBits = words.length / 3;\n    const checksumMask = getUpperMask(checksumBits);\n\n    const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n    if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n        throw new Error(\"invalid checksum\");\n    }\n\n    return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n    wordlist = getWordlist(wordlist);\n\n    entropy = arrayify(entropy);\n\n    if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n        throw new Error(\"invalid entropy\");\n    }\n\n    const indices: Array<number> = [ 0 ];\n\n    let remainingBits = 11;\n    for (let i = 0; i < entropy.length; i++) {\n\n        // Consume the whole byte (with still more to go)\n        if (remainingBits > 8) {\n            indices[indices.length - 1] <<= 8;\n            indices[indices.length - 1] |= entropy[i];\n\n            remainingBits -= 8;\n\n        // This byte will complete an 11-bit index\n        } else {\n            indices[indices.length - 1] <<= remainingBits;\n            indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n            // Start the next word\n            indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n            remainingBits += 3;\n        }\n    }\n\n    // Compute the checksum bits\n    const checksumBits = entropy.length / 4;\n    const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n    // Shift the checksum into the word indices\n    indices[indices.length - 1] <<= checksumBits;\n    indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n    return wordlist.join(indices.map((index) => (<Wordlist>wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n    try {\n        mnemonicToEntropy(mnemonic, wordlist);\n        return true;\n    } catch (error) { }\n    return false;\n}\n\nexport function getAccountPath(index: number): string {\n    if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n        logger.throwArgumentError(\"invalid account index\", \"index\", index);\n    }\n    return `m/44'/60'/${ index }'/0/0`;\n}\n","export const version = \"random/5.4.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet anyGlobal: any = null;\ntry {\n    anyGlobal = (window as any);\n    if (anyGlobal == null) { throw new Error(\"try next\"); }\n} catch (error) {\n    try {\n        anyGlobal = (global as any);\n        if (anyGlobal == null) { throw new Error(\"try next\"); }\n    } catch (error) {\n        anyGlobal = { };\n    }\n}\n\nlet crypto: any = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n\n    logger.warn(\"WARNING: Missing strong random number source\");\n\n    crypto = {\n        getRandomValues: function(buffer: Uint8Array): Uint8Array {\n            return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"crypto.getRandomValues\"\n            });\n        }\n    };\n}\n\nexport function randomBytes(length: number): Uint8Array {\n    if (length <= 0 || length > 1024 || (length % 1)) {\n        logger.throwArgumentError(\"invalid length\", \"length\", length);\n    }\n\n    const result = new Uint8Array(length);\n    crypto.getRandomValues(result);\n    return arrayify(result);\n};\n","\"use strict\";\n\nexport function shuffled(array: Array<any>): Array<any> {\n    array = array.slice();\n\n    for (let i = array.length - 1; i > 0; i--) {\n        const j = Math.floor(Math.random() * (i + 1));\n        const tmp = array[i];\n        array[i] = array[j];\n        array[j] = tmp;\n    }\n\n    return array;\n}\n","\"use strict\";\n\nexport { randomBytes } from \"./random\";\nexport { shuffled } from \"./shuffle\";\n","\"use strict\";\n\n(function(root) {\n\n    function checkInt(value) {\n        return (parseInt(value) === value);\n    }\n\n    function checkInts(arrayish) {\n        if (!checkInt(arrayish.length)) { return false; }\n\n        for (var i = 0; i < arrayish.length; i++) {\n            if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    function coerceArray(arg, copy) {\n\n        // ArrayBuffer view\n        if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n            if (copy) {\n                if (arg.slice) {\n                    arg = arg.slice();\n                } else {\n                    arg = Array.prototype.slice.call(arg);\n                }\n            }\n\n            return arg;\n        }\n\n        // It's an array; check it is a valid representation of a byte\n        if (Array.isArray(arg)) {\n            if (!checkInts(arg)) {\n                throw new Error('Array contains invalid value: ' + arg);\n            }\n\n            return new Uint8Array(arg);\n        }\n\n        // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n        if (checkInt(arg.length) && checkInts(arg)) {\n            return new Uint8Array(arg);\n        }\n\n        throw new Error('unsupported array-like object');\n    }\n\n    function createArray(length) {\n        return new Uint8Array(length);\n    }\n\n    function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n        if (sourceStart != null || sourceEnd != null) {\n            if (sourceArray.slice) {\n                sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n            } else {\n                sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n            }\n        }\n        targetArray.set(sourceArray, targetStart);\n    }\n\n\n\n    var convertUtf8 = (function() {\n        function toBytes(text) {\n            var result = [], i = 0;\n            text = encodeURI(text);\n            while (i < text.length) {\n                var c = text.charCodeAt(i++);\n\n                // if it is a % sign, encode the following 2 bytes as a hex value\n                if (c === 37) {\n                    result.push(parseInt(text.substr(i, 2), 16))\n                    i += 2;\n\n                // otherwise, just the actual byte\n                } else {\n                    result.push(c)\n                }\n            }\n\n            return coerceArray(result);\n        }\n\n        function fromBytes(bytes) {\n            var result = [], i = 0;\n\n            while (i < bytes.length) {\n                var c = bytes[i];\n\n                if (c < 128) {\n                    result.push(String.fromCharCode(c));\n                    i++;\n                } else if (c > 191 && c < 224) {\n                    result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n                    i += 2;\n                } else {\n                    result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n                    i += 3;\n                }\n            }\n\n            return result.join('');\n        }\n\n        return {\n            toBytes: toBytes,\n            fromBytes: fromBytes,\n        }\n    })();\n\n    var convertHex = (function() {\n        function toBytes(text) {\n            var result = [];\n            for (var i = 0; i < text.length; i += 2) {\n                result.push(parseInt(text.substr(i, 2), 16));\n            }\n\n            return result;\n        }\n\n        // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n        var Hex = '0123456789abcdef';\n\n        function fromBytes(bytes) {\n                var result = [];\n                for (var i = 0; i < bytes.length; i++) {\n                    var v = bytes[i];\n                    result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n                }\n                return result.join('');\n        }\n\n        return {\n            toBytes: toBytes,\n            fromBytes: fromBytes,\n        }\n    })();\n\n\n    // Number of rounds by keysize\n    var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n    // Round constant words\n    var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n    // S-box and Inverse S-box (S is for Substitution)\n    var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n    var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n    // Transformations for encryption\n    var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n    var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n    var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n    var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n    // Transformations for decryption\n    var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n    var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n    var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n    var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n    // Transformations for decryption key expansion\n    var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n    var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n    var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n    var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n    function convertToInt32(bytes) {\n        var result = [];\n        for (var i = 0; i < bytes.length; i += 4) {\n            result.push(\n                (bytes[i    ] << 24) |\n                (bytes[i + 1] << 16) |\n                (bytes[i + 2] <<  8) |\n                 bytes[i + 3]\n            );\n        }\n        return result;\n    }\n\n    var AES = function(key) {\n        if (!(this instanceof AES)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        Object.defineProperty(this, 'key', {\n            value: coerceArray(key, true)\n        });\n\n        this._prepare();\n    }\n\n\n    AES.prototype._prepare = function() {\n\n        var rounds = numberOfRounds[this.key.length];\n        if (rounds == null) {\n            throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n        }\n\n        // encryption round keys\n        this._Ke = [];\n\n        // decryption round keys\n        this._Kd = [];\n\n        for (var i = 0; i <= rounds; i++) {\n            this._Ke.push([0, 0, 0, 0]);\n            this._Kd.push([0, 0, 0, 0]);\n        }\n\n        var roundKeyCount = (rounds + 1) * 4;\n        var KC = this.key.length / 4;\n\n        // convert the key into ints\n        var tk = convertToInt32(this.key);\n\n        // copy values into round key arrays\n        var index;\n        for (var i = 0; i < KC; i++) {\n            index = i >> 2;\n            this._Ke[index][i % 4] = tk[i];\n            this._Kd[rounds - index][i % 4] = tk[i];\n        }\n\n        // key expansion (fips-197 section 5.2)\n        var rconpointer = 0;\n        var t = KC, tt;\n        while (t < roundKeyCount) {\n            tt = tk[KC - 1];\n            tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n                      (S[(tt >>  8) & 0xFF] << 16) ^\n                      (S[ tt        & 0xFF] <<  8) ^\n                       S[(tt >> 24) & 0xFF]        ^\n                      (rcon[rconpointer] << 24));\n            rconpointer += 1;\n\n            // key expansion (for non-256 bit)\n            if (KC != 8) {\n                for (var i = 1; i < KC; i++) {\n                    tk[i] ^= tk[i - 1];\n                }\n\n            // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n            } else {\n                for (var i = 1; i < (KC / 2); i++) {\n                    tk[i] ^= tk[i - 1];\n                }\n                tt = tk[(KC / 2) - 1];\n\n                tk[KC / 2] ^= (S[ tt        & 0xFF]        ^\n                              (S[(tt >>  8) & 0xFF] <<  8) ^\n                              (S[(tt >> 16) & 0xFF] << 16) ^\n                              (S[(tt >> 24) & 0xFF] << 24));\n\n                for (var i = (KC / 2) + 1; i < KC; i++) {\n                    tk[i] ^= tk[i - 1];\n                }\n            }\n\n            // copy values into round key arrays\n            var i = 0, r, c;\n            while (i < KC && t < roundKeyCount) {\n                r = t >> 2;\n                c = t % 4;\n                this._Ke[r][c] = tk[i];\n                this._Kd[rounds - r][c] = tk[i++];\n                t++;\n            }\n        }\n\n        // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n        for (var r = 1; r < rounds; r++) {\n            for (var c = 0; c < 4; c++) {\n                tt = this._Kd[r][c];\n                this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n                                  U2[(tt >> 16) & 0xFF] ^\n                                  U3[(tt >>  8) & 0xFF] ^\n                                  U4[ tt        & 0xFF]);\n            }\n        }\n    }\n\n    AES.prototype.encrypt = function(plaintext) {\n        if (plaintext.length != 16) {\n            throw new Error('invalid plaintext size (must be 16 bytes)');\n        }\n\n        var rounds = this._Ke.length - 1;\n        var a = [0, 0, 0, 0];\n\n        // convert plaintext to (ints ^ key)\n        var t = convertToInt32(plaintext);\n        for (var i = 0; i < 4; i++) {\n            t[i] ^= this._Ke[0][i];\n        }\n\n        // apply round transforms\n        for (var r = 1; r < rounds; r++) {\n            for (var i = 0; i < 4; i++) {\n                a[i] = (T1[(t[ i         ] >> 24) & 0xff] ^\n                        T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n                        T3[(t[(i + 2) % 4] >>  8) & 0xff] ^\n                        T4[ t[(i + 3) % 4]        & 0xff] ^\n                        this._Ke[r][i]);\n            }\n            t = a.slice();\n        }\n\n        // the last round is special\n        var result = createArray(16), tt;\n        for (var i = 0; i < 4; i++) {\n            tt = this._Ke[rounds][i];\n            result[4 * i    ] = (S[(t[ i         ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n            result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n            result[4 * i + 2] = (S[(t[(i + 2) % 4] >>  8) & 0xff] ^ (tt >>  8)) & 0xff;\n            result[4 * i + 3] = (S[ t[(i + 3) % 4]        & 0xff] ^  tt       ) & 0xff;\n        }\n\n        return result;\n    }\n\n    AES.prototype.decrypt = function(ciphertext) {\n        if (ciphertext.length != 16) {\n            throw new Error('invalid ciphertext size (must be 16 bytes)');\n        }\n\n        var rounds = this._Kd.length - 1;\n        var a = [0, 0, 0, 0];\n\n        // convert plaintext to (ints ^ key)\n        var t = convertToInt32(ciphertext);\n        for (var i = 0; i < 4; i++) {\n            t[i] ^= this._Kd[0][i];\n        }\n\n        // apply round transforms\n        for (var r = 1; r < rounds; r++) {\n            for (var i = 0; i < 4; i++) {\n                a[i] = (T5[(t[ i          ] >> 24) & 0xff] ^\n                        T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n                        T7[(t[(i + 2) % 4] >>  8) & 0xff] ^\n                        T8[ t[(i + 1) % 4]        & 0xff] ^\n                        this._Kd[r][i]);\n            }\n            t = a.slice();\n        }\n\n        // the last round is special\n        var result = createArray(16), tt;\n        for (var i = 0; i < 4; i++) {\n            tt = this._Kd[rounds][i];\n            result[4 * i    ] = (Si[(t[ i         ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n            result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n            result[4 * i + 2] = (Si[(t[(i + 2) % 4] >>  8) & 0xff] ^ (tt >>  8)) & 0xff;\n            result[4 * i + 3] = (Si[ t[(i + 1) % 4]        & 0xff] ^  tt       ) & 0xff;\n        }\n\n        return result;\n    }\n\n\n    /**\n     *  Mode Of Operation - Electonic Codebook (ECB)\n     */\n    var ModeOfOperationECB = function(key) {\n        if (!(this instanceof ModeOfOperationECB)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.description = \"Electronic Code Block\";\n        this.name = \"ecb\";\n\n        this._aes = new AES(key);\n    }\n\n    ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n        plaintext = coerceArray(plaintext);\n\n        if ((plaintext.length % 16) !== 0) {\n            throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n        }\n\n        var ciphertext = createArray(plaintext.length);\n        var block = createArray(16);\n\n        for (var i = 0; i < plaintext.length; i += 16) {\n            copyArray(plaintext, block, 0, i, i + 16);\n            block = this._aes.encrypt(block);\n            copyArray(block, ciphertext, i);\n        }\n\n        return ciphertext;\n    }\n\n    ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n        ciphertext = coerceArray(ciphertext);\n\n        if ((ciphertext.length % 16) !== 0) {\n            throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n        }\n\n        var plaintext = createArray(ciphertext.length);\n        var block = createArray(16);\n\n        for (var i = 0; i < ciphertext.length; i += 16) {\n            copyArray(ciphertext, block, 0, i, i + 16);\n            block = this._aes.decrypt(block);\n            copyArray(block, plaintext, i);\n        }\n\n        return plaintext;\n    }\n\n\n    /**\n     *  Mode Of Operation - Cipher Block Chaining (CBC)\n     */\n    var ModeOfOperationCBC = function(key, iv) {\n        if (!(this instanceof ModeOfOperationCBC)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.description = \"Cipher Block Chaining\";\n        this.name = \"cbc\";\n\n        if (!iv) {\n            iv = createArray(16);\n\n        } else if (iv.length != 16) {\n            throw new Error('invalid initialation vector size (must be 16 bytes)');\n        }\n\n        this._lastCipherblock = coerceArray(iv, true);\n\n        this._aes = new AES(key);\n    }\n\n    ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n        plaintext = coerceArray(plaintext);\n\n        if ((plaintext.length % 16) !== 0) {\n            throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n        }\n\n        var ciphertext = createArray(plaintext.length);\n        var block = createArray(16);\n\n        for (var i = 0; i < plaintext.length; i += 16) {\n            copyArray(plaintext, block, 0, i, i + 16);\n\n            for (var j = 0; j < 16; j++) {\n                block[j] ^= this._lastCipherblock[j];\n            }\n\n            this._lastCipherblock = this._aes.encrypt(block);\n            copyArray(this._lastCipherblock, ciphertext, i);\n        }\n\n        return ciphertext;\n    }\n\n    ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n        ciphertext = coerceArray(ciphertext);\n\n        if ((ciphertext.length % 16) !== 0) {\n            throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n        }\n\n        var plaintext = createArray(ciphertext.length);\n        var block = createArray(16);\n\n        for (var i = 0; i < ciphertext.length; i += 16) {\n            copyArray(ciphertext, block, 0, i, i + 16);\n            block = this._aes.decrypt(block);\n\n            for (var j = 0; j < 16; j++) {\n                plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n            }\n\n            copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n        }\n\n        return plaintext;\n    }\n\n\n    /**\n     *  Mode Of Operation - Cipher Feedback (CFB)\n     */\n    var ModeOfOperationCFB = function(key, iv, segmentSize) {\n        if (!(this instanceof ModeOfOperationCFB)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.description = \"Cipher Feedback\";\n        this.name = \"cfb\";\n\n        if (!iv) {\n            iv = createArray(16);\n\n        } else if (iv.length != 16) {\n            throw new Error('invalid initialation vector size (must be 16 size)');\n        }\n\n        if (!segmentSize) { segmentSize = 1; }\n\n        this.segmentSize = segmentSize;\n\n        this._shiftRegister = coerceArray(iv, true);\n\n        this._aes = new AES(key);\n    }\n\n    ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n        if ((plaintext.length % this.segmentSize) != 0) {\n            throw new Error('invalid plaintext size (must be segmentSize bytes)');\n        }\n\n        var encrypted = coerceArray(plaintext, true);\n\n        var xorSegment;\n        for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n            xorSegment = this._aes.encrypt(this._shiftRegister);\n            for (var j = 0; j < this.segmentSize; j++) {\n                encrypted[i + j] ^= xorSegment[j];\n            }\n\n            // Shift the register\n            copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n            copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n        }\n\n        return encrypted;\n    }\n\n    ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n        if ((ciphertext.length % this.segmentSize) != 0) {\n            throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n        }\n\n        var plaintext = coerceArray(ciphertext, true);\n\n        var xorSegment;\n        for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n            xorSegment = this._aes.encrypt(this._shiftRegister);\n\n            for (var j = 0; j < this.segmentSize; j++) {\n                plaintext[i + j] ^= xorSegment[j];\n            }\n\n            // Shift the register\n            copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n            copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n        }\n\n        return plaintext;\n    }\n\n    /**\n     *  Mode Of Operation - Output Feedback (OFB)\n     */\n    var ModeOfOperationOFB = function(key, iv) {\n        if (!(this instanceof ModeOfOperationOFB)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.description = \"Output Feedback\";\n        this.name = \"ofb\";\n\n        if (!iv) {\n            iv = createArray(16);\n\n        } else if (iv.length != 16) {\n            throw new Error('invalid initialation vector size (must be 16 bytes)');\n        }\n\n        this._lastPrecipher = coerceArray(iv, true);\n        this._lastPrecipherIndex = 16;\n\n        this._aes = new AES(key);\n    }\n\n    ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n        var encrypted = coerceArray(plaintext, true);\n\n        for (var i = 0; i < encrypted.length; i++) {\n            if (this._lastPrecipherIndex === 16) {\n                this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n                this._lastPrecipherIndex = 0;\n            }\n            encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n        }\n\n        return encrypted;\n    }\n\n    // Decryption is symetric\n    ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n    /**\n     *  Counter object for CTR common mode of operation\n     */\n    var Counter = function(initialValue) {\n        if (!(this instanceof Counter)) {\n            throw Error('Counter must be instanitated with `new`');\n        }\n\n        // We allow 0, but anything false-ish uses the default 1\n        if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n        if (typeof(initialValue) === 'number') {\n            this._counter = createArray(16);\n            this.setValue(initialValue);\n\n        } else {\n            this.setBytes(initialValue);\n        }\n    }\n\n    Counter.prototype.setValue = function(value) {\n        if (typeof(value) !== 'number' || parseInt(value) != value) {\n            throw new Error('invalid counter value (must be an integer)');\n        }\n\n        for (var index = 15; index >= 0; --index) {\n            this._counter[index] = value % 256;\n            value = value >> 8;\n        }\n    }\n\n    Counter.prototype.setBytes = function(bytes) {\n        bytes = coerceArray(bytes, true);\n\n        if (bytes.length != 16) {\n            throw new Error('invalid counter bytes size (must be 16 bytes)');\n        }\n\n        this._counter = bytes;\n    };\n\n    Counter.prototype.increment = function() {\n        for (var i = 15; i >= 0; i--) {\n            if (this._counter[i] === 255) {\n                this._counter[i] = 0;\n            } else {\n                this._counter[i]++;\n                break;\n            }\n        }\n    }\n\n\n    /**\n     *  Mode Of Operation - Counter (CTR)\n     */\n    var ModeOfOperationCTR = function(key, counter) {\n        if (!(this instanceof ModeOfOperationCTR)) {\n            throw Error('AES must be instanitated with `new`');\n        }\n\n        this.description = \"Counter\";\n        this.name = \"ctr\";\n\n        if (!(counter instanceof Counter)) {\n            counter = new Counter(counter)\n        }\n\n        this._counter = counter;\n\n        this._remainingCounter = null;\n        this._remainingCounterIndex = 16;\n\n        this._aes = new AES(key);\n    }\n\n    ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n        var encrypted = coerceArray(plaintext, true);\n\n        for (var i = 0; i < encrypted.length; i++) {\n            if (this._remainingCounterIndex === 16) {\n                this._remainingCounter = this._aes.encrypt(this._counter._counter);\n                this._remainingCounterIndex = 0;\n                this._counter.increment();\n            }\n            encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n        }\n\n        return encrypted;\n    }\n\n    // Decryption is symetric\n    ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n    ///////////////////////\n    // Padding\n\n    // See:https://tools.ietf.org/html/rfc2315\n    function pkcs7pad(data) {\n        data = coerceArray(data, true);\n        var padder = 16 - (data.length % 16);\n        var result = createArray(data.length + padder);\n        copyArray(data, result);\n        for (var i = data.length; i < result.length; i++) {\n            result[i] = padder;\n        }\n        return result;\n    }\n\n    function pkcs7strip(data) {\n        data = coerceArray(data, true);\n        if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n        var padder = data[data.length - 1];\n        if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n        var length = data.length - padder;\n        for (var i = 0; i < padder; i++) {\n            if (data[length + i] !== padder) {\n                throw new Error('PKCS#7 invalid padding byte');\n            }\n        }\n\n        var result = createArray(length);\n        copyArray(data, result, 0, 0, length);\n        return result;\n    }\n\n    ///////////////////////\n    // Exporting\n\n\n    // The block cipher\n    var aesjs = {\n        AES: AES,\n        Counter: Counter,\n\n        ModeOfOperation: {\n            ecb: ModeOfOperationECB,\n            cbc: ModeOfOperationCBC,\n            cfb: ModeOfOperationCFB,\n            ofb: ModeOfOperationOFB,\n            ctr: ModeOfOperationCTR\n        },\n\n        utils: {\n            hex: convertHex,\n            utf8: convertUtf8\n        },\n\n        padding: {\n            pkcs7: {\n                pad: pkcs7pad,\n                strip: pkcs7strip\n            }\n        },\n\n        _arrayTest: {\n            coerceArray: coerceArray,\n            createArray: createArray,\n            copyArray: copyArray,\n        }\n    };\n\n\n    // node.js\n    if (typeof exports !== 'undefined') {\n        module.exports = aesjs\n\n    // RequireJS/AMD\n    // http://www.requirejs.org/docs/api.html\n    // https://github.com/amdjs/amdjs-api/wiki/AMD\n    } else if (typeof(define) === 'function' && define.amd) {\n        define(aesjs);\n\n    // Web Browsers\n    } else {\n\n        // If there was an existing library at \"aesjs\" make sure it's still available\n        if (root.aesjs) {\n            aesjs._aesjs = root.aesjs;\n        }\n\n        root.aesjs = aesjs;\n    }\n\n\n})(this);\n","export const version = \"json-wallets/5.4.0\";\n","\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n    if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n        hexString = '0x' + hexString;\n    }\n    return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n    value = String(value);\n    while (value.length < length) { value = '0' + value; }\n    return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n    if (typeof(password) === 'string') {\n        return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n    }\n    return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n    let currentChild = object;\n\n    const comps = path.toLowerCase().split('/');\n    for (let i = 0; i < comps.length; i++) {\n\n        // Search for a child object with a case-insensitive matching key\n        let matchingChild = null;\n        for (const key in currentChild) {\n             if (key.toLowerCase() === comps[i]) {\n                 matchingChild = currentChild[key];\n                 break;\n             }\n        }\n\n        // Didn't find one. :'(\n        if (matchingChild === null) {\n            return null;\n        }\n\n        // Now check this child...\n        currentChild = matchingChild;\n    }\n\n    return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n    const bytes = arrayify(randomBytes);\n\n    // Section: 4.1.3:\n    // - time_hi_and_version[12:16] = 0b0100\n    bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n    // Section 4.4\n    // - clock_seq_hi_and_reserved[6] = 0b0\n    // - clock_seq_hi_and_reserved[7] = 0b1\n    bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n    const value = hexlify(bytes);\n\n    return [\n       value.substring(2, 10),\n       value.substring(10, 14),\n       value.substring(14, 18),\n       value.substring(18, 22),\n       value.substring(22, 34),\n    ].join(\"-\");\n}\n\n","\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n    address: string;\n    privateKey: string;\n\n    _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n    readonly address: string;\n    readonly privateKey: string;\n    readonly mnemonic?: string;\n    readonly path?: string;\n\n    readonly _isCrowdsaleAccount: boolean;\n\n    isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n        return !!(value && value._isCrowdsaleAccount);\n    }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n    const data = JSON.parse(json);\n\n    password = getPassword(password);\n\n    // Ethereum Address\n    const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n    // Encrypted Seed\n    const encseed = looseArrayify(searchPath(data, \"encseed\"));\n    if (!encseed || (encseed.length % 16) !== 0) {\n        logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n    }\n\n    const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n    const iv = encseed.slice(0, 16);\n    const encryptedSeed = encseed.slice(16);\n\n    // Decrypt the seed\n    const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n    const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n    // This wallet format is weird... Convert the binary encoded hex to a string.\n    let seedHex = \"\";\n    for (let i = 0; i < seed.length; i++) {\n        seedHex += String.fromCharCode(seed[i]);\n    }\n\n    const seedHexBytes = toUtf8Bytes(seedHex);\n\n    const privateKey = keccak256(seedHexBytes);\n\n    return new CrowdsaleAccount ({\n        _isCrowdsaleAccount: true,\n        address: ethaddr,\n        privateKey: privateKey\n    });\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n    let data: any = null;\n    try {\n        data = JSON.parse(json);\n    } catch (error) { return false; }\n\n    return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n    let data: any = null;\n    try {\n        data = JSON.parse(json);\n    } catch (error) { return false; }\n\n    if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n        return false;\n    }\n\n    // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n    return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n//    return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n    if (isCrowdsaleWallet(json)) {\n        try {\n            return getAddress(JSON.parse(json).ethaddr);\n        } catch (error) { return null; }\n    }\n\n    if (isKeystoreWallet(json)) {\n        try {\n            return getAddress(JSON.parse(json).address);\n        } catch (error) { return null; }\n    }\n\n    return null;\n}\n\n","\"use strict\";\n\n(function(root) {\n    const MAX_VALUE = 0x7fffffff;\n\n    // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n    // See: https://github.com/dchest/scrypt-async-js\n    function SHA256(m) {\n        const K = new Uint32Array([\n           0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n           0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n           0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n           0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n           0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n           0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n           0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n           0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n           0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n           0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n       ]);\n\n        let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n        let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n        const w = new Uint32Array(64);\n\n        function blocks(p) {\n            let off = 0, len = p.length;\n            while (len >= 64) {\n                let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n                for (i = 0; i < 16; i++) {\n                    j = off + i*4;\n                    w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n                    ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n                }\n\n                for (i = 16; i < 64; i++) {\n                    u = w[i-2];\n                    t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n                    u = w[i-15];\n                    t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n                    w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n                }\n\n                for (i = 0; i < 64; i++) {\n                    t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n                             ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n                          ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n                    t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n                           ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (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                h0 = (h0 + a) | 0;\n                h1 = (h1 + b) | 0;\n                h2 = (h2 + c) | 0;\n                h3 = (h3 + d) | 0;\n                h4 = (h4 + e) | 0;\n                h5 = (h5 + f) | 0;\n                h6 = (h6 + g) | 0;\n                h7 = (h7 + h) | 0;\n\n                off += 64;\n                len -= 64;\n            }\n        }\n\n        blocks(m);\n\n        let i, bytesLeft = m.length % 64,\n        bitLenHi = (m.length / 0x20000000) | 0,\n        bitLenLo = m.length << 3,\n        numZeros = (bytesLeft < 56) ? 56 : 120,\n        p = m.slice(m.length - bytesLeft, m.length);\n\n        p.push(0x80);\n        for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n        p.push((bitLenHi >>> 24) & 0xff);\n        p.push((bitLenHi >>> 16) & 0xff);\n        p.push((bitLenHi >>> 8)  & 0xff);\n        p.push((bitLenHi >>> 0)  & 0xff);\n        p.push((bitLenLo >>> 24) & 0xff);\n        p.push((bitLenLo >>> 16) & 0xff);\n        p.push((bitLenLo >>> 8)  & 0xff);\n        p.push((bitLenLo >>> 0)  & 0xff);\n\n        blocks(p);\n\n        return [\n            (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n            (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n            (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n            (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n            (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n            (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n            (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n            (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n        ];\n    }\n\n    function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n        // compress password if it's longer than hash block length\n        password = (password.length <= 64) ? password : SHA256(password);\n\n        const innerLen = 64 + salt.length + 4;\n        const inner = new Array(innerLen);\n        const outerKey = new Array(64);\n\n        let i;\n        let dk = [];\n\n        // inner = (password ^ ipad) || salt || counter\n        for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n        for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n        for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n        for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n        // outerKey = password ^ opad\n        for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n        for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n        // increments counter inside inner\n        function incrementCounter() {\n            for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n                inner[i]++;\n                if (inner[i] <= 0xff) return;\n                inner[i] = 0;\n            }\n        }\n\n        // output blocks = SHA256(outerKey || SHA256(inner)) ...\n        while (dkLen >= 32) {\n            incrementCounter();\n            dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n            dkLen -= 32;\n        }\n        if (dkLen > 0) {\n            incrementCounter();\n            dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n        }\n\n        return dk;\n    }\n\n    // The following is an adaptation of scryptsy\n    // See: https://www.npmjs.com/package/scryptsy\n    function blockmix_salsa8(BY, Yi, r, x, _X) {\n        let i;\n\n        arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n        for (i = 0; i < 2 * r; i++) {\n            blockxor(BY, i * 16, _X, 16);\n            salsa20_8(_X, x);\n            arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n        }\n\n        for (i = 0; i < r; i++) {\n            arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n        }\n\n        for (i = 0; i < r; i++) {\n            arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n        }\n    }\n\n    function R(a, b) {\n        return (a << b) | (a >>> (32 - b));\n    }\n\n    function salsa20_8(B, x) {\n        arraycopy(B, 0, x, 0, 16);\n\n        for (let i = 8; i > 0; i -= 2) {\n            x[ 4] ^= R(x[ 0] + x[12], 7);\n            x[ 8] ^= R(x[ 4] + x[ 0], 9);\n            x[12] ^= R(x[ 8] + x[ 4], 13);\n            x[ 0] ^= R(x[12] + x[ 8], 18);\n            x[ 9] ^= R(x[ 5] + x[ 1], 7);\n            x[13] ^= R(x[ 9] + x[ 5], 9);\n            x[ 1] ^= R(x[13] + x[ 9], 13);\n            x[ 5] ^= R(x[ 1] + x[13], 18);\n            x[14] ^= R(x[10] + x[ 6], 7);\n            x[ 2] ^= R(x[14] + x[10], 9);\n            x[ 6] ^= R(x[ 2] + x[14], 13);\n            x[10] ^= R(x[ 6] + x[ 2], 18);\n            x[ 3] ^= R(x[15] + x[11], 7);\n            x[ 7] ^= R(x[ 3] + x[15], 9);\n            x[11] ^= R(x[ 7] + x[ 3], 13);\n            x[15] ^= R(x[11] + x[ 7], 18);\n            x[ 1] ^= R(x[ 0] + x[ 3], 7);\n            x[ 2] ^= R(x[ 1] + x[ 0], 9);\n            x[ 3] ^= R(x[ 2] + x[ 1], 13);\n            x[ 0] ^= R(x[ 3] + x[ 2], 18);\n            x[ 6] ^= R(x[ 5] + x[ 4], 7);\n            x[ 7] ^= R(x[ 6] + x[ 5], 9);\n            x[ 4] ^= R(x[ 7] + x[ 6], 13);\n            x[ 5] ^= R(x[ 4] + x[ 7], 18);\n            x[11] ^= R(x[10] + x[ 9], 7);\n            x[ 8] ^= R(x[11] + x[10], 9);\n            x[ 9] ^= R(x[ 8] + x[11], 13);\n            x[10] ^= R(x[ 9] + x[ 8], 18);\n            x[12] ^= R(x[15] + x[14], 7);\n            x[13] ^= R(x[12] + x[15], 9);\n            x[14] ^= R(x[13] + x[12], 13);\n            x[15] ^= R(x[14] + x[13], 18);\n        }\n\n        for (let i = 0; i < 16; ++i) {\n            B[i] += x[i];\n        }\n    }\n\n    // naive approach... going back to loop unrolling may yield additional performance\n    function blockxor(S, Si, D, len) {\n        for (let i = 0; i < len; i++) {\n            D[i] ^= S[Si + i]\n        }\n    }\n\n    function arraycopy(src, srcPos, dest, destPos, length) {\n        while (length--) {\n            dest[destPos++] = src[srcPos++];\n        }\n    }\n\n    function checkBufferish(o) {\n        if (!o || typeof(o.length) !== 'number') { return false; }\n\n        for (let i = 0; i < o.length; i++) {\n            const v = o[i];\n            if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    function ensureInteger(value, name) {\n        if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n        return value;\n    }\n\n    // N = Cpu cost, r = Memory cost, p = parallelization cost\n    // callback(error, progress, key)\n    function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n        N = ensureInteger(N, 'N');\n        r = ensureInteger(r, 'r');\n        p = ensureInteger(p, 'p');\n\n        dkLen = ensureInteger(dkLen, 'dkLen');\n\n        if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n        if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n        if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n        if (!checkBufferish(password)) {\n            throw new Error('password must be an array or buffer');\n        }\n        password = Array.prototype.slice.call(password);\n\n        if (!checkBufferish(salt)) {\n            throw new Error('salt must be an array or buffer');\n        }\n        salt = Array.prototype.slice.call(salt);\n\n        let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n        const B = new Uint32Array(p * 32 * r)\n        for (let i = 0; i < B.length; i++) {\n            const j = i * 4;\n            B[i] = ((b[j + 3] & 0xff) << 24) |\n                   ((b[j + 2] & 0xff) << 16) |\n                   ((b[j + 1] & 0xff) << 8) |\n                   ((b[j + 0] & 0xff) << 0);\n        }\n\n        const XY = new Uint32Array(64 * r);\n        const V = new Uint32Array(32 * r * N);\n\n        const Yi = 32 * r;\n\n        // scratch space\n        const x = new Uint32Array(16);       // salsa20_8\n        const _X = new Uint32Array(16);      // blockmix_salsa8\n\n        const totalOps = p * N * 2;\n        let currentOp = 0;\n        let lastPercent10 = null;\n\n        // Set this to true to abandon the scrypt on the next step\n        let stop = false;\n\n        // State information\n        let state = 0;\n        let i0 = 0, i1;\n        let Bi;\n\n        // How many blockmix_salsa8 can we do per step?\n        const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n        // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n        const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n        // This is really all I changed; making scryptsy a state machine so we occasionally\n        // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n        const incrementalSMix = function() {\n            if (stop) {\n                return callback(new Error('cancelled'), currentOp / totalOps);\n            }\n\n            let steps;\n\n            switch (state) {\n                case 0:\n                    // for (var i = 0; i < p; i++)...\n                    Bi = i0 * 32 * r;\n\n                    arraycopy(B, Bi, XY, 0, Yi);                       // ROMix - 1\n\n                    state = 1;                                         // Move to ROMix 2\n                    i1 = 0;\n\n                    // Fall through\n\n                case 1:\n\n                    // Run up to 1000 steps of the first inner smix loop\n                    steps = N - i1;\n                    if (steps > limit) { steps = limit; }\n                    for (let i = 0; i < steps; i++) {                  // ROMix - 2\n                        arraycopy(XY, 0, V, (i1 + i) * Yi, Yi)         // ROMix - 3\n                        blockmix_salsa8(XY, Yi, r, x, _X);             // ROMix - 4\n                    }\n\n                    // for (var i = 0; i < N; i++)\n                    i1 += steps;\n                    currentOp += steps;\n\n                    if (callback) {\n                        // Call the callback with the progress (optionally stopping us)\n                        const percent10 = parseInt(1000 * currentOp / totalOps);\n                        if (percent10 !== lastPercent10) {\n                            stop = callback(null, currentOp / totalOps);\n                            if (stop) { break; }\n                            lastPercent10 = percent10;\n                        }\n                    }\n\n                    if (i1 < N) { break; }\n\n                    i1 = 0;                                          // Move to ROMix 6\n                    state = 2;\n\n                    // Fall through\n\n                case 2:\n\n                    // Run up to 1000 steps of the second inner smix loop\n                    steps = N - i1;\n                    if (steps > limit) { steps = limit; }\n                    for (let i = 0; i < steps; i++) {                // ROMix - 6\n                        const offset = (2 * r - 1) * 16;             // ROMix - 7\n                        const j = XY[offset] & (N - 1);\n                        blockxor(V, j * Yi, XY, Yi);                 // ROMix - 8 (inner)\n                        blockmix_salsa8(XY, Yi, r, x, _X);           // ROMix - 9 (outer)\n                    }\n\n                    // for (var i = 0; i < N; i++)...\n                    i1 += steps;\n                    currentOp += steps;\n\n                    // Call the callback with the progress (optionally stopping us)\n                    if (callback) {\n                        const percent10 = parseInt(1000 * currentOp / totalOps);\n                        if (percent10 !== lastPercent10) {\n                            stop = callback(null, currentOp / totalOps);\n                            if (stop) { break; }\n                            lastPercent10 = percent10;\n                        }\n                    }\n\n                    if (i1 < N) { break; }\n\n                    arraycopy(XY, 0, B, Bi, Yi);                     // ROMix - 10\n\n                    // for (var i = 0; i < p; i++)...\n                    i0++;\n                    if (i0 < p) {\n                        state = 0;\n                        break;\n                    }\n\n                    b = [];\n                    for (let i = 0; i < B.length; i++) {\n                        b.push((B[i] >>  0) & 0xff);\n                        b.push((B[i] >>  8) & 0xff);\n                        b.push((B[i] >> 16) & 0xff);\n                        b.push((B[i] >> 24) & 0xff);\n                    }\n\n                    const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n                    // Send the result to the callback\n                    if (callback) { callback(null, 1.0, derivedKey); }\n\n                    // Done; don't break (which would reschedule)\n                    return derivedKey;\n            }\n\n            // Schedule the next steps\n            if (callback) { nextTick(incrementalSMix); }\n        }\n\n        // Run the smix state machine until completion\n        if (!callback) {\n            while (true) {\n                const derivedKey = incrementalSMix();\n                if (derivedKey != undefined) { return derivedKey; }\n            }\n        }\n\n        // Bootstrap the async incremental smix\n        incrementalSMix();\n    }\n\n    const lib = {\n        scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n            return new Promise(function(resolve, reject) {\n                let lastProgress = 0;\n                if (progressCallback) { progressCallback(0); }\n                _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n                    if (error) {\n                        reject(error);\n                    } else if (key) {\n                        if (progressCallback && lastProgress !== 1) {\n                            progressCallback(1);\n                        }\n                        resolve(new Uint8Array(key));\n                    } else if (progressCallback && progress !== lastProgress) {\n                        lastProgress = progress;\n                        return progressCallback(progress);\n                    }\n                });\n            });\n        },\n        syncScrypt: function(password, salt, N, r, p, dkLen) {\n            return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n        }\n    };\n\n    // node.js\n    if (typeof(exports) !== 'undefined') {\n       module.exports = lib;\n\n    // RequireJS/AMD\n    // http://www.requirejs.org/docs/api.html\n    // https://github.com/amdjs/amdjs-api/wiki/AMD\n    } else if (typeof(define) === 'function' && define.amd) {\n        define(lib);\n\n    // Web Browsers\n    } else if (root) {\n\n        // If there was an existing library \"scrypt\", make sure it is still available\n        if (root.scrypt) {\n            root._scrypt = root.scrypt;\n        }\n\n        root.scrypt = lib;\n    }\n\n})(this);\n","\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n    return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n    address: string;\n    privateKey: string;\n    mnemonic?: Mnemonic;\n\n    _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n    readonly address: string;\n    readonly privateKey: string;\n    readonly mnemonic?: Mnemonic;\n\n    readonly _isKeystoreAccount: boolean;\n\n    isKeystoreAccount(value: any): value is KeystoreAccount {\n        return !!(value && value._isKeystoreAccount);\n    }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n   iv?: BytesLike;\n   entropy?: BytesLike;\n   client?: string;\n   salt?: BytesLike;\n   uuid?: string;\n   scrypt?: {\n       N?: number;\n       r?: number;\n       p?: number;\n   }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n    const cipher = searchPath(data, \"crypto/cipher\");\n    if (cipher === \"aes-128-ctr\") {\n        const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n        const counter = new aes.Counter(iv);\n\n        const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n        return arrayify(aesCtr.decrypt(ciphertext));\n    }\n\n    return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n    const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n    const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n    if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n        throw new Error(\"invalid password\");\n    }\n\n    const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n    if (!privateKey) {\n        logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"decrypt\"\n        });\n    }\n\n    const mnemonicKey = key.slice(32, 64);\n\n    const address = computeAddress(privateKey);\n    if (data.address) {\n        let check = data.address.toLowerCase();\n        if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n        if (getAddress(check) !== address) {\n            throw new Error(\"address mismatch\");\n        }\n    }\n\n    const account: _KeystoreAccount = {\n        _isKeystoreAccount: true,\n        address: address,\n        privateKey: hexlify(privateKey)\n    };\n\n    // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n    if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n        const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n        const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n        const mnemonicCounter = new aes.Counter(mnemonicIv);\n        const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n        const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n        const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n        const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n        try {\n            const mnemonic = entropyToMnemonic(entropy, locale);\n            const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n            if (node.privateKey != account.privateKey) {\n                throw new Error(\"mnemonic mismatch\");\n            }\n\n            account.mnemonic = node.mnemonic;\n\n        } catch (error) {\n            // If we don't have the locale wordlist installed to\n            // read this mnemonic, just bail and don't set the\n            // mnemonic\n            if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n                throw error;\n            }\n        }\n    }\n\n    return new KeystoreAccount(account);\n}\n\ntype ScryptFunc<T> = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func<T> = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n    return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise<Uint8Array> {\n    return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey<T>(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func<T>, scryptFunc: ScryptFunc<T>, progressCallback?: ProgressCallback): T {\n    const passwordBytes = getPassword(password);\n\n    const kdf = searchPath(data, \"crypto/kdf\");\n\n    if (kdf && typeof(kdf) === \"string\") {\n        const throwError = function(name: string, value: any): never {\n            return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n        }\n\n        if (kdf.toLowerCase() === \"scrypt\") {\n            const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n            const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n            const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n            const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n            // Check for all required parameters\n            if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n            // Make sure N is a power of 2\n            if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n            const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n            if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n            return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n        } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n            const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n            let prfFunc: string = null;\n            const prf = searchPath(data, \"crypto/kdfparams/prf\");\n            if (prf === \"hmac-sha256\") {\n                prfFunc = \"sha256\";\n            } else if (prf === \"hmac-sha512\") {\n                prfFunc = \"sha512\";\n            } else {\n                throwError(\"prf\", prf);\n            }\n\n            const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n            const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n            if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n            return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n        }\n    }\n\n    return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n    const data = JSON.parse(json);\n\n    const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n    return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<KeystoreAccount> {\n    const data = JSON.parse(json);\n\n    const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n    return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise<string> {\n\n    try {\n        // Check the address matches the private key\n        if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n            throw new Error(\"address/privateKey mismatch\");\n        }\n\n        // Check the mnemonic (if any) matches the private key\n        if (hasMnemonic(account)) {\n            const mnemonic = account.mnemonic;\n            const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n            if (node.privateKey != account.privateKey) {\n                throw new Error(\"mnemonic mismatch\");\n            }\n        }\n\n    } catch (e) {\n        return Promise.reject(e);\n    }\n\n    // The options are optional, so adjust the call as needed\n    if (typeof(options) === \"function\" && !progressCallback) {\n        progressCallback = options;\n        options = {};\n    }\n    if (!options) { options = {}; }\n\n    const privateKey: Uint8Array = arrayify(account.privateKey);\n    const passwordBytes = getPassword(password);\n\n    let entropy: Uint8Array = null\n    let path: string = null;\n    let locale: string = null;\n    if (hasMnemonic(account)) {\n        const srcMnemonic = account.mnemonic;\n        entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n        path = srcMnemonic.path || defaultPath;\n        locale = srcMnemonic.locale || \"en\";\n    }\n\n    let client = options.client;\n    if (!client) { client = \"ethers.js\"; }\n\n    // Check/generate the salt\n    let salt: Uint8Array = null;\n    if (options.salt) {\n        salt = arrayify(options.salt);\n    } else {\n        salt = randomBytes(32);;\n    }\n\n    // Override initialization vector\n    let iv: Uint8Array = null;\n    if (options.iv) {\n        iv = arrayify(options.iv);\n        if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n    } else {\n       iv = randomBytes(16);\n    }\n\n    // Override the uuid\n    let uuidRandom: Uint8Array = null;\n    if (options.uuid) {\n        uuidRandom = arrayify(options.uuid);\n        if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n    } else {\n        uuidRandom = randomBytes(16);\n    }\n\n    // Override the scrypt password-based key derivation function parameters\n    let N = (1 << 17), r = 8, p = 1;\n    if (options.scrypt) {\n        if (options.scrypt.N) { N = options.scrypt.N; }\n        if (options.scrypt.r) { r = options.scrypt.r; }\n        if (options.scrypt.p) { p = options.scrypt.p; }\n    }\n\n    // We take 64 bytes:\n    //   - 32 bytes   As normal for the Web3 secret storage (derivedKey, macPrefix)\n    //   - 32 bytes   AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n    return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n        key = arrayify(key);\n\n        // This will be used to encrypt the wallet (as per Web3 secret storage)\n        const derivedKey = key.slice(0, 16);\n        const macPrefix = key.slice(16, 32);\n\n        // This will be used to encrypt the mnemonic phrase (if any)\n        const mnemonicKey = key.slice(32, 64);\n\n        // Encrypt the private key\n        const counter = new aes.Counter(iv);\n        const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n        const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n        // Compute the message authentication code, used to check the password\n        const mac = keccak256(concat([macPrefix, ciphertext]))\n\n        // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n        const data: { [key: string]: any } = {\n            address: account.address.substring(2).toLowerCase(),\n            id: uuidV4(uuidRandom),\n            version: 3,\n            Crypto: {\n                cipher: \"aes-128-ctr\",\n                cipherparams: {\n                    iv: hexlify(iv).substring(2),\n                },\n                ciphertext: hexlify(ciphertext).substring(2),\n                kdf: \"scrypt\",\n                kdfparams: {\n                    salt: hexlify(salt).substring(2),\n                    n: N,\n                    dklen: 32,\n                    p: p,\n                    r: r\n                },\n                mac: mac.substring(2)\n            }\n        };\n\n        // If we have a mnemonic, encrypt it into the JSON wallet\n        if (entropy) {\n            const mnemonicIv = randomBytes(16);\n            const mnemonicCounter = new aes.Counter(mnemonicIv);\n            const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n            const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n            const now = new Date();\n            const timestamp = (now.getUTCFullYear() + \"-\" +\n                               zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n                               zpad(now.getUTCDate(), 2) + \"T\" +\n                               zpad(now.getUTCHours(), 2) + \"-\" +\n                               zpad(now.getUTCMinutes(), 2) + \"-\" +\n                               zpad(now.getUTCSeconds(), 2) + \".0Z\"\n                              );\n            data[\"x-ethers\"] = {\n                client: client,\n                gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n                mnemonicCounter: hexlify(mnemonicIv).substring(2),\n                mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n                path: path,\n                locale: locale,\n                version: \"0.1\"\n            };\n        }\n\n        return JSON.stringify(data);\n    });\n}\n","\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<ExternallyOwnedAccount> {\n    if (isCrowdsaleWallet(json)) {\n        if (progressCallback) { progressCallback(0); }\n        const account = decryptCrowdsale(json, password)\n        if (progressCallback) { progressCallback(1); }\n        return Promise.resolve(account);\n    }\n\n    if (isKeystoreWallet(json)) {\n        return decryptKeystore(json, password, progressCallback);\n    }\n\n    return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n    if (isCrowdsaleWallet(json)) {\n        return decryptCrowdsale(json, password)\n    }\n\n    if (isKeystoreWallet(json)) {\n        return decryptKeystoreSync(json, password);\n    }\n\n    throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n    decryptCrowdsale,\n\n    decryptKeystore,\n    decryptKeystoreSync,\n    encryptKeystore,\n\n    isCrowdsaleWallet,\n    isKeystoreWallet,\n    getJsonWalletAddress,\n\n    decryptJsonWallet,\n    decryptJsonWalletSync,\n\n    ProgressCallback,\n    EncryptOptions,\n};\n","export const version = \"wallet/5.4.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n    return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n    const mnemonic = value.mnemonic;\n    return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n    readonly address: string;\n    readonly provider: Provider;\n\n    // Wrapping the _signingKey and _mnemonic in a getter function prevents\n    // leaking the private key in console.log; still, be careful! :)\n    readonly _signingKey: () => SigningKey;\n    readonly _mnemonic: () => Mnemonic;\n\n    constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n        logger.checkNew(new.target, Wallet);\n\n        super();\n\n        if (isAccount(privateKey)) {\n            const signingKey = new SigningKey(privateKey.privateKey);\n            defineReadOnly(this, \"_signingKey\", () => signingKey);\n            defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n            if (this.address !== getAddress(privateKey.address)) {\n                logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n            }\n\n            if (hasMnemonic(privateKey)) {\n                const srcMnemonic = privateKey.mnemonic;\n                defineReadOnly(this, \"_mnemonic\", () => (\n                    {\n                        phrase: srcMnemonic.phrase,\n                        path: srcMnemonic.path || defaultPath,\n                        locale: srcMnemonic.locale || \"en\"\n                    }\n                ));\n                const mnemonic = this.mnemonic;\n                const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n                if (computeAddress(node.privateKey) !== this.address) {\n                    logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n                }\n            } else {\n                defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n            }\n\n\n        } else {\n            if (SigningKey.isSigningKey(privateKey)) {\n                /* istanbul ignore if */\n                if (privateKey.curve !== \"secp256k1\") {\n                    logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n                }\n                defineReadOnly(this, \"_signingKey\", () => (<SigningKey>privateKey));\n\n            } else {\n                // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n                if (typeof(privateKey) === \"string\") {\n                    if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n                        privateKey = \"0x\" + privateKey;\n                    }\n                }\n\n                const signingKey = new SigningKey(privateKey);\n                defineReadOnly(this, \"_signingKey\", () => signingKey);\n            }\n\n            defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n            defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n        }\n\n        /* istanbul ignore if */\n        if (provider && !Provider.isProvider(provider)) {\n            logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n        }\n\n        defineReadOnly(this, \"provider\", provider || null);\n    }\n\n    get mnemonic(): Mnemonic { return this._mnemonic(); }\n    get privateKey(): string { return this._signingKey().privateKey; }\n    get publicKey(): string { return this._signingKey().publicKey; }\n\n    getAddress(): Promise<string> {\n        return Promise.resolve(this.address);\n    }\n\n    connect(provider: Provider): Wallet {\n        return new Wallet(this, provider);\n    }\n\n    signTransaction(transaction: TransactionRequest): Promise<string> {\n        return resolveProperties(transaction).then((tx) => {\n            if (tx.from != null) {\n                if (getAddress(tx.from) !== this.address) {\n                    logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n                }\n                delete tx.from;\n            }\n\n            const signature = this._signingKey().signDigest(keccak256(serialize(<UnsignedTransaction>tx)));\n            return serialize(<UnsignedTransaction>tx, signature);\n        });\n    }\n\n    async signMessage(message: Bytes | string): Promise<string> {\n        return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n    }\n\n    async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n        // Populate any ENS names\n        const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n            if (this.provider == null) {\n                logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n                    operation: \"resolveName\",\n                    value: name\n                });\n            }\n            return this.provider.resolveName(name);\n        });\n\n        return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n    }\n\n    encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise<string> {\n        if (typeof(options) === \"function\" && !progressCallback) {\n            progressCallback = options;\n            options = {};\n        }\n\n        if (progressCallback && typeof(progressCallback) !== \"function\") {\n            throw new Error(\"invalid callback\");\n        }\n\n        if (!options) { options = {}; }\n\n        return encryptKeystore(this, password, options, progressCallback);\n    }\n\n\n    /**\n     *  Static methods to create Wallet instances.\n     */\n    static createRandom(options?: any): Wallet {\n        let entropy: Uint8Array = randomBytes(16);\n\n        if (!options) { options = { }; }\n\n        if (options.extraEntropy) {\n            entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n        }\n\n        const mnemonic = entropyToMnemonic(entropy, options.locale);\n        return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n    }\n\n    static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet> {\n        return decryptJsonWallet(json, password, progressCallback).then((account) => {\n            return new Wallet(account);\n        });\n    }\n\n    static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n        return new Wallet(decryptJsonWalletSync(json, password));\n    }\n\n    static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n        if (!path) { path = defaultPath; }\n        return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n    }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n    return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): string {\n    return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n","export const version = \"networks/5.4.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n    Network,\n    Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n    renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n    return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n    const func = function(providers: any, options?: any): any {\n        if (options == null) { options = { }; }\n        const providerList: Array<any> = [];\n\n        if (providers.InfuraProvider) {\n            try {\n                providerList.push(new providers.InfuraProvider(network, options.infura));\n            } catch(error) { }\n        }\n\n        if (providers.EtherscanProvider) {\n            //try {\n            //    providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n            //} catch(error) { }\n\n            // These networks are currently faulty on this provider\n            // @TODO: This goes away once they have fixed their nodes\n            const skip = [ \"ropsten\" ];\n            try {\n                const provider = new providers.EtherscanProvider(network);\n                if (provider.network && skip.indexOf(provider.network.name) === -1) {\n                    providerList.push(provider);\n                }\n            } catch(error) { }\n        }\n\n        if (providers.AlchemyProvider) {\n            try {\n                providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n            } catch(error) { }\n        }\n\n        if (providers.PocketProvider) {\n            // These networks are currently faulty on Pocket as their\n            // network does not handle the Berlin hardfork, which is\n            // live on these ones.\n            // @TODO: This goes away once Pocket has upgraded their nodes\n            const skip = [ \"goerli\", \"ropsten\", \"rinkeby\" ];\n            try {\n                const provider = new providers.PocketProvider(network);\n                if (provider.network && skip.indexOf(provider.network.name) === -1) {\n                    providerList.push(provider);\n                }\n            } catch(error) { }\n        }\n\n        if (providers.CloudflareProvider) {\n            try {\n                providerList.push(new providers.CloudflareProvider(network));\n            } catch(error) { }\n        }\n\n        if (providerList.length === 0) { return null; }\n\n        if (providers.FallbackProvider) {\n            let quorum = 1;\n            if (options.quorum != null) {\n                quorum = options.quorum;\n            } else if (network === \"homestead\") {\n                quorum = 2;\n            }\n            return new providers.FallbackProvider(providerList, quorum);\n        }\n\n        return providerList[0];\n    };\n\n    func.renetwork = function(network: Network) {\n        return ethDefaultProvider(network);\n    };\n\n    return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n    const func = function(providers: any, options?: any): any {\n        if (providers.JsonRpcProvider) {\n            return new providers.JsonRpcProvider(url, network);\n        }\n\n        return null;\n    };\n\n    func.renetwork = function(network: Network) {\n        return etcDefaultProvider(url, network);\n    };\n\n    return func;\n}\n\nconst homestead: Network = {\n    chainId: 1,\n    ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n    name: \"homestead\",\n    _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n    chainId: 3,\n    ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n    name: \"ropsten\",\n    _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n    chainId: 63,\n    name: \"classicMordor\",\n    _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\nconst networks: { [name: string]: Network } = {\n    unspecified: { chainId: 0, name: \"unspecified\" },\n\n    homestead: homestead,\n    mainnet: homestead,\n\n    morden: { chainId: 2, name: \"morden\" },\n\n    ropsten: ropsten,\n    testnet: ropsten,\n\n    rinkeby: {\n        chainId: 4,\n        ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n        name: \"rinkeby\",\n        _defaultProvider: ethDefaultProvider(\"rinkeby\")\n    },\n\n    kovan: {\n        chainId: 42,\n        name: \"kovan\",\n        _defaultProvider: ethDefaultProvider(\"kovan\")\n    },\n\n    goerli: {\n        chainId: 5,\n        ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n        name: \"goerli\",\n        _defaultProvider: ethDefaultProvider(\"goerli\")\n     },\n\n\n    // ETC (See: #351)\n    classic: {\n        chainId: 61,\n        name: \"classic\",\n        _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n    },\n\n    classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n    classicMordor: classicMordor,\n    classicTestnet: classicMordor,\n\n    classicKotti: {\n        chainId: 6,\n        name: \"classicKotti\",\n        _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n    },\n\n    xdai: { chainId: 100, name: \"xdai\" },\n\n    matic: { chainId: 137, name: \"matic\" },\n    maticmum: { chainId: 80001, name: \"maticmum\" },\n\n    bnb: { chainId: 56, name: \"bnb\" },\n    bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n *  getNetwork\n *\n *  Converts a named common networks or chain ID (network ID) to a Network\n *  and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n    // No network (null)\n    if (network == null) { return null; }\n\n    if (typeof(network) === \"number\") {\n        for (const name in networks) {\n            const standard = networks[name];\n            if (standard.chainId === network) {\n                return {\n                    name: standard.name,\n                    chainId: standard.chainId,\n                    ensAddress: (standard.ensAddress || null),\n                    _defaultProvider: (standard._defaultProvider || null)\n                };\n            }\n        }\n\n        return {\n            chainId: network,\n            name: \"unknown\"\n        };\n    }\n\n    if (typeof(network) === \"string\") {\n        const standard = networks[network];\n        if (standard == null) { return null; }\n        return {\n            name: standard.name,\n            chainId: standard.chainId,\n            ensAddress: standard.ensAddress,\n            _defaultProvider: (standard._defaultProvider || null)\n        };\n    }\n\n    const standard  = networks[network.name];\n\n    // Not a standard network; check that it is a valid network in general\n    if (!standard) {\n        if (typeof(network.chainId) !== \"number\") {\n            logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n        }\n        return network;\n    }\n\n    // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n    if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n        logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n    }\n\n    // @TODO: In the next major version add an attach function to a defaultProvider\n    // class and move the _defaultProvider internal to this file (extend Network)\n    let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n    if (defaultProvider == null && standard._defaultProvider) {\n        if (isRenetworkable(standard._defaultProvider)) {\n            defaultProvider = standard._defaultProvider.renetwork(network);\n        } else {\n            defaultProvider = standard._defaultProvider;\n        }\n    }\n\n    // Standard Network (allow overriding the ENS address)\n    return {\n        name: network.name,\n        chainId: standard.chainId,\n        ensAddress: (network.ensAddress || standard.ensAddress || null),\n        _defaultProvider: defaultProvider\n    };\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n    textData = atob(textData);\n    const data = [];\n    for (let i = 0; i < textData.length; i++) {\n        data.push(textData.charCodeAt(i));\n    }\n    return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n    data = arrayify(data);\n    let textData = \"\";\n    for (let i = 0; i < data.length; i++) {\n        textData += String.fromCharCode(data[i]);\n    }\n    return btoa(textData);\n}\n\n\n","\"use strict\";\n\nexport { decode, encode } from \"./base64\";\n","export const version = \"web/5.4.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise<GetUrlResponse> {\n    if (options == null) { options = { }; }\n\n    const request = {\n        method: (options.method || \"GET\"),\n        headers: (options.headers || { }),\n        body: (options.body || undefined),\n\n        mode: <RequestMode>\"cors\",                       // no-cors, cors, *same-origin\n        cache: <RequestCache>\"no-cache\",                 // *default, no-cache, reload, force-cache, only-if-cached\n        credentials: <RequestCredentials>\"same-origin\",  // include, *same-origin, omit\n        redirect: <RequestRedirect>\"follow\",             // manual, *follow, error\n        referrer: \"client\",         // no-referrer, *client\n    };\n\n    const response = await fetch(href, request);\n    const body = await response.arrayBuffer();\n\n    const headers: { [ name: string ]: string } = { };\n    if (response.headers.forEach) {\n        response.headers.forEach((value, key) => {\n            headers[key.toLowerCase()] = value;\n        });\n    } else {\n        (<() => Array<string>>((<any>(response.headers)).keys))().forEach((key) => {\n            headers[key.toLowerCase()] = response.headers.get(key);\n        });\n    }\n\n    return {\n        headers: headers,\n        statusCode: response.status,\n        statusMessage: response.statusText,\n        body: arrayify(new Uint8Array(body)),\n    }\n}\n","\"use strict\";\n\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise<void> {\n    return new Promise((resolve) => {\n        setTimeout(resolve, duration);\n    });\n}\n\nfunction bodyify(value: any, type: string): string {\n    if (value == null) { return null; }\n\n    if (typeof(value) === \"string\") { return value; }\n\n    if (isBytesLike(value)) {\n        if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n            try {\n                return toUtf8String(value);\n            } catch (error) { };\n        }\n        return hexlify(value);\n    }\n\n    return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n    url: string,\n    headers?: { [key: string]: string | number }\n\n    user?: string,\n    password?: string,\n\n    allowInsecureAuthentication?: boolean,\n    allowGzip?: boolean,\n\n    throttleLimit?: number,\n    throttleSlotInterval?: number;\n    throttleCallback?: (attempt: number, url: string) => Promise<boolean>,\n\n    timeout?: number,\n};\n\nexport interface OnceBlockable {\n    once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n    once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n    timeout?: number,\n    floor?: number,\n    ceiling?: number,\n    interval?: number,\n    retryLimit?: number,\n    onceBlock?: OnceBlockable\n    oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n    statusCode: number;\n    headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest<T = any>\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n//   - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData<T = Uint8Array>(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise<T> {\n\n    // How many times to retry in the event of a throttle\n    const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n    logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n        \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n    const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n    const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n    logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n        \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n    const headers: { [key: string]: Header } = { };\n\n    let url: string = null;\n\n    // @TODO: Allow ConnectionInfo to override some of these values\n    const options: Options = {\n        method: \"GET\",\n    };\n\n    let allow304 = false;\n\n    let timeout = 2 * 60 * 1000;\n\n    if (typeof(connection) === \"string\") {\n        url = connection;\n\n    } else if (typeof(connection) === \"object\") {\n        if (connection == null || connection.url == null) {\n            logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n        }\n\n        url = connection.url;\n\n        if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n            timeout = connection.timeout;\n        }\n\n        if (connection.headers) {\n            for (const key in connection.headers) {\n                headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n                if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n                    allow304 = true;\n                }\n            }\n        }\n\n        options.allowGzip = !!connection.allowGzip;\n\n        if (connection.user != null && connection.password != null) {\n            if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n                logger.throwError(\n                    \"basic authentication requires a secure https url\",\n                    Logger.errors.INVALID_ARGUMENT,\n                    { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n                );\n            }\n\n            const authorization = connection.user + \":\" + connection.password;\n            headers[\"authorization\"] = {\n                key: \"Authorization\",\n                value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n            };\n        }\n    }\n\n    if (body) {\n        options.method = \"POST\";\n        options.body = body;\n        if (headers[\"content-type\"] == null) {\n            headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n        }\n        if (headers[\"content-length\"] == null) {\n            headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n        }\n    }\n\n    const flatHeaders: { [ key: string ]: string } = { };\n    Object.keys(headers).forEach((key) => {\n        const header = headers[key];\n        flatHeaders[header.key] = header.value;\n    });\n    options.headers = flatHeaders;\n\n    const runningTimeout = (function() {\n        let timer: NodeJS.Timer = null;\n        const promise: Promise<never> = new Promise(function(resolve, reject) {\n            if (timeout) {\n                timer = setTimeout(() => {\n                    if (timer == null) { return; }\n                    timer = null;\n\n                    reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n                        requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n                        requestMethod: options.method,\n                        timeout: timeout,\n                        url: url\n                    }));\n                }, timeout);\n            }\n        });\n\n        const cancel = function() {\n            if (timer == null) { return; }\n            clearTimeout(timer);\n            timer = null;\n        }\n\n        return { promise, cancel };\n    })();\n\n    const runningFetch = (async function() {\n\n        for (let attempt = 0; attempt < attemptLimit; attempt++) {\n            let response: GetUrlResponse = null;\n\n            try {\n                response = await getUrl(url, options);\n\n                // Exponential back-off throttling\n                if (response.statusCode === 429 && attempt < attemptLimit) {\n                    let tryAgain = true;\n                    if (throttleCallback) {\n                        tryAgain = await throttleCallback(attempt, url);\n                    }\n\n                    if (tryAgain) {\n                        let stall = 0;\n\n                        const retryAfter = response.headers[\"retry-after\"];\n                        if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n                            stall = parseInt(retryAfter) * 1000;\n                        } else {\n                            stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n                        }\n\n                        //console.log(\"Stalling 429\");\n                        await staller(stall);\n                        continue;\n                    }\n                }\n\n            } catch (error) {\n                response = (<any>error).response;\n                if (response == null) {\n                    runningTimeout.cancel();\n                    logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n                        requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n                        requestMethod: options.method,\n                        serverError: error,\n                        url: url\n                    });\n                }\n            }\n\n\n            let body = response.body;\n\n            if (allow304 && response.statusCode === 304) {\n                body = null;\n\n            } else if (response.statusCode < 200 || response.statusCode >= 300) {\n                runningTimeout.cancel();\n                logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n                    status: response.statusCode,\n                    headers: response.headers,\n                    body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n                    requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n                    requestMethod: options.method,\n                    url: url\n                });\n            }\n\n            if (processFunc) {\n                try {\n                    const result = await processFunc(body, response);\n                    runningTimeout.cancel();\n                    return result;\n\n                } catch (error) {\n                    // Allow the processFunc to trigger a throttle\n                    if (error.throttleRetry && attempt < attemptLimit) {\n                        let tryAgain = true;\n                        if (throttleCallback) {\n                            tryAgain = await throttleCallback(attempt, url);\n                        }\n\n                        if (tryAgain) {\n                            const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n                            //console.log(\"Stalling callback\");\n                            await staller(timeout);\n                            continue;\n                        }\n                    }\n\n                    runningTimeout.cancel();\n                    logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n                        body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n                        error: error,\n                        requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n                        requestMethod: options.method,\n                        url: url\n                    });\n                }\n            }\n\n            runningTimeout.cancel();\n\n            // If we had a processFunc, it eitehr returned a T or threw above.\n            // The \"body\" is now a Uint8Array.\n            return <T>(<unknown>body);\n        }\n\n        return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n            requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n            requestMethod: options.method,\n            url: url\n        });\n    })();\n\n    return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise<any> {\n    let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n        let result: any = null;\n        if (value != null) {\n            try {\n                result = JSON.parse(toUtf8String(value));\n            } catch (error) {\n                logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n                    body: value,\n                    error: error\n                });\n            }\n        }\n\n        if (processFunc) {\n            result = processFunc(result, response);\n        }\n\n        return result;\n    }\n\n    // If we have json to send, we must\n    // - add content-type of application/json (unless already overridden)\n    // - convert the json to bytes\n    let body: Uint8Array = null;\n    if (json != null) {\n        body = toUtf8Bytes(json);\n\n        // Create a connection with the content-type set for JSON\n        const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n        if (updated.headers) {\n            const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n            if (!hasContentType) {\n                updated.headers = shallowCopy(updated.headers);\n                updated.headers[\"content-type\"] = \"application/json\";\n            }\n        } else {\n            updated.headers = { \"content-type\": \"application/json\" };\n        }\n        connection = updated;\n    }\n\n    return _fetchData<any>(connection, body, processJsonFunc);\n}\n\nexport function poll<T>(func: () => Promise<T>, options?: PollOptions): Promise<T> {\n    if (!options) { options = {}; }\n    options = shallowCopy(options);\n    if (options.floor == null) { options.floor = 0; }\n    if (options.ceiling == null) { options.ceiling = 10000; }\n    if (options.interval == null) { options.interval = 250; }\n\n    return new Promise(function(resolve, reject) {\n\n        let timer: NodeJS.Timer = null;\n        let done: boolean = false;\n\n        // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n        const cancel = (): boolean => {\n            if (done) { return false; }\n            done = true;\n            if (timer) { clearTimeout(timer); }\n            return true;\n        };\n\n        if (options.timeout) {\n            timer = setTimeout(() => {\n                if (cancel()) { reject(new Error(\"timeout\")); }\n            }, options.timeout)\n        }\n\n        const retryLimit = options.retryLimit;\n\n        let attempt = 0;\n        function check() {\n            return func().then(function(result) {\n\n                // If we have a result, or are allowed null then we're done\n                if (result !== undefined) {\n                    if (cancel()) { resolve(result); }\n\n                } else if (options.oncePoll) {\n                    options.oncePoll.once(\"poll\", check);\n\n                } else if (options.onceBlock) {\n                    options.onceBlock.once(\"block\", check);\n\n                // Otherwise, exponential back-off (up to 10s) our next request\n                } else if (!done) {\n                    attempt++;\n                    if (attempt > retryLimit) {\n                        if (cancel()) { reject(new Error(\"retry limit reached\")); }\n                        return;\n                    }\n\n                    let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n                    if (timeout < options.floor) { timeout = options.floor; }\n                    if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n                    setTimeout(check, timeout);\n                }\n\n                return null;\n            }, function(error) {\n                if (cancel()) { reject(error); }\n            });\n        }\n        check();\n    });\n}\n\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n  var x = ALPHABET.charAt(z)\n\n  if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n  ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n  var b = pre >> 25\n  return ((pre & 0x1FFFFFF) << 5) ^\n    (-((b >> 0) & 1) & 0x3b6a57b2) ^\n    (-((b >> 1) & 1) & 0x26508e6d) ^\n    (-((b >> 2) & 1) & 0x1ea119fa) ^\n    (-((b >> 3) & 1) & 0x3d4233dd) ^\n    (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n  var chk = 1\n  for (var i = 0; i < prefix.length; ++i) {\n    var c = prefix.charCodeAt(i)\n    if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n    chk = polymodStep(chk) ^ (c >> 5)\n  }\n  chk = polymodStep(chk)\n\n  for (i = 0; i < prefix.length; ++i) {\n    var v = prefix.charCodeAt(i)\n    chk = polymodStep(chk) ^ (v & 0x1f)\n  }\n  return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n  LIMIT = LIMIT || 90\n  if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n  prefix = prefix.toLowerCase()\n\n  // determine chk mod\n  var chk = prefixChk(prefix)\n  if (typeof chk === 'string') throw new Error(chk)\n\n  var result = prefix + '1'\n  for (var i = 0; i < words.length; ++i) {\n    var x = words[i]\n    if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n    chk = polymodStep(chk) ^ x\n    result += ALPHABET.charAt(x)\n  }\n\n  for (i = 0; i < 6; ++i) {\n    chk = polymodStep(chk)\n  }\n  chk ^= 1\n\n  for (i = 0; i < 6; ++i) {\n    var v = (chk >> ((5 - i) * 5)) & 0x1f\n    result += ALPHABET.charAt(v)\n  }\n\n  return result\n}\n\nfunction __decode (str, LIMIT) {\n  LIMIT = LIMIT || 90\n  if (str.length < 8) return str + ' too short'\n  if (str.length > LIMIT) return 'Exceeds length limit'\n\n  // don't allow mixed case\n  var lowered = str.toLowerCase()\n  var uppered = str.toUpperCase()\n  if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n  str = lowered\n\n  var split = str.lastIndexOf('1')\n  if (split === -1) return 'No separator character for ' + str\n  if (split === 0) return 'Missing prefix for ' + str\n\n  var prefix = str.slice(0, split)\n  var wordChars = str.slice(split + 1)\n  if (wordChars.length < 6) return 'Data too short'\n\n  var chk = prefixChk(prefix)\n  if (typeof chk === 'string') return chk\n\n  var words = []\n  for (var i = 0; i < wordChars.length; ++i) {\n    var c = wordChars.charAt(i)\n    var v = ALPHABET_MAP[c]\n    if (v === undefined) return 'Unknown character ' + c\n    chk = polymodStep(chk) ^ v\n\n    // not in the checksum?\n    if (i + 6 >= wordChars.length) continue\n    words.push(v)\n  }\n\n  if (chk !== 1) return 'Invalid checksum for ' + str\n  return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n  var res = __decode.apply(null, arguments)\n  if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n  var res = __decode.apply(null, arguments)\n  if (typeof res === 'object') return res\n\n  throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n  var value = 0\n  var bits = 0\n  var maxV = (1 << outBits) - 1\n\n  var result = []\n  for (var i = 0; i < data.length; ++i) {\n    value = (value << inBits) | data[i]\n    bits += inBits\n\n    while (bits >= outBits) {\n      bits -= outBits\n      result.push((value >> bits) & maxV)\n    }\n  }\n\n  if (pad) {\n    if (bits > 0) {\n      result.push((value << (outBits - bits)) & maxV)\n    }\n  } else {\n    if (bits >= inBits) return 'Excess padding'\n    if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n  }\n\n  return result\n}\n\nfunction toWordsUnsafe (bytes) {\n  var res = convert(bytes, 8, 5, true)\n  if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n  var res = convert(bytes, 8, 5, true)\n  if (Array.isArray(res)) return res\n\n  throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n  var res = convert(words, 5, 8, false)\n  if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n  var res = convert(words, 5, 8, false)\n  if (Array.isArray(res)) return res\n\n  throw new Error(res)\n}\n\nmodule.exports = {\n  decodeUnsafe: decodeUnsafe,\n  decode: decode,\n  encode: encode,\n  toWordsUnsafe: toWordsUnsafe,\n  toWords: toWords,\n  fromWordsUnsafe: fromWordsUnsafe,\n  fromWords: fromWords\n}\n","export const version = \"providers/5.4.1\";\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n    transaction: FormatFuncs,\n    transactionRequest: FormatFuncs,\n    receipt: FormatFuncs,\n    receiptLog: FormatFuncs,\n    block: FormatFuncs,\n    blockWithTransactions: FormatFuncs,\n    filter: FormatFuncs,\n    filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n    readonly formats: Formats;\n\n    constructor() {\n        logger.checkNew(new.target, Formatter);\n        this.formats = this.getDefaultFormats();\n    }\n\n    getDefaultFormats(): Formats {\n        const formats: Formats = <Formats>({ });\n\n        const address = this.address.bind(this);\n        const bigNumber = this.bigNumber.bind(this);\n        const blockTag = this.blockTag.bind(this);\n        const data = this.data.bind(this);\n        const hash = this.hash.bind(this);\n        const hex = this.hex.bind(this);\n        const number = this.number.bind(this);\n        const type = this.type.bind(this);\n\n        const strictData = (v: any) => { return this.data(v, true); };\n\n        formats.transaction = {\n            hash: hash,\n\n            type: type,\n            accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n            blockHash: Formatter.allowNull(hash, null),\n            blockNumber: Formatter.allowNull(number, null),\n            transactionIndex: Formatter.allowNull(number, null),\n\n            confirmations: Formatter.allowNull(number, null),\n\n            from: address,\n\n            // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n            // must be set\n            gasPrice: Formatter.allowNull(bigNumber),\n            maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n            maxFeePerGas: Formatter.allowNull(bigNumber),\n\n            gasLimit: bigNumber,\n            to: Formatter.allowNull(address, null),\n            value: bigNumber,\n            nonce: number,\n            data: data,\n\n            r: Formatter.allowNull(this.uint256),\n            s: Formatter.allowNull(this.uint256),\n            v: Formatter.allowNull(number),\n\n            creates: Formatter.allowNull(address, null),\n\n            raw: Formatter.allowNull(data),\n        };\n\n        formats.transactionRequest = {\n            from: Formatter.allowNull(address),\n            nonce: Formatter.allowNull(number),\n            gasLimit: Formatter.allowNull(bigNumber),\n            gasPrice: Formatter.allowNull(bigNumber),\n            maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n            maxFeePerGas: Formatter.allowNull(bigNumber),\n            to: Formatter.allowNull(address),\n            value: Formatter.allowNull(bigNumber),\n            data: Formatter.allowNull(strictData),\n            type: Formatter.allowNull(number),\n            accessList: Formatter.allowNull(this.accessList.bind(this), null),\n        };\n\n        formats.receiptLog = {\n            transactionIndex: number,\n            blockNumber: number,\n            transactionHash: hash,\n            address: address,\n            topics: Formatter.arrayOf(hash),\n            data: data,\n            logIndex: number,\n            blockHash: hash,\n        };\n\n        formats.receipt = {\n            to: Formatter.allowNull(this.address, null),\n            from: Formatter.allowNull(this.address, null),\n            contractAddress: Formatter.allowNull(address, null),\n            transactionIndex: number,\n            // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n            root: Formatter.allowNull(hex),\n            gasUsed: bigNumber,\n            logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n            blockHash: hash,\n            transactionHash: hash,\n            logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n            blockNumber: number,\n            confirmations: Formatter.allowNull(number, null),\n            cumulativeGasUsed: bigNumber,\n            effectiveGasPrice: Formatter.allowNull(bigNumber),\n            status: Formatter.allowNull(number),\n            type: type\n        };\n\n        formats.block = {\n            hash: hash,\n            parentHash: hash,\n            number: number,\n\n            timestamp: number,\n            nonce: Formatter.allowNull(hex),\n            difficulty: this.difficulty.bind(this),\n\n            gasLimit: bigNumber,\n            gasUsed: bigNumber,\n\n            miner: address,\n            extraData: data,\n\n            transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n            baseFeePerGas: Formatter.allowNull(bigNumber)\n        };\n\n        formats.blockWithTransactions = shallowCopy(formats.block);\n        formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n        formats.filter = {\n            fromBlock: Formatter.allowNull(blockTag, undefined),\n            toBlock: Formatter.allowNull(blockTag, undefined),\n            blockHash: Formatter.allowNull(hash, undefined),\n            address: Formatter.allowNull(address, undefined),\n            topics: Formatter.allowNull(this.topics.bind(this), undefined),\n        };\n\n        formats.filterLog = {\n            blockNumber: Formatter.allowNull(number),\n            blockHash: Formatter.allowNull(hash),\n            transactionIndex: number,\n\n            removed: Formatter.allowNull(this.boolean.bind(this)),\n\n            address: address,\n            data: Formatter.allowFalsish(data, \"0x\"),\n\n            topics: Formatter.arrayOf(hash),\n\n            transactionHash: hash,\n            logIndex: number,\n        };\n\n        return formats;\n    }\n\n    accessList(accessList: Array<any>): AccessList {\n        return accessListify(accessList || []);\n    }\n\n    // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n    // Strict! Used on input.\n    number(number: any): number {\n        if (number === \"0x\") { return 0; }\n        return BigNumber.from(number).toNumber();\n    }\n\n    type(number: any): number {\n        if (number === \"0x\" || number == null) { return 0; }\n        return BigNumber.from(number).toNumber();\n    }\n\n    // Strict! Used on input.\n    bigNumber(value: any): BigNumber {\n        return BigNumber.from(value);\n    }\n\n    // Requires a boolean, \"true\" or  \"false\"; returns a boolean\n    boolean(value: any): boolean {\n        if (typeof(value) === \"boolean\") { return value; }\n        if (typeof(value) === \"string\") {\n            value = value.toLowerCase();\n            if (value === \"true\") { return true; }\n            if (value === \"false\") { return false; }\n        }\n        throw new Error(\"invalid boolean - \" + value);\n    }\n\n    hex(value: any, strict?: boolean): string {\n        if (typeof(value) === \"string\") {\n            if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n            if (isHexString(value)) {\n               return value.toLowerCase();\n            }\n        }\n        return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n    }\n\n    data(value: any, strict?: boolean): string {\n        const result = this.hex(value, strict);\n        if ((result.length % 2) !== 0) {\n            throw new Error(\"invalid data; odd-length - \" + value);\n        }\n        return result;\n    }\n\n    // Requires an address\n    // Strict! Used on input.\n    address(value: any): string {\n        return getAddress(value);\n    }\n\n    callAddress(value: any): string {\n        if (!isHexString(value, 32)) { return null; }\n        const address = getAddress(hexDataSlice(value, 12));\n        return (address === AddressZero) ? null: address;\n    }\n\n    contractAddress(value: any): string {\n        return getContractAddress(value);\n    }\n\n    // Strict! Used on input.\n    blockTag(blockTag: any): string {\n        if (blockTag == null) { return \"latest\"; }\n\n       if (blockTag === \"earliest\") { return \"0x0\"; }\n\n        if (blockTag === \"latest\" || blockTag === \"pending\") {\n            return blockTag;\n        }\n\n        if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n            return hexValue(<number | string>blockTag);\n        }\n\n        throw new Error(\"invalid blockTag\");\n    }\n\n    // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n    hash(value: any, strict?: boolean): string {\n        const result = this.hex(value, strict);\n        if (hexDataLength(result) !== 32) {\n            return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n        }\n        return result;\n    }\n\n    // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n    difficulty(value: any): number {\n        if (value == null) { return null; }\n\n        const v = BigNumber.from(value);\n\n        try {\n            return v.toNumber();\n        } catch (error) { }\n\n       return null;\n    }\n\n    uint256(value: any): string {\n        if (!isHexString(value)) {\n            throw new Error(\"invalid uint256\");\n        }\n        return hexZeroPad(value, 32);\n    }\n\n    _block(value: any, format: any): Block {\n        if (value.author != null && value.miner == null) {\n            value.miner = value.author;\n        }\n        return Formatter.check(format, value);\n    }\n\n    block(value: any): Block {\n        return this._block(value, this.formats.block);\n    }\n\n    blockWithTransactions(value: any): Block {\n        return this._block(value, this.formats.blockWithTransactions);\n    }\n\n    // Strict! Used on input.\n    transactionRequest(value: any): any {\n        return Formatter.check(this.formats.transactionRequest, value);\n    }\n\n    transactionResponse(transaction: any): TransactionResponse {\n\n        // Rename gas to gasLimit\n        if (transaction.gas != null && transaction.gasLimit == null) {\n            transaction.gasLimit = transaction.gas;\n        }\n\n        // Some clients (TestRPC) do strange things like return 0x0 for the\n        // 0 address; correct this to be a real address\n        if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n            transaction.to = \"0x0000000000000000000000000000000000000000\";\n        }\n\n        // Rename input to data\n        if (transaction.input != null && transaction.data == null) {\n            transaction.data = transaction.input;\n        }\n\n        // If to and creates are empty, populate the creates from the transaction\n        if (transaction.to == null && transaction.creates == null) {\n            transaction.creates = this.contractAddress(transaction);\n        }\n\n        if (transaction.type === 1 && transaction.accessList == null) {\n            transaction.accessList = [ ];\n        }\n\n        const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n        if (transaction.chainId != null) {\n            let chainId = transaction.chainId;\n\n            if (isHexString(chainId)) {\n                chainId = BigNumber.from(chainId).toNumber();\n            }\n\n            result.chainId = chainId;\n\n        } else {\n            let chainId = transaction.networkId;\n\n            // geth-etc returns chainId\n            if (chainId == null && result.v == null) {\n                chainId = transaction.chainId;\n            }\n\n            if (isHexString(chainId)) {\n                chainId = BigNumber.from(chainId).toNumber();\n            }\n\n            if (typeof(chainId) !== \"number\" && result.v != null) {\n                chainId = (result.v - 35) / 2;\n                if (chainId < 0) { chainId = 0; }\n                chainId = parseInt(chainId);\n            }\n\n            if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n            result.chainId = chainId;\n        }\n\n        // 0x0000... should actually be null\n        if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n            result.blockHash = null;\n        }\n\n        return result;\n    }\n\n    transaction(value: any): any {\n        return parseTransaction(value);\n    }\n\n    receiptLog(value: any): any {\n        return Formatter.check(this.formats.receiptLog, value);\n    }\n\n    receipt(value: any): TransactionReceipt {\n        const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n        // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n        if (result.root != null) {\n            if (result.root.length <= 4) {\n                // Could be 0x00, 0x0, 0x01 or 0x1\n                const value = BigNumber.from(result.root).toNumber();\n                if (value === 0 || value === 1) {\n                    // Make sure if both are specified, they match\n                    if (result.status != null && (result.status !== value)) {\n                        logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n                    }\n                    result.status = value;\n                    delete result.root;\n                } else {\n                    logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n                }\n            } else if (result.root.length !== 66) {\n                // Must be a valid bytes32\n                logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n            }\n        }\n\n        if (result.status != null) {\n            result.byzantium = true;\n        }\n\n        return result;\n    }\n\n    topics(value: any): any {\n        if (Array.isArray(value)) {\n            return value.map((v) => this.topics(v));\n\n        } else if (value != null) {\n            return this.hash(value, true);\n        }\n\n        return null;\n    }\n\n    filter(value: any): any {\n        return Formatter.check(this.formats.filter, value);\n    }\n\n    filterLog(value: any): any {\n        return Formatter.check(this.formats.filterLog, value);\n    }\n\n    static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n        const result: any = {};\n        for (const key in format) {\n            try {\n                const value = format[key](object[key]);\n                if (value !== undefined) { result[key] = value; }\n            } catch (error) {\n                error.checkKey = key;\n                error.checkValue = object[key];\n                throw error;\n            }\n        }\n        return result;\n    }\n\n    // if value is null-ish, nullValue is returned\n    static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n        return (function(value: any) {\n            if (value == null) { return nullValue; }\n            return format(value);\n        });\n    }\n\n    // If value is false-ish, replaceValue is returned\n    static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n        return (function(value: any) {\n            if (!value) { return replaceValue; }\n            return format(value);\n        });\n    }\n\n    // Requires an Array satisfying check\n    static arrayOf(format: FormatFunc): FormatFunc {\n        return (function(array: any): Array<any> {\n            if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n            const result: any = [];\n\n            array.forEach(function(value) {\n                result.push(format(value));\n            });\n\n            return result;\n        });\n    }\n}\n\nexport interface CommunityResourcable {\n    isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n    return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n    return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n    if (throttleMessage) { return; }\n    throttleMessage = true;\n\n    console.log(\"========= NOTICE =========\")\n    console.log(\"Request-Rate Exceeded  (this message will not be repeated)\");\n    console.log(\"\");\n    console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n    console.log(\"community resource for low-traffic projects and early prototyping.\");\n    console.log(\"\");\n    console.log(\"While your application will continue to function, we highly recommended\");\n    console.log(\"signing up for your own API keys to improve performance, increase your\");\n    console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n    console.log(\"\");\n    console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n    console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n    Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n    Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n     if (topic == null) { return \"null\"; }\n     if (hexDataLength(topic) !== 32) {\n         logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n     }\n     return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array<string | Array<string>>): string {\n    // Remove trailing null AND-topics; they are redundant\n    topics = topics.slice();\n    while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n    return topics.map((topic) => {\n        if (Array.isArray(topic)) {\n\n            // Only track unique OR-topics\n            const unique: { [ topic: string ]: boolean } = { }\n            topic.forEach((topic) => {\n                unique[checkTopic(topic)] = true;\n            });\n\n            // The order of OR-topics does not matter\n            const sorted = Object.keys(unique);\n            sorted.sort();\n\n            return sorted.join(\"|\");\n\n        } else {\n            return checkTopic(topic);\n        }\n    }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array<string | Array<string>> {\n    if (data === \"\") { return [ ]; }\n\n    return data.split(/&/g).map((topic) => {\n        if (topic === \"\") { return [ ]; }\n\n        const comps = topic.split(\"|\").map((topic) => {\n            return ((topic === \"null\") ? null: topic);\n        });\n\n        return ((comps.length === 1) ? comps[0]: comps);\n    });\n}\n\nfunction getEventTag(eventName: EventType): string {\n    if (typeof(eventName) === \"string\") {\n        eventName = eventName.toLowerCase();\n\n        if (hexDataLength(eventName) === 32) {\n            return \"tx:\" + eventName;\n        }\n\n        if (eventName.indexOf(\":\") === -1) {\n            return eventName;\n        }\n\n    } else if (Array.isArray(eventName)) {\n        return \"filter:*:\" + serializeTopics(eventName);\n\n    } else if (ForkEvent.isForkEvent(eventName)) {\n        logger.warn(\"not implemented\");\n        throw new Error(\"not implemented\");\n\n    } else if (eventName && typeof(eventName) === \"object\") {\n        return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n    }\n\n    throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n    return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise<void> {\n    return new Promise((resolve) => {\n        setTimeout(resolve, duration);\n    });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n *  EventType\n *   - \"block\"\n *   - \"poll\"\n *   - \"didPoll\"\n *   - \"pending\"\n *   - \"error\"\n *   - \"network\"\n *   - filter\n *   - topics array\n *   - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n    readonly listener: Listener;\n    readonly once: boolean;\n    readonly tag: string;\n\n    constructor(tag: string, listener: Listener, once: boolean) {\n        defineReadOnly(this, \"tag\", tag);\n        defineReadOnly(this, \"listener\", listener);\n        defineReadOnly(this, \"once\", once);\n    }\n\n    get event(): EventType {\n        switch (this.type) {\n            case \"tx\":\n               return this.hash;\n            case \"filter\":\n               return this.filter;\n        }\n        return this.tag;\n    }\n\n    get type(): string {\n        return this.tag.split(\":\")[0]\n    }\n\n    get hash(): string {\n        const comps = this.tag.split(\":\");\n        if (comps[0] !== \"tx\") { return null; }\n        return comps[1];\n    }\n\n    get filter(): Filter {\n        const comps = this.tag.split(\":\");\n        if (comps[0] !== \"filter\") { return null; }\n        const address = comps[1];\n\n        const topics = deserializeTopics(comps[2]);\n        const filter: Filter = { };\n\n        if (topics.length > 0) { filter.topics = topics; }\n        if (address && address !== \"*\") { filter.address = address; }\n\n        return filter;\n    }\n\n    pollable(): boolean {\n        return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n    }\n}\n\nexport interface EnsResolver {\n\n    // Name this Resolver is associated with\n    readonly name: string;\n\n    // The address of the resolver\n    readonly address: string;\n\n    // Multichain address resolution (also normal address resolution)\n    // See: https://eips.ethereum.org/EIPS/eip-2304\n    getAddress(coinType?: 60): Promise<string>\n\n    // Contenthash field\n    // See: https://eips.ethereum.org/EIPS/eip-1577\n    getContentHash(): Promise<string>;\n\n    // Storage of text records\n    // See: https://eips.ethereum.org/EIPS/eip-634\n    getText(key: string): Promise<string>;\n};\n\nexport interface EnsProvider {\n    resolveName(name: string): Promise<string>;\n    lookupAddress(address: string): Promise<string>;\n    getResolver(name: string): Promise<EnsResolver>;\n}\n\ntype CoinInfo = {\n    symbol: string,\n    ilk?: string,     // General family\n    prefix?: string,  // Bech32 prefix\n    p2pkh?: number,   // Pay-to-Public-Key-Hash Version\n    p2sh?: number,    // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n    \"0\":   { symbol: \"btc\",  p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n    \"2\":   { symbol: \"ltc\",  p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n    \"3\":   { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n    \"60\":  { symbol: \"eth\",  ilk: \"eth\" },\n    \"61\":  { symbol: \"etc\",  ilk: \"eth\" },\n    \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n    return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n    return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport class Resolver implements EnsResolver {\n    readonly provider: BaseProvider;\n\n    readonly name: string;\n    readonly address: string;\n\n    constructor(provider: BaseProvider, address: string, name: string) {\n        defineReadOnly(this, \"provider\", provider);\n        defineReadOnly(this, \"name\", name);\n        defineReadOnly(this, \"address\", provider.formatter.address(address));\n    }\n\n    async _fetchBytes(selector: string, parameters?: string): Promise<string> {\n        // keccak256(\"addr(bytes32,uint256)\")\n        const transaction = {\n            to: this.address,\n            data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n        };\n\n        try {\n            const result = await this.provider.call(transaction);\n            if (result === \"0x\") { return null; }\n\n            const offset = BigNumber.from(hexDataSlice(result, 0, 32)).toNumber();\n            const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n            return hexDataSlice(result, offset + 32, offset + 32 + length);\n        } catch (error) {\n            if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n            return null;\n        }\n    }\n\n    _getAddress(coinType: number, hexBytes: string): string {\n        const coinInfo = coinInfos[String(coinType)];\n\n        if (coinInfo == null) {\n            logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: `getAddress(${ coinType })`\n            });\n        }\n\n        if (coinInfo.ilk === \"eth\") {\n            return this.provider.formatter.address(hexBytes);\n        }\n\n        const bytes = arrayify(hexBytes);\n\n        // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n        if (coinInfo.p2pkh != null) {\n            const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n            if (p2pkh) {\n                const length = parseInt(p2pkh[1], 16);\n                if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n                    return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n                }\n            }\n        }\n\n        // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n        if (coinInfo.p2sh != null) {\n            const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n            if (p2sh) {\n                const length = parseInt(p2sh[1], 16);\n                if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n                    return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n                }\n            }\n        }\n\n        // Bech32\n        if (coinInfo.prefix != null) {\n            const length = bytes[1];\n\n            // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n            let version = bytes[0];\n            if (version === 0x00) {\n                if (length !== 20 && length !== 32) {\n                    version = -1;\n                }\n            } else {\n                version = -1;\n            }\n\n            if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n                const words = bech32.toWords(bytes.slice(2));\n                words.unshift(version);\n                return bech32.encode(coinInfo.prefix, words);\n            }\n        }\n\n        return null;\n    }\n\n\n    async getAddress(coinType?: number): Promise<string> {\n        if (coinType == null) { coinType = 60; }\n\n        // If Ethereum, use the standard `addr(bytes32)`\n        if (coinType === 60) {\n            try {\n                // keccak256(\"addr(bytes32)\")\n                const transaction = {\n                    to: this.address,\n                    data: (\"0x3b3b57de\" + namehash(this.name).substring(2))\n                };\n                const hexBytes = await this.provider.call(transaction);\n\n                // No address\n                if (hexBytes === \"0x\" || hexBytes === HashZero) { return null; }\n\n                return this.provider.formatter.callAddress(hexBytes);\n            } catch (error) {\n                if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n                throw error;\n            }\n        }\n\n        // keccak256(\"addr(bytes32,uint256\")\n        const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n        // No address\n        if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n        // Compute the address\n        const address = this._getAddress(coinType, hexBytes);\n\n        if (address == null) {\n            logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: `getAddress(${ coinType })`,\n                coinType: coinType,\n                data: hexBytes\n            });\n        }\n\n        return address;\n    }\n\n    async getContentHash(): Promise<string> {\n\n        // keccak256(\"contenthash()\")\n        const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n        // No contenthash\n        if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n        // IPFS (CID: 1, Type: DAG-PB)\n        const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n        if (ipfs) {\n            const length = parseInt(ipfs[3], 16);\n            if (ipfs[4].length === length * 2) {\n                return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n            }\n        }\n\n        // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n        const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n        if (swarm) {\n            if (swarm[1].length === (32 * 2)) {\n                return \"bzz:/\\/\" + swarm[1]\n            }\n        }\n\n        return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"getContentHash()\",\n            data: hexBytes\n        });\n    }\n\n    async getText(key: string): Promise<string> {\n\n        // The key encoded as parameter to fetchBytes\n        let keyBytes = toUtf8Bytes(key);\n\n        // The nodehash consumes the first slot, so the string pointer targets\n        // offset 64, with the length at offset 64 and data starting at offset 96\n        keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n        // Pad to word-size (32 bytes)\n        if ((keyBytes.length % 32) !== 0) {\n            keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n        }\n\n        const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n        if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n        return toUtf8String(hexBytes);\n    }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n    _networkPromise: Promise<Network>;\n    _network: Network;\n\n    _events: Array<Event>;\n\n    formatter: Formatter;\n\n    // To help mitigate the eventually consistent nature of the blockchain\n    // we keep a mapping of events we emit. If we emit an event X, we expect\n    // that a user should be able to query for that event in the callback,\n    // if the node returns null, we stall the response until we get back a\n    // meaningful value, since we may be hitting a re-org, or a node that\n    // has not indexed the event yet.\n    // Events:\n    //   - t:{hash}    - Transaction hash\n    //   - b:{hash}    - BlockHash\n    //   - block       - The most recent emitted block\n    _emitted: { [ eventName: string ]: number | \"pending\" };\n\n    _pollingInterval: number;\n    _poller: NodeJS.Timer;\n    _bootstrapPoll: NodeJS.Timer;\n\n    _lastBlockNumber: number;\n\n    _fastBlockNumber: number;\n    _fastBlockNumberPromise: Promise<number>;\n    _fastQueryDate: number;\n\n    _maxInternalBlockNumber: number;\n    _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n    readonly anyNetwork: boolean;\n\n\n    /**\n     *  ready\n     *\n     *  A Promise<Network> that resolves only once the provider is ready.\n     *\n     *  Sub-classes that call the super with a network without a chainId\n     *  MUST set this. Standard named networks have a known chainId.\n     *\n     */\n\n    constructor(network: Networkish | Promise<Network>) {\n        logger.checkNew(new.target, Provider);\n\n        super();\n\n        // Events being listened to\n        this._events = [];\n\n        this._emitted = { block: -2 };\n\n        this.formatter = new.target.getFormatter();\n\n        // If network is any, this Provider allows the underlying\n        // network to change dynamically, and we auto-detect the\n        // current network\n        defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n        if (this.anyNetwork) { network = this.detectNetwork(); }\n\n        if (network instanceof Promise) {\n            this._networkPromise = network;\n\n            // Squash any \"unhandled promise\" errors; that do not need to be handled\n            network.catch((error) => { });\n\n            // Trigger initial network setting (async)\n            this._ready().catch((error) => { });\n\n        } else {\n            const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n            if (knownNetwork) {\n                defineReadOnly(this, \"_network\", knownNetwork);\n                this.emit(\"network\", knownNetwork, null);\n\n            } else {\n                logger.throwArgumentError(\"invalid network\", \"network\", network);\n            }\n        }\n\n        this._maxInternalBlockNumber = -1024;\n\n        this._lastBlockNumber = -2;\n\n        this._pollingInterval = 4000;\n\n        this._fastQueryDate = 0;\n    }\n\n    async _ready(): Promise<Network> {\n        if (this._network == null) {\n            let network: Network = null;\n            if (this._networkPromise) {\n                try {\n                    network = await this._networkPromise;\n                } catch (error) { }\n            }\n\n            // Try the Provider's network detection (this MUST throw if it cannot)\n            if (network == null) {\n                network = await this.detectNetwork();\n            }\n\n            // This should never happen; every Provider sub-class should have\n            // suggested a network by here (or have thrown).\n            if (!network) {\n                logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n            }\n\n            // Possible this call stacked so do not call defineReadOnly again\n            if (this._network == null) {\n                if (this.anyNetwork) {\n                    this._network = network;\n                } else {\n                    defineReadOnly(this, \"_network\", network);\n                }\n                this.emit(\"network\", network, null);\n            }\n        }\n\n        return this._network;\n    }\n\n    // This will always return the most recently established network.\n    // For \"any\", this can change (a \"network\" event is emitted before\n    // any change is refelcted); otherwise this cannot change\n    get ready(): Promise<Network> {\n        return poll(() => {\n            return this._ready().then((network) => {\n                return network;\n            }, (error) => {\n                // If the network isn't running yet, we will wait\n                if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n                    return undefined;\n                }\n                throw error;\n            });\n        });\n    }\n\n    // @TODO: Remove this and just create a singleton formatter\n    static getFormatter(): Formatter {\n        if (defaultFormatter == null) {\n            defaultFormatter = new Formatter();\n        }\n        return defaultFormatter;\n    }\n\n    // @TODO: Remove this and just use getNetwork\n    static getNetwork(network: Networkish): Network {\n        return getNetwork((network == null) ? \"homestead\": network);\n    }\n\n    // Fetches the blockNumber, but will reuse any result that is less\n    // than maxAge old or has been requested since the last request\n    async _getInternalBlockNumber(maxAge: number): Promise<number> {\n        await this._ready();\n\n        // Allowing stale data up to maxAge old\n        if (maxAge > 0) {\n\n            // While there are pending internal block requests...\n            while (this._internalBlockNumber) {\n\n                // ...\"remember\" which fetch we started with\n                const internalBlockNumber = this._internalBlockNumber;\n\n                try {\n                    // Check the result is not too stale\n                    const result = await internalBlockNumber;\n                    if ((getTime() - result.respTime) <= maxAge) {\n                        return result.blockNumber;\n                    }\n\n                    // Too old; fetch a new value\n                    break;\n\n                } catch(error) {\n\n                    // The fetch rejected; if we are the first to get the\n                    // rejection, drop through so we replace it with a new\n                    // fetch; all others blocked will then get that fetch\n                    // which won't match the one they \"remembered\" and loop\n                    if (this._internalBlockNumber === internalBlockNumber) {\n                        break;\n                    }\n                }\n            }\n        }\n\n        const reqTime = getTime();\n\n        const checkInternalBlockNumber = resolveProperties({\n            blockNumber: this.perform(\"getBlockNumber\", { }),\n            networkError: this.getNetwork().then((network) => (null), (error) => (error))\n        }).then(({ blockNumber, networkError }) => {\n            if (networkError) {\n                // Unremember this bad internal block number\n                if (this._internalBlockNumber === checkInternalBlockNumber) {\n                    this._internalBlockNumber = null;\n                }\n                throw networkError;\n            }\n\n            const respTime = getTime();\n\n            blockNumber = BigNumber.from(blockNumber).toNumber();\n            if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n            this._maxInternalBlockNumber = blockNumber;\n            this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n            return { blockNumber, reqTime, respTime };\n        });\n\n        this._internalBlockNumber = checkInternalBlockNumber;\n\n        // Swallow unhandled exceptions; if needed they are handled else where\n        checkInternalBlockNumber.catch((error) => {\n            // Don't null the dead (rejected) fetch, if it has already been updated\n            if (this._internalBlockNumber === checkInternalBlockNumber) {\n                this._internalBlockNumber = null;\n            }\n        });\n\n        return (await checkInternalBlockNumber).blockNumber;\n    }\n\n    async poll(): Promise<void> {\n        const pollId = nextPollId++;\n\n        // Track all running promises, so we can trigger a post-poll once they are complete\n        const runners: Array<Promise<void>> = [];\n\n        let blockNumber: number = null;\n        try {\n            blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n        } catch (error) {\n            this.emit(\"error\", error);\n            return;\n        }\n        this._setFastBlockNumber(blockNumber);\n\n        // Emit a poll event after we have the latest (fast) block number\n        this.emit(\"poll\", pollId, blockNumber);\n\n        // If the block has not changed, meh.\n        if (blockNumber === this._lastBlockNumber) {\n            this.emit(\"didPoll\", pollId);\n            return;\n        }\n\n        // First polling cycle, trigger a \"block\" events\n        if (this._emitted.block === -2) {\n            this._emitted.block = blockNumber - 1;\n        }\n\n        if (Math.abs((<number>(this._emitted.block)) - blockNumber) > 1000) {\n            logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n            this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n                blockNumber: blockNumber,\n                event: \"blockSkew\",\n                previousBlockNumber: this._emitted.block\n            }));\n            this.emit(\"block\", blockNumber);\n\n        } else {\n            // Notify all listener for each block that has passed\n            for (let i = (<number>this._emitted.block) + 1; i <= blockNumber; i++) {\n                this.emit(\"block\", i);\n            }\n        }\n\n        // The emitted block was updated, check for obsolete events\n        if ((<number>this._emitted.block) !== blockNumber) {\n            this._emitted.block = blockNumber;\n\n            Object.keys(this._emitted).forEach((key) => {\n                // The block event does not expire\n                if (key === \"block\") { return; }\n\n                // The block we were at when we emitted this event\n                const eventBlockNumber = this._emitted[key];\n\n                // We cannot garbage collect pending transactions or blocks here\n                // They should be garbage collected by the Provider when setting\n                // \"pending\" events\n                if (eventBlockNumber === \"pending\") { return; }\n\n                // Evict any transaction hashes or block hashes over 12 blocks\n                // old, since they should not return null anyways\n                if (blockNumber - eventBlockNumber > 12) {\n                    delete this._emitted[key];\n                }\n            });\n        }\n\n        // First polling cycle\n        if (this._lastBlockNumber === -2) {\n            this._lastBlockNumber = blockNumber - 1;\n        }\n\n        // Find all transaction hashes we are waiting on\n        this._events.forEach((event) => {\n            switch (event.type) {\n                case \"tx\": {\n                    const hash = event.hash;\n                    let runner = this.getTransactionReceipt(hash).then((receipt) => {\n                        if (!receipt || receipt.blockNumber == null) { return null; }\n                        this._emitted[\"t:\" + hash] = receipt.blockNumber;\n                        this.emit(hash, receipt);\n                        return null;\n                    }).catch((error: Error) => { this.emit(\"error\", error); });\n\n                    runners.push(runner);\n\n                    break;\n                }\n\n                case \"filter\": {\n                    const filter = event.filter;\n                    filter.fromBlock = this._lastBlockNumber + 1;\n                    filter.toBlock = blockNumber;\n\n                    const runner = this.getLogs(filter).then((logs) => {\n                        if (logs.length === 0) { return; }\n                        logs.forEach((log: Log) => {\n                            this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n                            this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n                            this.emit(filter, log);\n                        });\n                    }).catch((error: Error) => { this.emit(\"error\", error); });\n                    runners.push(runner);\n\n                    break;\n                }\n            }\n        });\n\n        this._lastBlockNumber = blockNumber;\n\n        // Once all events for this loop have been processed, emit \"didPoll\"\n        Promise.all(runners).then(() => {\n            this.emit(\"didPoll\", pollId);\n        }).catch((error) => { this.emit(\"error\", error); });\n\n        return;\n    }\n\n    // Deprecated; do not use this\n    resetEventsBlock(blockNumber: number): void {\n        this._lastBlockNumber = blockNumber - 1;\n        if (this.polling) { this.poll(); }\n    }\n\n    get network(): Network {\n        return this._network;\n    }\n\n    // This method should query the network if the underlying network\n    // can change, such as when connected to a JSON-RPC backend\n    async detectNetwork(): Promise<Network> {\n        return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"provider.detectNetwork\"\n        });\n    }\n\n    async getNetwork(): Promise<Network> {\n        const network = await this._ready();\n\n        // Make sure we are still connected to the same network; this is\n        // only an external call for backends which can have the underlying\n        // network change spontaneously\n        const currentNetwork = await this.detectNetwork();\n        if (network.chainId !== currentNetwork.chainId) {\n\n            // We are allowing network changes, things can get complex fast;\n            // make sure you know what you are doing if you use \"any\"\n            if (this.anyNetwork) {\n                this._network = currentNetwork;\n\n                // Reset all internal block number guards and caches\n                this._lastBlockNumber = -2;\n                this._fastBlockNumber = null;\n                this._fastBlockNumberPromise = null;\n                this._fastQueryDate = 0;\n                this._emitted.block = -2;\n                this._maxInternalBlockNumber = -1024;\n                this._internalBlockNumber = null;\n\n                // The \"network\" event MUST happen before this method resolves\n                // so any events have a chance to unregister, so we stall an\n                // additional event loop before returning from /this/ call\n                this.emit(\"network\", currentNetwork, network);\n                await stall(0);\n\n                return this._network;\n            }\n\n            const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n                event: \"changed\",\n                network: network,\n                detectedNetwork: currentNetwork\n            });\n\n            this.emit(\"error\", error);\n            throw error;\n        }\n\n        return network;\n    }\n\n    get blockNumber(): number {\n        this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n            this._setFastBlockNumber(blockNumber);\n        }, (error) => { });\n\n        return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n    }\n\n    get polling(): boolean {\n        return (this._poller != null);\n    }\n\n    set polling(value: boolean) {\n        if (value && !this._poller) {\n            this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n            if (!this._bootstrapPoll) {\n                this._bootstrapPoll = setTimeout(() => {\n                    this.poll();\n\n                    // We block additional polls until the polling interval\n                    // is done, to prevent overwhelming the poll function\n                    this._bootstrapPoll = setTimeout(() => {\n                        // If polling was disabled, something may require a poke\n                        // since starting the bootstrap poll and it was disabled\n                        if (!this._poller) { this.poll(); }\n\n                        // Clear out the bootstrap so we can do another\n                        this._bootstrapPoll = null;\n                    }, this.pollingInterval);\n                }, 0);\n            }\n\n        } else if (!value && this._poller) {\n            clearInterval(this._poller);\n            this._poller = null;\n        }\n    }\n\n    get pollingInterval(): number {\n        return this._pollingInterval;\n    }\n\n    set pollingInterval(value: number) {\n        if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n            throw new Error(\"invalid polling interval\");\n        }\n\n        this._pollingInterval = value;\n\n        if (this._poller) {\n            clearInterval(this._poller);\n            this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n        }\n    }\n\n    _getFastBlockNumber(): Promise<number> {\n        const now = getTime();\n\n        // Stale block number, request a newer value\n        if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n            this._fastQueryDate = now;\n            this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n                if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n                    this._fastBlockNumber = blockNumber;\n                }\n                return this._fastBlockNumber;\n            });\n        }\n\n        return this._fastBlockNumberPromise;\n    }\n\n    _setFastBlockNumber(blockNumber: number): void {\n        // Older block, maybe a stale request\n        if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n        // Update the time we updated the blocknumber\n        this._fastQueryDate = getTime();\n\n        // Newer block number, use  it\n        if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n            this._fastBlockNumber = blockNumber;\n            this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n        }\n    }\n\n    async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt> {\n        return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n    }\n\n    async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise<TransactionReceipt> {\n        const receipt = await this.getTransactionReceipt(transactionHash);\n\n        // Receipt is already good\n        if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n        // Poll until the receipt is good...\n        return new Promise((resolve, reject) => {\n            const cancelFuncs: Array<() => void> = [];\n\n            let done = false;\n            const alreadyDone = function() {\n                if (done) { return true; }\n                done = true;\n                cancelFuncs.forEach((func) => { func(); });\n                return false;\n            };\n\n            const minedHandler = (receipt: TransactionReceipt) => {\n                if (receipt.confirmations < confirmations) { return; }\n                if (alreadyDone()) { return; }\n                resolve(receipt);\n            }\n            this.on(transactionHash, minedHandler);\n            cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n            if (replaceable) {\n                let lastBlockNumber = replaceable.startBlock;\n                let scannedBlock: number = null;\n                const replaceHandler = async (blockNumber: number) => {\n                    if (done) { return; }\n\n                    // Wait 1 second; this is only used in the case of a fault, so\n                    // we will trade off a little bit of latency for more consistent\n                    // results and fewer JSON-RPC calls\n                    await stall(1000);\n\n                    this.getTransactionCount(replaceable.from).then(async (nonce) => {\n                        if (done) { return; }\n\n                        if (nonce <= replaceable.nonce) {\n                            lastBlockNumber = blockNumber;\n\n                        } else {\n                            // First check if the transaction was mined\n                            {\n                                const mined = await this.getTransaction(transactionHash);\n                                if (mined && mined.blockNumber != null) { return; }\n                            }\n\n                            // First time scanning. We start a little earlier for some\n                            // wiggle room here to handle the eventually consistent nature\n                            // of blockchain (e.g. the getTransactionCount was for a\n                            // different block)\n                            if (scannedBlock == null) {\n                                scannedBlock = lastBlockNumber - 3;\n                                if (scannedBlock < replaceable.startBlock) {\n                                    scannedBlock = replaceable.startBlock;\n                                }\n                            }\n\n                            while (scannedBlock <= blockNumber) {\n                                if (done) { return; }\n\n                                const block = await this.getBlockWithTransactions(scannedBlock);\n                                for (let ti = 0; ti < block.transactions.length; ti++) {\n                                    const tx = block.transactions[ti];\n\n                                    // Successfully mined!\n                                    if (tx.hash === transactionHash) { return; }\n\n                                    // Matches our transaction from and nonce; its a replacement\n                                    if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n                                        if (done) { return; }\n\n                                        // Get the receipt of the replacement\n                                        const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n                                        // Already resolved or rejected (prolly a timeout)\n                                        if (alreadyDone()) { return; }\n\n                                        // The reason we were replaced\n                                        let reason = \"replaced\";\n                                        if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n                                            reason = \"repriced\";\n                                        } else  if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n                                            reason = \"cancelled\"\n                                        }\n\n                                        // Explain why we were replaced\n                                        reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n                                            cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n                                            reason,\n                                            replacement: this._wrapTransaction(tx),\n                                            hash: transactionHash,\n                                            receipt\n                                        }));\n\n                                        return;\n                                    }\n                                }\n                                scannedBlock++;\n                            }\n                        }\n\n                        if (done) { return; }\n                        this.once(\"block\", replaceHandler);\n\n                    }, (error) => {\n                        if (done) { return; }\n                        this.once(\"block\", replaceHandler);\n                    });\n                };\n\n                if (done) { return; }\n                this.once(\"block\", replaceHandler);\n\n                cancelFuncs.push(() => {\n                    this.removeListener(\"block\", replaceHandler);\n                });\n            }\n\n            if (typeof(timeout) === \"number\" && timeout > 0) {\n                const timer = setTimeout(() => {\n                    if (alreadyDone()) { return; }\n                    reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n                }, timeout);\n                if (timer.unref) { timer.unref(); }\n\n                cancelFuncs.push(() => { clearTimeout(timer); });\n            }\n        });\n    }\n\n    async getBlockNumber(): Promise<number> {\n        return this._getInternalBlockNumber(0);\n    }\n\n    async getGasPrice(): Promise<BigNumber> {\n        await this.getNetwork();\n\n        const result = await this.perform(\"getGasPrice\", { });\n        try {\n            return BigNumber.from(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"getGasPrice\",\n                result, error\n            });\n        }\n    }\n\n    async getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            address: this._getAddress(addressOrName),\n            blockTag: this._getBlockTag(blockTag)\n        });\n\n        const result = await this.perform(\"getBalance\", params);\n        try {\n            return BigNumber.from(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"getBalance\",\n                params, result, error\n            });\n        }\n    }\n\n    async getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            address: this._getAddress(addressOrName),\n            blockTag: this._getBlockTag(blockTag)\n        });\n\n        const result = await this.perform(\"getTransactionCount\", params);\n        try {\n            return BigNumber.from(result).toNumber();\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"getTransactionCount\",\n                params, result, error\n            });\n        }\n    }\n\n    async getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            address: this._getAddress(addressOrName),\n            blockTag: this._getBlockTag(blockTag)\n        });\n\n        const result = await this.perform(\"getCode\", params);\n        try {\n            return hexlify(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"getCode\",\n                params, result, error\n            });\n        }\n    }\n\n    async getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            address: this._getAddress(addressOrName),\n            blockTag: this._getBlockTag(blockTag),\n            position: Promise.resolve(position).then((p) => hexValue(p))\n        });\n        const result = await this.perform(\"getStorageAt\", params);\n        try {\n            return hexlify(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"getStorageAt\",\n                params, result, error\n            });\n        }\n    }\n\n    // This should be called by any subclass wrapping a TransactionResponse\n    _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n        if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n        const result = <TransactionResponse>tx;\n\n        // Check the hash we expect is the same as the hash the server reported\n        if (hash != null && tx.hash !== hash) {\n            logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n        }\n\n        result.wait = async (confirms?: number, timeout?: number) => {\n            if (confirms == null) { confirms = 1; }\n            if (timeout == null) { timeout = 0; }\n\n            // Get the details to detect replacement\n            let replacement = undefined;\n            if (confirms !== 0 && startBlock != null) {\n                replacement = {\n                    data: tx.data,\n                    from: tx.from,\n                    nonce: tx.nonce,\n                    to: tx.to,\n                    value: tx.value,\n                    startBlock\n                };\n            }\n\n            const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n            if (receipt == null && confirms === 0) { return null; }\n\n            // No longer pending, allow the polling loop to garbage collect this\n            this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n            if (receipt.status === 0) {\n                logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n                    transactionHash: tx.hash,\n                    transaction: tx,\n                    receipt: receipt\n                });\n            }\n            return receipt;\n        };\n\n        return result;\n    }\n\n    async sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse> {\n        await this.getNetwork();\n        const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n        const tx = this.formatter.transaction(signedTransaction);\n        const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n        try {\n            const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n            return this._wrapTransaction(tx, hash, blockNumber);\n        } catch (error) {\n            (<any>error).transaction = tx;\n            (<any>error).transactionHash = tx.hash;\n            throw error;\n        }\n    }\n\n    async _getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction> {\n        const values: any = await transaction;\n\n        const tx: any = { };\n\n        [\"from\", \"to\"].forEach((key) => {\n            if (values[key] == null) { return; }\n            tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n        });\n\n        [\"gasLimit\", \"gasPrice\", \"value\"].forEach((key) => {\n            if (values[key] == null) { return; }\n            tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n        });\n\n        [\"type\"].forEach((key) => {\n            if (values[key] == null) { return; }\n            tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n        });\n\n        if (values.accessList) {\n            tx.accessList = this.formatter.accessList(values.accessList);\n        }\n\n        [\"data\"].forEach((key) => {\n            if (values[key] == null) { return; }\n            tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n        });\n\n        return this.formatter.transactionRequest(await resolveProperties(tx));\n    }\n\n    async _getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash> {\n        filter = await filter;\n\n        const result: any = { };\n\n        if (filter.address != null) {\n            result.address = this._getAddress(filter.address);\n        }\n\n        [\"blockHash\", \"topics\"].forEach((key) => {\n            if ((<any>filter)[key] == null) { return; }\n            result[key] = (<any>filter)[key];\n        });\n\n        [\"fromBlock\", \"toBlock\"].forEach((key) => {\n            if ((<any>filter)[key] == null) { return; }\n            result[key] = this._getBlockTag((<any>filter)[key]);\n        });\n\n        return this.formatter.filter(await resolveProperties(result));\n    }\n\n    async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            transaction: this._getTransactionRequest(transaction),\n            blockTag: this._getBlockTag(blockTag)\n        });\n\n        const result = await this.perform(\"call\", params);\n        try {\n            return hexlify(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"call\",\n                params, result, error\n            });\n        }\n    }\n\n    async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n        await this.getNetwork();\n        const params = await resolveProperties({\n            transaction: this._getTransactionRequest(transaction)\n        });\n\n        const result = await this.perform(\"estimateGas\", params);\n        try {\n            return BigNumber.from(result);\n        } catch (error) {\n            return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n                method: \"estimateGas\",\n                params, result, error\n            });\n        }\n    }\n\n    async _getAddress(addressOrName: string | Promise<string>): Promise<string> {\n        const address = await this.resolveName(addressOrName);\n        if (address == null) {\n            logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: `resolveName(${ JSON.stringify(addressOrName) })`\n            });\n        }\n        return address;\n    }\n\n    async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions> {\n        await this.getNetwork();\n\n        blockHashOrBlockTag = await blockHashOrBlockTag;\n\n        // If blockTag is a number (not \"latest\", etc), this is the block number\n        let blockNumber = -128;\n\n        const params: { [key: string]: any } = {\n            includeTransactions: !!includeTransactions\n        };\n\n        if (isHexString(blockHashOrBlockTag, 32)) {\n            params.blockHash = blockHashOrBlockTag;\n        } else {\n            try {\n                params.blockTag = this.formatter.blockTag(await this._getBlockTag(blockHashOrBlockTag));\n                if (isHexString(params.blockTag)) {\n                    blockNumber = parseInt(params.blockTag.substring(2), 16);\n                }\n            } catch (error) {\n                logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n            }\n        }\n\n        return poll(async () => {\n            const block = await this.perform(\"getBlock\", params);\n\n            // Block was not found\n            if (block == null) {\n\n                // For blockhashes, if we didn't say it existed, that blockhash may\n                // not exist. If we did see it though, perhaps from a log, we know\n                // it exists, and this node is just not caught up yet.\n                if (params.blockHash != null) {\n                    if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n                }\n\n                // For block tags, if we are asking for a future block, we return null\n                if (params.blockTag != null) {\n                    if (blockNumber > this._emitted.block) { return null; }\n                }\n\n                // Retry on the next block\n                return undefined;\n            }\n\n            // Add transactions\n            if (includeTransactions) {\n                let blockNumber: number = null;\n                for (let i = 0; i < block.transactions.length; i++) {\n                    const tx = block.transactions[i];\n                    if (tx.blockNumber == null) {\n                        tx.confirmations = 0;\n\n                    } else if (tx.confirmations == null) {\n                        if (blockNumber == null) {\n                            blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n                        }\n\n                        // Add the confirmations using the fast block number (pessimistic)\n                        let confirmations = (blockNumber - tx.blockNumber) + 1;\n                        if (confirmations <= 0) { confirmations = 1; }\n                        tx.confirmations = confirmations;\n                    }\n                }\n                return this.formatter.blockWithTransactions(block);\n            }\n\n            return this.formatter.block(block);\n        }, { oncePoll: this });\n    }\n\n    getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block> {\n        return <Promise<Block>>(this._getBlock(blockHashOrBlockTag, false));\n    }\n\n    getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions> {\n        return <Promise<BlockWithTransactions>>(this._getBlock(blockHashOrBlockTag, true));\n    }\n\n    async getTransaction(transactionHash: string | Promise<string>): Promise<TransactionResponse> {\n        await this.getNetwork();\n        transactionHash = await transactionHash;\n\n        const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n        return poll(async () => {\n            const result = await this.perform(\"getTransaction\", params);\n\n            if (result == null) {\n                if (this._emitted[\"t:\" + transactionHash] == null) {\n                    return null;\n                }\n                return undefined;\n            }\n\n            const tx = this.formatter.transactionResponse(result);\n\n            if (tx.blockNumber == null) {\n                tx.confirmations = 0;\n\n            } else if (tx.confirmations == null) {\n                const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n                // Add the confirmations using the fast block number (pessimistic)\n                let confirmations = (blockNumber - tx.blockNumber) + 1;\n                if (confirmations <= 0) { confirmations = 1; }\n                tx.confirmations = confirmations;\n            }\n\n            return this._wrapTransaction(tx);\n        }, { oncePoll: this });\n    }\n\n    async getTransactionReceipt(transactionHash: string | Promise<string>): Promise<TransactionReceipt> {\n        await this.getNetwork();\n\n        transactionHash = await transactionHash;\n\n        const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n        return poll(async () => {\n            const result = await this.perform(\"getTransactionReceipt\", params);\n\n            if (result == null) {\n                if (this._emitted[\"t:\" + transactionHash] == null) {\n                    return null;\n                }\n                return undefined;\n            }\n\n            // \"geth-etc\" returns receipts before they are ready\n            if (result.blockHash == null) { return undefined; }\n\n            const receipt = this.formatter.receipt(result);\n\n            if (receipt.blockNumber == null) {\n                receipt.confirmations = 0;\n\n            } else if (receipt.confirmations == null) {\n                const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n                // Add the confirmations using the fast block number (pessimistic)\n                let confirmations = (blockNumber - receipt.blockNumber) + 1;\n                if (confirmations <= 0) { confirmations = 1; }\n                receipt.confirmations = confirmations;\n            }\n\n            return receipt;\n        }, { oncePoll: this });\n    }\n\n    async getLogs(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Array<Log>> {\n        await this.getNetwork();\n        const params = await resolveProperties({ filter: this._getFilter(filter) });\n        const logs: Array<Log> = await this.perform(\"getLogs\", params);\n        logs.forEach((log) => {\n            if (log.removed == null) { log.removed = false; }\n        });\n        return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n    }\n\n    async getEtherPrice(): Promise<number> {\n        await this.getNetwork();\n        return this.perform(\"getEtherPrice\", { });\n    }\n\n    async _getBlockTag(blockTag: BlockTag | Promise<BlockTag>): Promise<BlockTag> {\n        blockTag = await blockTag;\n\n        if (typeof(blockTag) === \"number\" && blockTag < 0) {\n            if (blockTag % 1) {\n                logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n            }\n\n            let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n            blockNumber += blockTag;\n            if (blockNumber < 0) { blockNumber = 0; }\n            return this.formatter.blockTag(blockNumber)\n        }\n\n        return this.formatter.blockTag(blockTag);\n    }\n\n\n    async getResolver(name: string): Promise<Resolver> {\n        try {\n            const address = await this._getResolver(name);\n            if (address == null) { return null; }\n            return new Resolver(this, address, name);\n        } catch (error) {\n            if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n            return null;\n        }\n    }\n\n    async _getResolver(name: string): Promise<string> {\n        // Get the resolver from the blockchain\n        const network = await this.getNetwork();\n\n        // No ENS...\n        if (!network.ensAddress) {\n            logger.throwError(\n                \"network does not support ENS\",\n                Logger.errors.UNSUPPORTED_OPERATION,\n                { operation: \"ENS\", network: network.name }\n            );\n        }\n\n        // keccak256(\"resolver(bytes32)\")\n        const transaction = {\n            to: network.ensAddress,\n            data: (\"0x0178b8bf\" + namehash(name).substring(2))\n        };\n\n        try {\n            return this.formatter.callAddress(await this.call(transaction));\n        } catch (error) {\n            if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n            throw error;\n        }\n    }\n\n    async resolveName(name: string | Promise<string>): Promise<string> {\n        name = await name;\n\n        // If it is already an address, nothing to resolve\n        try {\n            return Promise.resolve(this.formatter.address(name));\n        } catch (error) {\n            // If is is a hexstring, the address is bad (See #694)\n            if (isHexString(name)) { throw error; }\n        }\n\n        if (typeof(name) !== \"string\") {\n            logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n        }\n\n        // Get the addr from the resovler\n        const resolver = await this.getResolver(name);\n        if (!resolver) { return null; }\n\n        return await resolver.getAddress();\n    }\n\n    async lookupAddress(address: string | Promise<string>): Promise<string> {\n        address = await address;\n        address = this.formatter.address(address);\n\n        const reverseName = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n        const resolverAddress = await this._getResolver(reverseName);\n        if (!resolverAddress) { return null; }\n\n        // keccak(\"name(bytes32)\")\n        let bytes = arrayify(await this.call({\n            to: resolverAddress,\n            data: (\"0x691f3431\" + namehash(reverseName).substring(2))\n        }));\n\n        // Strip off the dynamic string pointer (0x20)\n        if (bytes.length < 32 || !BigNumber.from(bytes.slice(0, 32)).eq(32)) { return null; }\n        bytes = bytes.slice(32);\n\n        // Not a length-prefixed string\n        if (bytes.length < 32) { return null; }\n\n        // Get the length of the string (from the length-prefix)\n        const length = BigNumber.from(bytes.slice(0, 32)).toNumber();\n        bytes = bytes.slice(32);\n\n        // Length longer than available data\n        if (length > bytes.length) { return null; }\n\n        const name = toUtf8String(bytes.slice(0, length));\n\n        // Make sure the reverse record matches the foward record\n        const addr = await this.resolveName(name);\n        if (addr != address) { return null; }\n\n        return name;\n    }\n\n    perform(method: string, params: any): Promise<any> {\n        return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n    }\n\n    _startEvent(event: Event): void {\n        this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n    }\n\n    _stopEvent(event: Event): void {\n        this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n    }\n\n    _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n        const event = new Event(getEventTag(eventName), listener, once)\n        this._events.push(event);\n        this._startEvent(event);\n\n        return this;\n    }\n\n    on(eventName: EventType, listener: Listener): this {\n        return this._addEventListener(eventName, listener, false);\n    }\n\n    once(eventName: EventType, listener: Listener): this {\n        return this._addEventListener(eventName, listener, true);\n    }\n\n\n    emit(eventName: EventType, ...args: Array<any>): boolean {\n        let result = false;\n\n        let stopped: Array<Event> = [ ];\n\n        let eventTag = getEventTag(eventName);\n        this._events = this._events.filter((event) => {\n            if (event.tag !== eventTag) { return true; }\n\n            setTimeout(() => {\n                event.listener.apply(this, args);\n            }, 0);\n\n            result = true;\n\n            if (event.once) {\n                stopped.push(event);\n                return false;\n            }\n\n            return true;\n        });\n\n        stopped.forEach((event) => { this._stopEvent(event); });\n\n        return result;\n    }\n\n    listenerCount(eventName?: EventType): number {\n        if (!eventName) { return this._events.length; }\n\n        let eventTag = getEventTag(eventName);\n        return this._events.filter((event) => {\n            return (event.tag === eventTag);\n        }).length;\n    }\n\n    listeners(eventName?: EventType): Array<Listener> {\n        if (eventName == null) {\n            return this._events.map((event) => event.listener);\n        }\n\n        let eventTag = getEventTag(eventName);\n        return this._events\n            .filter((event) => (event.tag === eventTag))\n            .map((event) => event.listener);\n    }\n\n    off(eventName: EventType, listener?: Listener): this {\n        if (listener == null) {\n            return this.removeAllListeners(eventName);\n        }\n\n        const stopped: Array<Event> = [ ];\n\n        let found = false;\n\n        let eventTag = getEventTag(eventName);\n        this._events = this._events.filter((event) => {\n            if (event.tag !== eventTag || event.listener != listener) { return true; }\n            if (found) { return true; }\n            found = true;\n            stopped.push(event);\n            return false;\n        });\n\n        stopped.forEach((event) => { this._stopEvent(event); });\n\n        return this;\n    }\n\n    removeAllListeners(eventName?: EventType): this {\n        let stopped: Array<Event> = [ ];\n        if (eventName == null) {\n            stopped = this._events;\n\n            this._events = [ ];\n        } else {\n            const eventTag = getEventTag(eventName);\n            this._events = this._events.filter((event) => {\n                if (event.tag !== eventTag) { return true; }\n                stopped.push(event);\n                return false;\n            });\n        }\n\n        stopped.forEach((event) => { this._stopEvent(event); });\n\n        return this;\n    }\n}\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction checkError(method: string, error: any, params: any): any {\n    // Undo the \"convenience\" some nodes are attempting to prevent backwards\n    // incompatibility; maybe for v6 consider forwarding reverts as errors\n    if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n        const e = error.error;\n        if (e && e.message.match(\"reverted\") && isHexString(e.data)) {\n            return e.data;\n        }\n\n        logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n            error, data: \"0x\"\n        });\n    }\n\n    let message = error.message;\n    if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n        message = error.error.message;\n    } else if (typeof(error.body) === \"string\") {\n        message = error.body;\n    } else if (typeof(error.responseText) === \"string\") {\n        message = error.responseText;\n    }\n    message = (message || \"\").toLowerCase();\n\n    const transaction = params.transaction || params.signedTransaction;\n\n    // \"insufficient funds for gas * price + value + cost(data)\"\n    if (message.match(/insufficient funds/)) {\n        logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n            error, method, transaction\n        });\n    }\n\n    // \"nonce too low\"\n    if (message.match(/nonce too low/)) {\n        logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n            error, method, transaction\n        });\n    }\n\n    // \"replacement transaction underpriced\"\n    if (message.match(/replacement transaction underpriced/)) {\n        logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n            error, method, transaction\n        });\n    }\n\n    // \"replacement transaction underpriced\"\n    if (message.match(/only replay-protected/)) {\n        logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n            error, method, transaction\n        });\n    }\n\n    if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n        logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n            error, method, transaction\n        });\n    }\n\n    throw error;\n}\n\nfunction timer(timeout: number): Promise<any> {\n    return new Promise(function(resolve) {\n        setTimeout(resolve, timeout);\n    });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n    if (payload.error) {\n        // @TODO: not any\n        const error: any = new Error(payload.error.message);\n        error.code = payload.error.code;\n        error.data = payload.error.data;\n        throw error;\n    }\n\n    return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n    if (value) { return value.toLowerCase(); }\n    return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n    readonly provider: JsonRpcProvider;\n    _index: number;\n    _address: string;\n\n    constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n        logger.checkNew(new.target, JsonRpcSigner);\n\n        super();\n\n        if (constructorGuard !== _constructorGuard) {\n            throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n        }\n\n        defineReadOnly(this, \"provider\", provider);\n\n        if (addressOrIndex == null) { addressOrIndex = 0; }\n\n        if (typeof(addressOrIndex) === \"string\") {\n            defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n            defineReadOnly(this, \"_index\", null);\n\n        } else if (typeof(addressOrIndex) === \"number\") {\n            defineReadOnly(this, \"_index\", addressOrIndex);\n            defineReadOnly(this, \"_address\", null);\n\n        } else {\n            logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n        }\n    }\n\n    connect(provider: Provider): JsonRpcSigner {\n        return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"connect\"\n        });\n    }\n\n    connectUnchecked(): JsonRpcSigner {\n        return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n    }\n\n    getAddress(): Promise<string> {\n        if (this._address) {\n            return Promise.resolve(this._address);\n        }\n\n        return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n            if (accounts.length <= this._index) {\n                logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n                    operation: \"getAddress\"\n                });\n            }\n            return this.provider.formatter.address(accounts[this._index])\n        });\n    }\n\n    sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n        transaction = shallowCopy(transaction);\n\n        const fromAddress = this.getAddress().then((address) => {\n            if (address) { address = address.toLowerCase(); }\n            return address;\n        });\n\n        // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n        // wishes to use this, it is easy to specify explicitly, otherwise\n        // we look it up for them.\n        if (transaction.gasLimit == null) {\n            const estimate = shallowCopy(transaction);\n            estimate.from = fromAddress;\n            transaction.gasLimit = this.provider.estimateGas(estimate);\n        }\n\n        if (transaction.to != null) {\n            transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n                if (to == null) { return null; }\n                const address = await this.provider.resolveName(to);\n                if (address == null) {\n                    logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n                }\n                return address;\n            });\n        }\n\n        return resolveProperties({\n            tx: resolveProperties(transaction),\n            sender: fromAddress\n        }).then(({ tx, sender }) => {\n\n            if (tx.from != null) {\n                if (tx.from.toLowerCase() !== sender) {\n                    logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n                }\n            } else {\n                tx.from = sender;\n            }\n\n            const hexTx = (<any>this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n            return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n                return hash;\n            }, (error) => {\n                return checkError(\"sendTransaction\", error, hexTx);\n            });\n        });\n    }\n\n    signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n        return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"signTransaction\"\n        });\n    }\n\n    async sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n        // This cannot be mined any earlier than any recent block\n        const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n        // Send the transaction\n        const hash = await this.sendUncheckedTransaction(transaction);\n\n        try {\n            // Unfortunately, JSON-RPC only provides and opaque transaction hash\n            // for a response, and we need the actual transaction, so we poll\n            // for it; it should show up very quickly\n            return await poll(async () => {\n                const tx = await this.provider.getTransaction(hash);\n                if (tx === null) { return undefined; }\n                return this.provider._wrapTransaction(tx, hash, blockNumber);\n            }, { oncePoll: this.provider });\n        } catch (error) {\n            (<any>error).transactionHash = hash;\n            throw error;\n        }\n    }\n\n    async signMessage(message: Bytes | string): Promise<string> {\n        const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n        const address = await this.getAddress();\n\n        // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n        return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n    }\n\n    async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n        // Populate any ENS names (in-place)\n        const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n            return this.provider.resolveName(name);\n        });\n\n        const address = await this.getAddress();\n\n        return await this.provider.send(\"eth_signTypedData_v4\", [\n            address.toLowerCase(),\n            JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n        ]);\n    }\n\n    async unlock(password: string): Promise<boolean> {\n        const provider = this.provider;\n\n        const address = await this.getAddress();\n\n        return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n    }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n    sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n        return this.sendUncheckedTransaction(transaction).then((hash) => {\n            return <TransactionResponse>{\n                hash: hash,\n                nonce: null,\n                gasLimit: null,\n                gasPrice: null,\n                data: null,\n                value: null,\n                chainId: null,\n                confirmations: 0,\n                from: null,\n                wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n            };\n        });\n    }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n    chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n    type: true, accessList: true,\n    maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n    readonly connection: ConnectionInfo;\n\n    _pendingFilter: Promise<number>;\n    _nextId: number;\n\n    // During any given event loop, the results for a given call will\n    // all be the same, so we can dedup the calls to save requests and\n    // bandwidth. @TODO: Try out generalizing this against send?\n    _eventLoopCache: Record<string, Promise<any>>;\n    get _cache(): Record<string, Promise<any>> {\n        if (this._eventLoopCache == null) {\n            this._eventLoopCache = { };\n        }\n        return this._eventLoopCache;\n    }\n\n    constructor(url?: ConnectionInfo | string, network?: Networkish) {\n        logger.checkNew(new.target, JsonRpcProvider);\n\n        let networkOrReady: Networkish | Promise<Network> = network;\n\n        // The network is unknown, query the JSON-RPC for it\n        if (networkOrReady == null) {\n            networkOrReady = new Promise((resolve, reject) => {\n                setTimeout(() => {\n                    this.detectNetwork().then((network) => {\n                        resolve(network);\n                    }, (error) => {\n                        reject(error);\n                    });\n                }, 0);\n            });\n        }\n\n        super(networkOrReady);\n\n        // Default URL\n        if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n        if (typeof(url) === \"string\") {\n            defineReadOnly(this, \"connection\",Object.freeze({\n                url: url\n            }));\n        } else {\n            defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n        }\n\n        this._nextId = 42;\n    }\n\n    static defaultUrl(): string {\n        return \"http:/\\/localhost:8545\";\n    }\n\n    detectNetwork(): Promise<Network> {\n        if (!this._cache[\"detectNetwork\"]) {\n            this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n            // Clear this cache at the beginning of the next event loop\n            setTimeout(() => {\n                this._cache[\"detectNetwork\"] = null;\n            }, 0);\n        }\n        return this._cache[\"detectNetwork\"];\n    }\n\n    async _uncachedDetectNetwork(): Promise<Network> {\n        await timer(0);\n\n        let chainId = null;\n        try {\n            chainId = await this.send(\"eth_chainId\", [ ]);\n        } catch (error) {\n            try {\n                chainId = await this.send(\"net_version\", [ ]);\n            } catch (error) { }\n        }\n\n        if (chainId != null) {\n            const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n            try {\n                return getNetwork(BigNumber.from(chainId).toNumber());\n            } catch (error) {\n                return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n                    chainId: chainId,\n                    event: \"invalidNetwork\",\n                    serverError: error\n                });\n            }\n        }\n\n        return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n            event: \"noNetwork\"\n        });\n    }\n\n    getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n        return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n    }\n\n    getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n        return this.getSigner(addressOrIndex).connectUnchecked();\n    }\n\n    listAccounts(): Promise<Array<string>> {\n        return this.send(\"eth_accounts\", []).then((accounts: Array<string>) => {\n            return accounts.map((a) => this.formatter.address(a));\n        });\n    }\n\n    send(method: string, params: Array<any>): Promise<any> {\n        const request = {\n            method: method,\n            params: params,\n            id: (this._nextId++),\n            jsonrpc: \"2.0\"\n        };\n\n        this.emit(\"debug\", {\n            action: \"request\",\n            request: deepCopy(request),\n            provider: this\n        });\n\n        // We can expand this in the future to any call, but for now these\n        // are the biggest wins and do not require any serializing parameters.\n        const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n        if (cache && this._cache[method]) {\n            return this._cache[method];\n        }\n\n        const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n            this.emit(\"debug\", {\n                action: \"response\",\n                request: request,\n                response: result,\n                provider: this\n            });\n\n            return result;\n\n        }, (error) => {\n            this.emit(\"debug\", {\n                action: \"response\",\n                error: error,\n                request: request,\n                provider: this\n            });\n\n            throw error;\n        });\n\n        // Cache the fetch, but clear it on the next event loop\n        if (cache) {\n            this._cache[method] = result;\n            setTimeout(() => {\n                this._cache[method] = null;\n            }, 0);\n        }\n\n        return result;\n    }\n\n    prepareRequest(method: string, params: any): [ string, Array<any> ] {\n        switch (method) {\n            case \"getBlockNumber\":\n                return [ \"eth_blockNumber\", [] ];\n\n            case \"getGasPrice\":\n                return [ \"eth_gasPrice\", [] ];\n\n            case \"getBalance\":\n                return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n            case \"getTransactionCount\":\n                return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n            case \"getCode\":\n                return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n            case \"getStorageAt\":\n                return [ \"eth_getStorageAt\", [ getLowerCase(params.address), params.position, params.blockTag ] ];\n\n            case \"sendTransaction\":\n                return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n            case \"getBlock\":\n                if (params.blockTag) {\n                    return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n                } else if (params.blockHash) {\n                    return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n                }\n                return null;\n\n            case \"getTransaction\":\n                return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n            case \"getTransactionReceipt\":\n                return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n            case \"call\": {\n                const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n                return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n            }\n\n            case \"estimateGas\": {\n                const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n                return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n            }\n\n            case \"getLogs\":\n                if (params.filter && params.filter.address != null) {\n                    params.filter.address = getLowerCase(params.filter.address);\n                }\n                return [ \"eth_getLogs\", [ params.filter ] ];\n\n            default:\n                break;\n        }\n\n        return null;\n    }\n\n    async perform(method: string, params: any): Promise<any> {\n        const args = this.prepareRequest(method,  params);\n\n        if (args == null) {\n            logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n        }\n        try {\n            return await this.send(args[0], args[1])\n        } catch (error) {\n            return checkError(method, error, params);\n        }\n    }\n\n    _startEvent(event: Event): void {\n        if (event.tag === \"pending\") { this._startPending(); }\n        super._startEvent(event);\n    }\n\n    _startPending(): void {\n        if (this._pendingFilter != null) { return; }\n        const self = this;\n\n        const pendingFilter: Promise<number> = this.send(\"eth_newPendingTransactionFilter\", []);\n        this._pendingFilter = pendingFilter;\n\n        pendingFilter.then(function(filterId) {\n            function poll() {\n                self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array<string>) {\n                    if (self._pendingFilter != pendingFilter) { return null; }\n\n                    let seq = Promise.resolve();\n                    hashes.forEach(function(hash) {\n                        // @TODO: This should be garbage collected at some point... How? When?\n                        self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n                        seq = seq.then(function() {\n                            return self.getTransaction(hash).then(function(tx) {\n                                self.emit(\"pending\", tx);\n                                return null;\n                            });\n                        });\n                    });\n\n                    return seq.then(function() {\n                        return timer(1000);\n                    });\n                }).then(function() {\n                    if (self._pendingFilter != pendingFilter) {\n                        self.send(\"eth_uninstallFilter\", [ filterId ]);\n                        return;\n                    }\n                    setTimeout(function() { poll(); }, 0);\n\n                    return null;\n                }).catch((error: Error) => { });\n            }\n            poll();\n\n            return filterId;\n        }).catch((error: Error) => { });\n    }\n\n    _stopEvent(event: Event): void {\n        if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n            this._pendingFilter = null;\n        }\n        super._stopEvent(event);\n    }\n\n\n    // Convert an ethers.js transaction into a JSON-RPC transaction\n    //  - gasLimit => gas\n    //  - All values hexlified\n    //  - All numeric values zero-striped\n    //  - All addresses are lowercased\n    // NOTE: This allows a TransactionRequest, but all values should be resolved\n    //       before this is called\n    // @TODO: This will likely be removed in future versions and prepareRequest\n    //        will be the preferred method for this.\n    static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n        // Check only allowed properties are given\n        const allowed = shallowCopy(allowedTransactionKeys);\n        if (allowExtra) {\n            for (const key in allowExtra) {\n                if (allowExtra[key]) { allowed[key] = true; }\n            }\n        }\n\n        checkProperties(transaction, allowed);\n\n        const result: { [key: string]: string | AccessList } = {};\n\n        // Some nodes (INFURA ropsten; INFURA mainnet is fine) do not like leading zeros.\n        [\"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n            if ((<any>transaction)[key] == null) { return; }\n            const value = hexValue((<any>transaction)[key]);\n            if (key === \"gasLimit\") { key = \"gas\"; }\n            result[key] = value;\n        });\n\n        [\"from\", \"to\", \"data\"].forEach(function(key) {\n            if ((<any>transaction)[key] == null) { return; }\n            result[key] = hexlify((<any>transaction)[key]);\n        });\n\n        if ((<any>transaction).accessList) {\n            result[\"accessList\"] = accessListify((<any>transaction).accessList);\n        }\n\n        return result;\n    }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n    WS = (WebSocket as any);\n    if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n    const logger = new Logger(version);\n    WS = function() {\n        logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"new WebSocket()\"\n        });\n    }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n *  Notes:\n *\n *  This provider differs a bit from the polling providers. One main\n *  difference is how it handles consistency. The polling providers\n *  will stall responses to ensure a consistent state, while this\n *  WebSocket provider assumes the connected backend will manage this.\n *\n *  For example, if a polling provider emits an event which indicats\n *  the event occurred in blockhash XXX, a call to fetch that block by\n *  its hash XXX, if not present will retry until it is present. This\n *  can occur when querying a pool of nodes that are mildly out of sync\n *  with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n     callback: (error: Error, result: any) => void;\n     payload: string;\n};\n\nexport type Subscription = {\n    tag: string;\n    processFunc: (payload: any) => void;\n};\n\n\n// For more info about the Real-time Event API see:\n//   https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n    readonly _websocket: any;\n    readonly _requests: { [ name: string ]: InflightRequest };\n    readonly _detectNetwork: Promise<Network>;\n\n    // Maps event tag to subscription ID (we dedupe identical events)\n    readonly _subIds: { [ tag: string ]: Promise<string> };\n\n    // Maps Subscription ID to Subscription\n    readonly _subs: { [ name: string ]: Subscription };\n\n    _wsReady: boolean;\n\n    constructor(url: string, network?: Networkish) {\n        // This will be added in the future; please open an issue to expedite\n        if (network === \"any\") {\n            logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"network:any\"\n            });\n        }\n\n        super(url, network);\n        this._pollingInterval = -1;\n\n        this._wsReady = false;\n\n        defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n        defineReadOnly(this, \"_requests\", { });\n        defineReadOnly(this, \"_subs\", { });\n        defineReadOnly(this, \"_subIds\", { });\n        defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n        // Stall sending requests until the socket is open...\n        this._websocket.onopen = () => {\n            this._wsReady = true;\n            Object.keys(this._requests).forEach((id) => {\n                this._websocket.send(this._requests[id].payload);\n            });\n        };\n\n        this._websocket.onmessage = (messageEvent: { data: string }) => {\n            const data = messageEvent.data;\n            const result = JSON.parse(data);\n            if (result.id != null) {\n                const id = String(result.id);\n                const request = this._requests[id];\n                delete this._requests[id];\n\n                if (result.result !== undefined) {\n                    request.callback(null, result.result);\n\n                    this.emit(\"debug\", {\n                        action: \"response\",\n                        request: JSON.parse(request.payload),\n                        response: result.result,\n                        provider: this\n                    });\n\n                } else {\n                    let error: Error = null;\n                    if (result.error) {\n                        error = new Error(result.error.message || \"unknown error\");\n                        defineReadOnly(<any>error, \"code\", result.error.code || null);\n                        defineReadOnly(<any>error, \"response\", data);\n                    } else {\n                        error = new Error(\"unknown error\");\n                    }\n\n                    request.callback(error, undefined);\n\n                    this.emit(\"debug\", {\n                        action: \"response\",\n                        error: error,\n                        request: JSON.parse(request.payload),\n                        provider: this\n                    });\n\n                }\n\n            } else if (result.method === \"eth_subscription\") {\n                // Subscription...\n                const sub = this._subs[result.params.subscription];\n                if (sub) {\n                    //this.emit.apply(this,                  );\n                    sub.processFunc(result.params.result)\n                }\n\n            } else {\n                console.warn(\"this should not happen\");\n            }\n        };\n\n        // This Provider does not actually poll, but we want to trigger\n        // poll events for things that depend on them (like stalling for\n        // block and transaction lookups)\n        const fauxPoll = setInterval(() => {\n            this.emit(\"poll\");\n        }, 1000);\n        if (fauxPoll.unref) { fauxPoll.unref(); }\n    }\n\n    detectNetwork(): Promise<Network> {\n        return this._detectNetwork;\n    }\n\n    get pollingInterval(): number {\n        return 0;\n    }\n\n    resetEventsBlock(blockNumber: number): void {\n        logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"resetEventBlock\"\n        });\n    }\n\n    set pollingInterval(value: number) {\n        logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"setPollingInterval\"\n        });\n    }\n\n    async poll(): Promise<void> {\n        return null;\n    }\n\n    set polling(value: boolean) {\n        if (!value) { return; }\n\n        logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n            operation: \"setPolling\"\n        });\n    }\n\n    send(method: string, params?: Array<any>): Promise<any> {\n        const rid = NextId++;\n\n        return new Promise((resolve, reject) => {\n            function callback(error: Error, result: any) {\n                if (error) { return reject(error); }\n                return resolve(result);\n            }\n\n            const payload = JSON.stringify({\n                method: method,\n                params: params,\n                id: rid,\n                jsonrpc: \"2.0\"\n            });\n\n            this.emit(\"debug\", {\n                action: \"request\",\n                request: JSON.parse(payload),\n                provider: this\n            });\n\n            this._requests[String(rid)] = { callback, payload };\n\n            if (this._wsReady) { this._websocket.send(payload); }\n        });\n    }\n\n    static defaultUrl(): string {\n        return \"ws:/\\/localhost:8546\";\n    }\n\n    async _subscribe(tag: string, param: Array<any>, processFunc: (result: any) => void): Promise<void> {\n        let subIdPromise = this._subIds[tag];\n        if (subIdPromise == null) {\n            subIdPromise = Promise.all(param).then((param) => {\n                return this.send(\"eth_subscribe\", param);\n            });\n            this._subIds[tag] = subIdPromise;\n        }\n        const subId = await subIdPromise;\n        this._subs[subId] = { tag, processFunc };\n    }\n\n    _startEvent(event: Event): void {\n        switch (event.type) {\n            case \"block\":\n                this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n                    const blockNumber = BigNumber.from(result.number).toNumber();\n                    this._emitted.block = blockNumber;\n                    this.emit(\"block\", blockNumber);\n                });\n                break;\n\n            case \"pending\":\n                this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n                    this.emit(\"pending\", result);\n                });\n                break;\n\n            case \"filter\":\n                this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n                    if (result.removed == null) { result.removed = false; }\n                    this.emit(event.filter, this.formatter.filterLog(result));\n                });\n                break;\n\n            case \"tx\": {\n                const emitReceipt = (event: Event) => {\n                    const hash = event.hash;\n                    this.getTransactionReceipt(hash).then((receipt) => {\n                        if (!receipt) { return; }\n                        this.emit(hash, receipt);\n                    });\n                };\n\n                // In case it is already mined\n                emitReceipt(event);\n\n                // To keep things simple, we start up a single newHeads subscription\n                // to keep an eye out for transactions we are watching for.\n                // Starting a subscription for an event (i.e. \"tx\") that is already\n                // running is (basically) a nop.\n                this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n                    this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n                });\n                break;\n            }\n\n            // Nothing is needed\n            case \"debug\":\n            case \"poll\":\n            case \"willPoll\":\n            case \"didPoll\":\n            case \"error\":\n                break;\n\n            default:\n                console.log(\"unhandled:\", event);\n                break;\n        }\n    }\n\n    _stopEvent(event: Event): void {\n        let tag = event.tag;\n\n        if (event.type === \"tx\") {\n            // There are remaining transaction event listeners\n            if (this._events.filter((e) => (e.type === \"tx\")).length) {\n                return;\n            }\n            tag = \"tx\";\n        } else if (this.listenerCount(event.event)) {\n            // There are remaining event listeners\n            return;\n        }\n\n        const subId = this._subIds[tag];\n        if (!subId) { return; }\n\n       delete this._subIds[tag];\n       subId.then((subId) => {\n            if (!this._subs[subId]) { return; }\n            delete this._subs[subId];\n            this.send(\"eth_unsubscribe\", [ subId ]);\n        });\n    }\n\n    async destroy(): Promise<void> {\n        // Wait until we have connected before trying to disconnect\n        if (this._websocket.readyState === WebSocket.CONNECTING) {\n            await (new Promise((resolve) => {\n                this._websocket.onopen = function() {\n                    resolve(true);\n                };\n\n                this._websocket.onerror = function() {\n                    resolve(false);\n                };\n            }));\n        }\n\n        // Hangup\n        // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n        this._websocket.close(1000);\n    }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n    async detectNetwork(): Promise<Network> {\n        let network = this.network;\n        if (network == null) {\n            network = await super.detectNetwork();\n\n            if (!network) {\n                logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n            }\n\n            // If still not set, set it\n            if (this._network == null) {\n                // A static network does not support \"any\"\n                defineReadOnly(this, \"_network\", network);\n\n                this.emit(\"network\", network, null);\n            }\n        }\n        return network;\n    }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n    readonly apiKey: any;\n\n    constructor(network?: Networkish, apiKey?: any) {\n        logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n        // Normalize the Network and API Key\n        network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n        apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n        const connection = getStatic<getUrlFunc>(new.target, \"getUrl\")(network, apiKey);\n\n        super(connection, network);\n\n        if (typeof(apiKey) === \"string\") {\n            defineReadOnly(this, \"apiKey\", apiKey);\n        } else if (apiKey != null) {\n            Object.keys(apiKey).forEach((key) => {\n                defineReadOnly<any, any>(this, key, apiKey[key]);\n            });\n        }\n    }\n\n    _startPending(): void {\n        logger.warn(\"WARNING: API provider does not support pending filters\");\n    }\n\n    isCommunityResource(): boolean {\n        return false;\n    }\n\n    getSigner(address?: string): JsonRpcSigner {\n        return logger.throwError(\n            \"API provider does not support signing\",\n            Logger.errors.UNSUPPORTED_OPERATION,\n            { operation: \"getSigner\" }\n        );\n    }\n\n    listAccounts(): Promise<Array<string>> {\n        return Promise.resolve([]);\n    }\n\n    // Return a defaultApiKey if null, otherwise validate the API key\n    static getApiKey(apiKey: any): any {\n        return apiKey;\n    }\n\n    // Returns the url or connection for the given network and API key. The\n    // API key will have been sanitized by the getApiKey first, so any validation\n    // or transformations can be done there.\n    static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n        return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n            operation: \"getUrl\"\n        });\n    }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n//   https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n    readonly apiKey: string;\n\n    constructor(network?: Networkish, apiKey?: any) {\n        const provider = new AlchemyProvider(network, apiKey);\n\n        const url = provider.connection.url.replace(/^http/i, \"ws\")\n                                           .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n        super(url, provider.network);\n        defineReadOnly(this, \"apiKey\", provider.apiKey);\n    }\n\n    isCommunityResource(): boolean {\n        return (this.apiKey === defaultApiKey);\n    }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n    static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n        return new AlchemyWebSocketProvider(network, apiKey);\n    }\n\n    static getApiKey(apiKey: any): any {\n        if (apiKey == null) { return defaultApiKey; }\n        if (apiKey && typeof(apiKey) !== \"string\") {\n            logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n        }\n        return apiKey;\n    }\n\n    static getUrl(network: Network, apiKey: string): ConnectionInfo {\n        let host = null;\n        switch (network.name) {\n            case \"homestead\":\n                host = \"eth-mainnet.alchemyapi.io/v2/\";\n                break;\n            case \"ropsten\":\n                host = \"eth-ropsten.alchemyapi.io/v2/\";\n                break;\n            case \"rinkeby\":\n                host = \"eth-rinkeby.alchemyapi.io/v2/\";\n                break;\n            case \"goerli\":\n                host = \"eth-goerli.alchemyapi.io/v2/\";\n                break;\n            case \"kovan\":\n                host = \"eth-kovan.alchemyapi.io/v2/\";\n                break;\n            default:\n               logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n        }\n\n        return {\n            allowGzip: true,\n            url: (\"https:/\" + \"/\" + host + apiKey),\n            throttleCallback: (attempt: number, url: string) => {\n                if (apiKey === defaultApiKey) {\n                    showThrottleMessage();\n                }\n                return Promise.resolve(true);\n            }\n        };\n    }\n\n    async perform(method: string, params: any): Promise<any> {\n        if ((method === \"estimateGas\" && params.transaction.type === 2) || (method === \"sendTransaction\" && params.signedTransaction.substring(0, 4) === \"0x02\")) {\n            logger.throwError(\"AlchemyProvider does not currently support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: method,\n                transaction: params.transaction\n            });\n        }\n\n        return super.perform(method, params);\n    }\n\n    isCommunityResource(): boolean {\n        return (this.apiKey === defaultApiKey);\n    }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n    static getApiKey(apiKey: any): any {\n        if (apiKey != null) {\n            logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n        }\n        return null;\n    }\n\n    static getUrl(network: Network, apiKey?: any): string {\n        let host = null;\n        switch (network.name) {\n            case \"homestead\":\n                host = \"https://cloudflare-eth.com/\";\n                break;\n            default:\n               logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n        }\n\n        return host;\n    }\n\n    async perform(method: string, params: any): Promise<any> {\n        // The Cloudflare provider does not support eth_blockNumber,\n        // so we get the latest block and pull it from that\n        if (method === \"getBlockNumber\") {\n            const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n            return block.number;\n        }\n\n        return super.perform(method, params);\n    }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record<string, string> {\n    const result: Record<string, string> = { };\n    for (let key in transaction) {\n        if ((<any>transaction)[key] == null) { continue; }\n        let value = (<any>transaction)[key];\n        if (key === \"type\" && value === 0) { continue; }\n\n        // Quantity-types require no leading zero, unless 0\n        if ((<any>{ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n            value = hexValue(hexlify(value));\n        } else if (key === \"accessList\") {\n            value = \"[\" + accessListify(value).map((set) => {\n                return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n            }).join(\",\") + \"]\";\n        } else {\n            value = hexlify(value);\n        }\n        result[key] = value;\n    }\n    return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n    // getLogs, getHistory have weird success responses\n    if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n        return result.result;\n    }\n\n    if (result.status != 1 || result.message != \"OK\") {\n        const error: any = new Error(\"invalid response\");\n        error.result = JSON.stringify(result);\n        if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n            error.throttleRetry = true;\n        }\n        throw error;\n    }\n\n    return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n    // This response indicates we are being throttled\n    if (result && (<any>result).status == 0 && (<any>result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n        const error: any = new Error(\"throttled response\");\n        error.result = JSON.stringify(result);\n        error.throttleRetry = true;\n        throw error;\n    }\n\n    if (result.jsonrpc != \"2.0\") {\n        // @TODO: not any\n        const error: any = new Error(\"invalid response\");\n        error.result = JSON.stringify(result);\n        throw error;\n    }\n\n    if (result.error) {\n        // @TODO: not any\n        const error: any = new Error(result.error.message || \"unknown error\");\n        if (result.error.code) { error.code = result.error.code; }\n        if (result.error.data) { error.data = result.error.data; }\n        throw error;\n    }\n\n    return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n    if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n    if (blockTag === \"latest\") { return blockTag; }\n\n    return parseInt(blockTag.substring(2), 16);\n}\n\n\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\n\nfunction checkError(method: string, error: any, transaction: any): any {\n    // Undo the \"convenience\" some nodes are attempting to prevent backwards\n    // incompatibility; maybe for v6 consider forwarding reverts as errors\n    if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n        const e = error.error;\n\n        // Etherscan keeps changing their string\n        if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n            // Etherscan prefixes the data like \"Reverted 0x1234\"\n            let data = e.data;\n            if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n            if (isHexString(data)) { return data; }\n\n            logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n                error, data: \"0x\"\n            });\n        }\n    }\n\n    // Get the message from any nested error structure\n    let message = error.message;\n    if (error.code === Logger.errors.SERVER_ERROR) {\n        if (error.error && typeof(error.error.message) === \"string\") {\n            message = error.error.message;\n        } else if (typeof(error.body) === \"string\") {\n            message = error.body;\n        } else if (typeof(error.responseText) === \"string\") {\n            message = error.responseText;\n        }\n    }\n    message = (message || \"\").toLowerCase();\n\n    // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n    if (message.match(/insufficient funds/)) {\n        logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n           error, method, transaction\n        });\n    }\n\n    // \"Transaction with the same hash was already imported.\"\n    if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n        logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n           error, method, transaction\n        });\n    }\n\n    // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n    if (message.match(/another transaction with same nonce/)) {\n         logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n            error, method, transaction\n         });\n    }\n\n    if (message.match(/execution failed due to an exception/)) {\n        logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n            error, method, transaction\n        });\n    }\n\n    throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n    readonly baseUrl: string;\n    readonly apiKey: string;\n\n    constructor(network?: Networkish, apiKey?: string) {\n        logger.checkNew(new.target, EtherscanProvider);\n\n        super(network);\n\n        defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n        defineReadOnly(this, \"apiKey\", apiKey || defaultApiKey);\n    }\n\n    getBaseUrl(): string {\n        switch(this.network ? this.network.name: \"invalid\") {\n            case \"homestead\":\n                return \"https:/\\/api.etherscan.io\";\n            case \"ropsten\":\n                return \"https:/\\/api-ropsten.etherscan.io\";\n            case \"rinkeby\":\n                return \"https:/\\/api-rinkeby.etherscan.io\";\n            case \"kovan\":\n                return \"https:/\\/api-kovan.etherscan.io\";\n            case \"goerli\":\n                return \"https:/\\/api-goerli.etherscan.io\";\n            default:\n        }\n\n        return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n    }\n\n    getUrl(module: string, params: Record<string, string>): string {\n        const query = Object.keys(params).reduce((accum, key) => {\n            const value = params[key];\n            if (value != null) {\n                accum += `&${ key }=${ value }`\n            }\n            return accum\n        }, \"\");\n        const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n        return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n    }\n\n    getPostUrl(): string {\n        return `${ this.baseUrl }/api`;\n    }\n\n    getPostData(module: string, params: Record<string, any>): Record<string, any> {\n        params.module = module;\n        params.apikey = this.apiKey;\n        return params;\n    }\n\n    async fetch(module: string, params: Record<string, any>, post?: boolean): Promise<any> {\n        const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n        const payload = (post ? this.getPostData(module, params): null);\n        const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n        this.emit(\"debug\", {\n            action: \"request\",\n            request: url,\n            provider: this\n        });\n\n        const connection: ConnectionInfo = {\n            url: url,\n            throttleSlotInterval: 1000,\n            throttleCallback: (attempt: number, url: string) => {\n                if (this.isCommunityResource()) {\n                    showThrottleMessage();\n                }\n                return Promise.resolve(true);\n            }\n        };\n\n        let payloadStr: string = null;\n        if (payload) {\n            connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n            payloadStr = Object.keys(payload).map((key) => {\n                return `${ key }=${ payload[key] }`\n            }).join(\"&\");\n        }\n\n        const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n        this.emit(\"debug\", {\n            action: \"response\",\n            request: url,\n            response: deepCopy(result),\n            provider: this\n        });\n\n        return result;\n    }\n\n    async detectNetwork(): Promise<Network> {\n        return this.network;\n    }\n\n    async perform(method: string, params: any): Promise<any> {\n\n        switch (method) {\n            case \"getBlockNumber\":\n                return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n            case \"getGasPrice\":\n                return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n            case \"getBalance\":\n                // Returns base-10 result\n                return this.fetch(\"account\", {\n                    action: \"balance\",\n                    address: params.address,\n                    tag: params.blockTag\n                });\n\n            case \"getTransactionCount\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_getTransactionCount\",\n                    address: params.address,\n                    tag: params.blockTag\n                });\n\n            case \"getCode\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_getCode\",\n                    address: params.address,\n                    tag: params.blockTag\n                });\n\n            case \"getStorageAt\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_getStorageAt\",\n                    address: params.address,\n                    position: params.position,\n                    tag: params.blockTag\n                });\n\n            case \"sendTransaction\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_sendRawTransaction\",\n                    hex: params.signedTransaction\n                }, true).catch((error) => {\n                    return checkError(\"sendTransaction\", error, params.signedTransaction);\n                });\n\n            case \"getBlock\":\n                if (params.blockTag) {\n                    return this.fetch(\"proxy\", {\n                        action: \"eth_getBlockByNumber\",\n                        tag: params.blockTag,\n                        boolean: (params.includeTransactions ? \"true\": \"false\")\n                    });\n                }\n                throw new Error(\"getBlock by blockHash not implemented\");\n\n            case \"getTransaction\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_getTransactionByHash\",\n                    txhash: params.transactionHash\n                });\n\n            case \"getTransactionReceipt\":\n                return this.fetch(\"proxy\", {\n                    action: \"eth_getTransactionReceipt\",\n                    txhash: params.transactionHash\n                });\n\n            case \"call\": {\n                if (params.blockTag !== \"latest\") {\n                    throw new Error(\"EtherscanProvider does not support blockTag for call\");\n                }\n\n                const postData = getTransactionPostData(params.transaction);\n                postData.module = \"proxy\";\n                postData.action = \"eth_call\";\n\n                try {\n                    return await this.fetch(\"proxy\", postData, true);\n                } catch (error) {\n                    return checkError(\"call\", error, params.transaction);\n                }\n            }\n\n            case \"estimateGas\": {\n                const postData = getTransactionPostData(params.transaction);\n                postData.module = \"proxy\";\n                postData.action = \"eth_estimateGas\";\n\n                try {\n                    return await this.fetch(\"proxy\", postData, true);\n                } catch (error) {\n                    return checkError(\"estimateGas\", error, params.transaction);\n                }\n            }\n\n            case \"getLogs\": {\n                const args: Record<string, any> = { action: \"getLogs\" }\n\n                if (params.filter.fromBlock) {\n                    args.fromBlock = checkLogTag(params.filter.fromBlock);\n                }\n\n                if (params.filter.toBlock) {\n                    args.toBlock = checkLogTag(params.filter.toBlock);\n                }\n\n                if (params.filter.address) {\n                    args.address = params.filter.address;\n                }\n\n                // @TODO: We can handle slightly more complicated logs using the logs API\n                if (params.filter.topics && params.filter.topics.length > 0) {\n                    if (params.filter.topics.length > 1) {\n                        logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n                    }\n\n                    if (params.filter.topics.length === 1) {\n                        const topic0 = params.filter.topics[0];\n                        if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n                            logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n                        }\n                        args.topic0 = topic0;\n                    }\n                }\n\n                const logs: Array<any> = await this.fetch(\"logs\", args);\n\n                // Cache txHash => blockHash\n                let blocks: { [tag: string]: string } = {};\n\n                // Add any missing blockHash to the logs\n                for (let i = 0; i < logs.length; i++) {\n                    const log = logs[i];\n                    if (log.blockHash != null) { continue; }\n                    if (blocks[log.blockNumber] == null) {\n                        const block = await this.getBlock(log.blockNumber);\n                        if (block) {\n                            blocks[log.blockNumber] = block.hash;\n                        }\n                    }\n                    log.blockHash = blocks[log.blockNumber];\n                }\n\n                return logs;\n            }\n\n            case \"getEtherPrice\":\n                if (this.network.name !== \"homestead\") { return 0.0; }\n                return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n            default:\n                break;\n         }\n\n        return super.perform(method, params);\n    }\n\n    // Note: The `page` page parameter only allows pagination within the\n    //       10,000 window abailable without a page and offset parameter\n    //       Error: Result window is too large, PageNo x Offset size must\n    //              be less than or equal to 10000\n    async getHistory(addressOrName: string | Promise<string>, startBlock?: BlockTag, endBlock?: BlockTag): Promise<Array<TransactionResponse>> {\n        const params = {\n            action: \"txlist\",\n            address: (await this.resolveName(addressOrName)),\n            startblock: ((startBlock == null) ? 0: startBlock),\n            endblock: ((endBlock == null) ? 99999999: endBlock),\n            sort: \"asc\"\n        };\n\n        const result = await this.fetch(\"account\", params);\n\n        return result.map((tx: any) => {\n            [\"contractAddress\", \"to\"].forEach(function(key) {\n                if (tx[key] == \"\") { delete tx[key]; }\n            });\n            if (tx.creates == null && tx.contractAddress != null) {\n                tx.creates = tx.contractAddress;\n            }\n            const item = this.formatter.transactionResponse(tx);\n            if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n            return item;\n        });\n    }\n\n    isCommunityResource(): boolean {\n        return (this.apiKey === defaultApiKey);\n    }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array<Network>): Network {\n    let result = null;\n\n    for (let i = 0; i < networks.length; i++) {\n        const network = networks[i];\n\n        // Null! We do not know our network; bail.\n        if (network == null) { return null; }\n\n        if (result) {\n            // Make sure the network matches the previous networks\n            if (!(result.name === network.name && result.chainId === network.chainId &&\n                ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n                logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n           }\n        } else {\n            result = network;\n        }\n    }\n\n    return result;\n}\n\nfunction median(values: Array<number>, maxDelta?: number): number {\n    values = values.slice().sort();\n    const middle = Math.floor(values.length / 2);\n\n    // Odd length; take the middle\n    if (values.length % 2) {\n        return values[middle];\n    }\n\n    // Even length; take the average of the two middle\n    const a = values[middle - 1], b = values[middle];\n\n    if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n        return null;\n    }\n\n    return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n    if (value === null) {\n        return \"null\";\n    } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n        return JSON.stringify(value);\n    } else if (typeof(value) === \"string\") {\n        return value;\n    } else if (BigNumber.isBigNumber(value)) {\n        return value.toString();\n    } else if (Array.isArray(value)) {\n        return JSON.stringify(value.map((i) => serialize(i)));\n    } else if (typeof(value) === \"object\") {\n        const keys = Object.keys(value);\n        keys.sort();\n        return \"{\" + keys.map((key) => {\n            let v = value[key];\n            if (typeof(v) === \"function\") {\n                v = \"[function]\";\n            } else {\n                v = serialize(v);\n            }\n            return JSON.stringify(key) + \":\" + v;\n        }).join(\",\") + \"}\";\n    }\n\n    throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n    // The Provider\n    provider: Provider;\n\n    // The priority to favour this Provider; lower values are used first (higher priority)\n    priority?: number;\n\n    // Timeout before also triggering the next provider; this does not stop\n    // this provider and if its result comes back before a quorum is reached\n    // it will be incorporated into the vote\n    // - lower values will cause more network traffic but may result in a\n    //   faster retult.\n    stallTimeout?: number;\n\n    // How much this provider contributes to the quorum; sometimes a specific\n    // provider may be more reliable or trustworthy than others, but usually\n    // this should be left as the default\n    weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n    wait: (func: () => void) => Promise<void>\n    getPromise: () => Promise<void>,\n    cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n    let cancel: () => void = null;\n\n    let timer: NodeJS.Timer = null;\n    let promise = <Promise<void>>(new Promise((resolve) => {\n        cancel = function() {\n            if (timer) {\n                clearTimeout(timer);\n                timer = null;\n            }\n            resolve();\n        }\n        timer = setTimeout(cancel, duration);\n    }));\n\n    const wait = (func: () => void) => {\n        promise = promise.then(func);\n        return promise;\n    }\n\n    function getPromise(): Promise<void> {\n        return promise;\n    }\n\n    return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n    Logger.errors.CALL_EXCEPTION,\n    Logger.errors.INSUFFICIENT_FUNDS,\n    Logger.errors.NONCE_EXPIRED,\n    Logger.errors.REPLACEMENT_UNDERPRICED,\n    Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n    \"address\",\n    \"args\",\n    \"errorArgs\",\n    \"errorSignature\",\n    \"method\",\n    \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n    start?: number;\n    done?: boolean;\n    cancelled?: boolean;\n    runner?: Promise<any>;\n    staller?: Staller;\n    result?: any;\n    error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n    const result: any = {\n        weight: config.weight\n    };\n    Object.defineProperty(result, \"provider\", { get: () => config.provider });\n    if (config.start) { result.start = config.start; }\n    if (now) { result.duration = (now - config.start); }\n    if (config.done) {\n        if (config.error) {\n            result.error = config.error;\n        } else {\n            result.result = config.result || null;\n        }\n    }\n    return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array<RunningConfig>) => any {\n    return function(configs: Array<RunningConfig>): any {\n\n        // Count the votes for each result\n        const tally: { [ key: string]: { count: number, result: any } } = { };\n        configs.forEach((c) => {\n            const value = normalize(c.result);\n            if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n            tally[value].count++;\n        });\n\n        // Check for a quorum on any given result\n        const keys = Object.keys(tally);\n        for (let i = 0; i < keys.length; i++) {\n            const check = tally[keys[i]];\n            if (check.count >= quorum) {\n                return check.result;\n            }\n        }\n\n        // No quroum\n        return undefined;\n    }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array<RunningConfig>) => any {\n\n    let normalize = serialize;\n\n    switch (method) {\n        case \"getBlockNumber\":\n            // Return the median value, unless there is (median + 1) is also\n            // present, in which case that is probably true and the median\n            // is going to be stale soon. In the event of a malicious node,\n            // the lie will be true soon enough.\n            return function(configs: Array<RunningConfig>): number {\n                const values = configs.map((c) => c.result);\n\n                // Get the median block number\n                let blockNumber = median(configs.map((c) => c.result), 2);\n                if (blockNumber == null) { return undefined; }\n\n                blockNumber = Math.ceil(blockNumber);\n\n                // If the next block height is present, its prolly safe to use\n                if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n                // Don't ever roll back the blockNumber\n                if (blockNumber >= provider._highestBlockNumber) {\n                    provider._highestBlockNumber = blockNumber;\n                }\n\n                return provider._highestBlockNumber;\n            };\n\n        case \"getGasPrice\":\n            // Return the middle (round index up) value, similar to median\n            // but do not average even entries and choose the higher.\n            // Malicious actors must compromise 50% of the nodes to lie.\n            return function(configs: Array<RunningConfig>): BigNumber {\n                const values = configs.map((c) => c.result);\n                values.sort();\n                return values[Math.floor(values.length / 2)];\n            }\n\n        case \"getEtherPrice\":\n            // Returns the median price. Malicious actors must compromise at\n            // least 50% of the nodes to lie (in a meaningful way).\n            return function(configs: Array<RunningConfig>): number {\n                return median(configs.map((c) => c.result));\n            }\n\n        // No additional normalizing required; serialize is enough\n        case \"getBalance\":\n        case \"getTransactionCount\":\n        case \"getCode\":\n        case \"getStorageAt\":\n        case \"call\":\n        case \"estimateGas\":\n        case \"getLogs\":\n            break;\n\n        // We drop the confirmations from transactions as it is approximate\n        case \"getTransaction\":\n        case \"getTransactionReceipt\":\n            normalize = function(tx: any): string {\n                if (tx == null) { return null; }\n\n                tx = shallowCopy(tx);\n                tx.confirmations = -1;\n                return serialize(tx);\n            }\n            break;\n\n        // We drop the confirmations from transactions as it is approximate\n        case \"getBlock\":\n            // We drop the confirmations from transactions as it is approximate\n            if (params.includeTransactions) {\n                normalize = function(block: BlockWithTransactions): string {\n                    if (block == null) { return null; }\n\n                    block = shallowCopy(block);\n                    block.transactions = block.transactions.map((tx) => {\n                        tx = shallowCopy(tx);\n                        tx.confirmations = -1;\n                        return tx;\n                    });\n                    return serialize(block);\n                };\n            } else {\n                normalize = function(block: Block): string {\n                    if (block == null) { return null; }\n                    return serialize(block);\n                }\n            }\n            break;\n\n        default:\n            throw new Error(\"unknown method: \" + method);\n    }\n\n    // Return the result if and only if the expected quorum is\n    // satisfied and agreed upon for the final result.\n    return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise<BaseProvider> {\n    const provider = <BaseProvider>(config.provider);\n\n    if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n        return provider;\n    }\n\n    return poll(() => {\n        return new Promise((resolve, reject) => {\n            setTimeout(function() {\n\n                // We are synced\n                if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n                // We're done; just quit\n                if (config.cancelled) { return resolve(null); }\n\n                // Try again, next block\n                return resolve(undefined);\n            }, 0);\n        });\n    }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise<any> {\n    let provider = config.provider;\n\n    switch (method) {\n        case \"getBlockNumber\":\n        case \"getGasPrice\":\n            return provider[method]();\n        case \"getEtherPrice\":\n            if ((<any>provider).getEtherPrice) {\n                return (<any>provider).getEtherPrice();\n            }\n            break;\n        case \"getBalance\":\n        case \"getTransactionCount\":\n        case \"getCode\":\n            if (params.blockTag && isHexString(params.blockTag)) {\n                provider = await waitForSync(config, currentBlockNumber)\n            }\n            return provider[method](params.address, params.blockTag || \"latest\");\n        case \"getStorageAt\":\n            if (params.blockTag && isHexString(params.blockTag)) {\n                provider = await waitForSync(config, currentBlockNumber)\n            }\n            return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n        case \"getBlock\":\n            if (params.blockTag && isHexString(params.blockTag)) {\n                provider = await waitForSync(config, currentBlockNumber)\n            }\n            return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n        case \"call\":\n        case \"estimateGas\":\n            if (params.blockTag && isHexString(params.blockTag)) {\n                provider = await waitForSync(config, currentBlockNumber)\n            }\n            return provider[method](params.transaction);\n        case \"getTransaction\":\n        case \"getTransactionReceipt\":\n            return provider[method](params.transactionHash);\n        case \"getLogs\": {\n            let filter = params.filter;\n            if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n                provider = await waitForSync(config, currentBlockNumber)\n            }\n            return provider.getLogs(filter);\n        }\n    }\n\n    return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n        method: method,\n        params: params\n    });\n}\n\nexport class FallbackProvider extends BaseProvider {\n    readonly providerConfigs: ReadonlyArray<FallbackProviderConfig>;\n    readonly quorum: number;\n\n    // Due to the highly asyncronous nature of the blockchain, we need\n    // to make sure we never unroll the blockNumber due to our random\n    // sample of backends\n    _highestBlockNumber: number;\n\n    constructor(providers: Array<Provider | FallbackProviderConfig>, quorum?: number) {\n        logger.checkNew(new.target, FallbackProvider);\n\n        if (providers.length === 0) {\n            logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n        }\n\n        const providerConfigs: Array<FallbackProviderConfig> = providers.map((configOrProvider, index) => {\n            if (Provider.isProvider(configOrProvider)) {\n                const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n                const priority = 1;\n                return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n            }\n\n            const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n            if (config.priority == null) { config.priority = 1; }\n            if (config.stallTimeout == null) {\n                config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n            }\n            if (config.weight == null) { config.weight = 1; }\n\n            const weight = config.weight;\n            if (weight % 1 || weight > 512 || weight < 1) {\n                logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n            }\n\n            return Object.freeze(config);\n        });\n\n        const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n        if (quorum == null) {\n            quorum = total / 2;\n        } else if (quorum > total) {\n            logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n        }\n\n        // Are all providers' networks are known\n        let networkOrReady: Network | Promise<Network> = checkNetworks(providerConfigs.map((c) => (<any>(c.provider)).network));\n\n        // Not all networks are known; we must stall\n        if (networkOrReady == null) {\n            networkOrReady = new Promise((resolve, reject) => {\n                setTimeout(() => {\n                    this.detectNetwork().then(resolve, reject);\n                }, 0);\n            });\n        }\n\n        super(networkOrReady);\n\n        // Preserve a copy, so we do not get mutated\n        defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n        defineReadOnly(this, \"quorum\", quorum);\n\n        this._highestBlockNumber = -1;\n    }\n\n    async detectNetwork(): Promise<Network> {\n        const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n        return checkNetworks(networks);\n    }\n\n    async perform(method: string, params: { [name: string]: any }): Promise<any> {\n        // Sending transactions is special; always broadcast it to all backends\n        if (method === \"sendTransaction\") {\n            const results: Array<string | Error> = await Promise.all(this.providerConfigs.map((c) => {\n                return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n                    return result.hash;\n                }, (error) => {\n                    return error;\n                });\n            }));\n\n            // Any success is good enough (other errors are likely \"already seen\" errors\n            for (let i = 0; i < results.length; i++) {\n                const result = results[i];\n                if (typeof(result) === \"string\") { return result; }\n            }\n\n            // They were all an error; pick the first error\n            throw results[0];\n        }\n\n        // We need to make sure we are in sync with our backends, so we need\n        // to know this before we can make a lot of calls\n        if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n            await this.getBlockNumber();\n        }\n\n        const processFunc = getProcessFunc(this, method, params);\n\n        // Shuffle the providers and then sort them by their priority; we\n        // shallowCopy them since we will store the result in them too\n        const configs: Array<RunningConfig> = shuffled(this.providerConfigs.map(shallowCopy));\n        configs.sort((a, b) => (a.priority - b.priority));\n\n        const currentBlockNumber = this._highestBlockNumber;\n\n        let i = 0;\n        let first = true;\n        while (true) {\n            const t0 = now();\n\n            // Compute the inflight weight (exclude anything past)\n            let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n                                        .reduce((accum, c) => (accum + c.weight), 0);\n\n            // Start running enough to meet quorum\n            while (inflightWeight < this.quorum && i < configs.length) {\n                const config = configs[i++];\n\n                const rid = nextRid++;\n\n                config.start = now();\n                config.staller = stall(config.stallTimeout);\n                config.staller.wait(() => { config.staller = null; });\n\n                config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n                    config.done = true;\n                    config.result = result;\n\n                    if (this.listenerCount(\"debug\")) {\n                        this.emit(\"debug\", {\n                            action: \"request\",\n                            rid: rid,\n                            backend: exposeDebugConfig(config, now()),\n                            request: { method: method, params: deepCopy(params) },\n                            provider: this\n                        });\n                     }\n\n                }, (error) => {\n                    config.done = true;\n                    config.error = error;\n\n                    if (this.listenerCount(\"debug\")) {\n                        this.emit(\"debug\", {\n                            action: \"request\",\n                            rid: rid,\n                            backend: exposeDebugConfig(config, now()),\n                            request: { method: method, params: deepCopy(params) },\n                            provider: this\n                        });\n                    }\n                });\n\n                if (this.listenerCount(\"debug\")) {\n                    this.emit(\"debug\", {\n                        action: \"request\",\n                        rid: rid,\n                        backend: exposeDebugConfig(config, null),\n                        request: { method: method, params: deepCopy(params) },\n                        provider: this\n                    });\n                }\n\n                inflightWeight += config.weight;\n            }\n\n            // Wait for anything meaningful to finish or stall out\n            const waiting: Array<Promise<any>> = [ ];\n            configs.forEach((c) => {\n                if (c.done || !c.runner) { return; }\n                waiting.push(c.runner);\n                if (c.staller) { waiting.push(c.staller.getPromise()); }\n            });\n\n            if (waiting.length) { await Promise.race(waiting); }\n\n            // Check the quorum and process the results; the process function\n            // may additionally decide the quorum is not met\n            const results = configs.filter((c) => (c.done && c.error == null));\n            if (results.length >= this.quorum) {\n                const result = processFunc(results);\n                if (result !== undefined) {\n                    // Shut down any stallers\n                    configs.forEach(c => {\n                        if (c.staller) { c.staller.cancel(); }\n                        c.cancelled = true;\n                    });\n                    return result;\n                }\n                if (!first) { await stall(100).getPromise(); }\n                first = false;\n            }\n\n            // No result, check for errors that should be forwarded\n            const errors = configs.reduce((accum, c) => {\n                if (!c.done || c.error == null) { return accum; }\n\n                const code = (<any>(c.error)).code;\n                if (ForwardErrors.indexOf(code) >= 0) {\n                    if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n                    accum[code].weight += c.weight;\n                }\n\n                return accum;\n            }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n            Object.keys(errors).forEach((errorCode: string) => {\n                const tally = errors[errorCode];\n                if (tally.weight < this.quorum) { return; }\n\n                // Shut down any stallers\n                configs.forEach(c => {\n                    if (c.staller) { c.staller.cancel(); }\n                    c.cancelled = true;\n                });\n\n                const e = <any>(tally.error);\n\n                const props: { [ name: string ]: any } = { };\n                ForwardProperties.forEach((name) => {\n                    if (e[name] == null) { return; }\n                    props[name] = e[name];\n                });\n\n                logger.throwError(e.reason || e.message, <any>errorCode, props);\n            });\n\n            // All configs have run to completion; we will never get more data\n            if (configs.filter((c) => !c.done).length === 0) { break; }\n        }\n\n        // Shut down any stallers; shouldn't be any\n        configs.forEach(c => {\n            if (c.staller) { c.staller.cancel(); }\n            c.cancelled = true;\n        });\n\n        return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n            method: method,\n            params: params,\n            //results: configs.map((c) => c.result),\n            //errors: configs.map((c) => c.error),\n            results: configs.map((c) => exposeDebugConfig(c)),\n            provider: this\n        });\n    }\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n    IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n    readonly apiKey: string;\n    readonly projectId: string;\n    readonly projectSecret: string;\n\n    constructor(network?: Networkish, apiKey?: any) {\n        const provider = new InfuraProvider(network, apiKey);\n        const connection = provider.connection;\n        if (connection.password) {\n            logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n                operation: \"InfuraProvider.getWebSocketProvider()\"\n            });\n        }\n\n        const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n        super(url, network);\n\n        defineReadOnly(this, \"apiKey\", provider.projectId);\n        defineReadOnly(this, \"projectId\", provider.projectId);\n        defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n    }\n\n    isCommunityResource(): boolean {\n        return (this.projectId === defaultProjectId);\n    }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n    readonly projectId: string;\n    readonly projectSecret: string;\n\n    static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n        return new InfuraWebSocketProvider(network, apiKey);\n    }\n\n    static getApiKey(apiKey: any): any {\n        const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n            apiKey: defaultProjectId,\n            projectId: defaultProjectId,\n            projectSecret: null\n        };\n\n        if (apiKey == null) { return apiKeyObj; }\n\n        if (typeof(apiKey) === \"string\") {\n            apiKeyObj.projectId = apiKey;\n\n        } else if (apiKey.projectSecret != null) {\n            logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n                \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n            logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n                \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n            apiKeyObj.projectId = apiKey.projectId;\n            apiKeyObj.projectSecret = apiKey.projectSecret;\n\n        } else if (apiKey.projectId) {\n            apiKeyObj.projectId = apiKey.projectId;\n        }\n\n        apiKeyObj.apiKey = apiKeyObj.projectId;\n\n        return apiKeyObj;\n    }\n\n    static getUrl(network: Network, apiKey: any): ConnectionInfo {\n        let host: string = null;\n        switch(network ? network.name: \"unknown\") {\n            case \"homestead\":\n                host = \"mainnet.infura.io\";\n                break;\n            case \"ropsten\":\n                host = \"ropsten.infura.io\";\n                break;\n            case \"rinkeby\":\n                host = \"rinkeby.infura.io\";\n                break;\n            case \"kovan\":\n                host = \"kovan.infura.io\";\n                break;\n            case \"goerli\":\n                host = \"goerli.infura.io\";\n                break;\n            default:\n                logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n                    argument: \"network\",\n                    value: network\n                });\n        }\n\n        const connection: ConnectionInfo = {\n            allowGzip: true,\n            url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n            throttleCallback: (attempt: number, url: string) => {\n                if (apiKey.projectId === defaultProjectId) {\n                    showThrottleMessage();\n                }\n                return Promise.resolve(true);\n            }\n        };\n\n        if (apiKey.projectSecret != null) {\n            connection.user = \"\";\n            connection.password = apiKey.projectSecret\n        }\n\n        return connection;\n    }\n\n    isCommunityResource(): boolean {\n        return (this.projectId === defaultProjectId);\n    }\n}\n","\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n    _pendingBatchAggregator: NodeJS.Timer;\n    _pendingBatch: Array<{\n        request: { method: string, params: Array<any>, id: number, jsonrpc: \"2.0\" },\n        resolve: (result: any) => void,\n        reject: (error: Error) => void\n    }>;\n\n    send(method: string, params: Array<any>): Promise<any> {\n        const request = {\n            method: method,\n            params: params,\n            id: (this._nextId++),\n            jsonrpc: \"2.0\"\n        };\n\n        if (this._pendingBatch == null) {\n            this._pendingBatch = [ ];\n        }\n\n        const inflightRequest: any = { request, resolve: null, reject: null };\n\n        const promise = new Promise((resolve, reject) => {\n            inflightRequest.resolve = resolve;\n            inflightRequest.reject = reject;\n        });\n\n        this._pendingBatch.push(inflightRequest);\n\n        if (!this._pendingBatchAggregator) {\n            // Schedule batch for next event loop + short duration\n            this._pendingBatchAggregator = setTimeout(() => {\n\n                // Get teh current batch and clear it, so new requests\n                // go into the next batch\n                const batch = this._pendingBatch;\n                this._pendingBatch = null;\n                this._pendingBatchAggregator = null;\n\n                // Get the request as an array of requests\n                const request = batch.map((inflight) => inflight.request);\n\n                this.emit(\"debug\", {\n                    action: \"requestBatch\",\n                    request: deepCopy(request),\n                    provider: this\n                });\n\n                return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n                    this.emit(\"debug\", {\n                        action: \"response\",\n                        request: request,\n                        response: result,\n                        provider: this\n                    });\n\n                    // For each result, feed it to the correct Promise, depending\n                    // on whether it was a success or error\n                    batch.forEach((inflightRequest, index) => {\n                        const payload = result[index];\n                        if (payload.error) {\n                            const error = new Error(payload.error.message);\n                            (<any>error).code = payload.error.code;\n                            (<any>error).data = payload.error.data;\n                            inflightRequest.reject(error);\n                        } else {\n                            inflightRequest.resolve(payload.result);\n                        }\n                    });\n\n                }, (error) => {\n                    this.emit(\"debug\", {\n                        action: \"response\",\n                        error: error,\n                        request: request,\n                        provider: this\n                    });\n\n                    batch.forEach((inflightRequest) => {\n                        inflightRequest.reject(error);\n                    });\n                });\n\n            }, 10);\n        }\n\n        return promise;\n    }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n    static getApiKey(apiKey: any): any {\n        if (apiKey && typeof(apiKey) !== \"string\") {\n            logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n        }\n        return apiKey || defaultApiKey;\n    }\n\n    static getUrl(network: Network, apiKey?: any): string {\n        logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n        let host = null;\n        switch (network.name) {\n            case \"homestead\":\n                host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n                break;\n            case \"ropsten\":\n                host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n                break;\n            case \"rinkeby\":\n                host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n                break;\n            case \"goerli\":\n                host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n                break;\n            case \"kovan\":\n                host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n                break;\n            default:\n               logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n        }\n\n        return (host + \"?apiKey=\" + apiKey);\n    }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// These are load-balancer-based applicatoin IDs\nconst defaultApplicationIds: Record<string, string> = {\n    homestead: \"6004bcd10040261633ade990\",\n    ropsten: \"6004bd4d0040261633ade991\",\n    rinkeby: \"6004bda20040261633ade994\",\n    goerli: \"6004bd860040261633ade992\",\n};\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n    readonly applicationId: string;\n    readonly applicationSecretKey: string;\n    readonly loadBalancer: boolean;\n\n    constructor(network?: Networkish, apiKey?: any) {\n        // We need a bit of creativity in the constructor because\n        // Pocket uses different default API keys based on the network\n\n        if (apiKey == null) {\n            const n = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n            if (n) {\n                const applicationId = defaultApplicationIds[n.name];\n                if (applicationId) {\n                    apiKey = {\n                        applicationId: applicationId,\n                        loadBalancer: true\n                    };\n                }\n            }\n\n            // If there was any issue above, we don't know this network\n            if (apiKey == null) {\n                logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n                    argument: \"network\",\n                    value: network\n                });\n            }\n\n        }\n\n        super(network, apiKey);\n    }\n\n    static getApiKey(apiKey: any): any {\n        // Most API Providers allow null to get the default configuration, but\n        // Pocket requires the network to decide the default provider, so we\n        // rely on hijacking the constructor to add a sensible default for us\n\n        if (apiKey == null) {\n            logger.throwArgumentError(\"PocketProvider.getApiKey does not support null apiKey\", \"apiKey\", apiKey);\n        }\n\n        const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n            applicationId: null,\n            loadBalancer: false,\n            applicationSecretKey: null\n        };\n\n        // Parse applicationId and applicationSecretKey\n        if (typeof (apiKey) === \"string\") {\n            apiKeyObj.applicationId = apiKey;\n\n        } else if (apiKey.applicationSecretKey != null) {\n            logger.assertArgument((typeof (apiKey.applicationId) === \"string\"),\n                \"applicationSecretKey requires an applicationId\", \"applicationId\", apiKey.applicationId);\n            logger.assertArgument((typeof (apiKey.applicationSecretKey) === \"string\"),\n                \"invalid applicationSecretKey\", \"applicationSecretKey\", \"[REDACTED]\");\n\n            apiKeyObj.applicationId = apiKey.applicationId;\n            apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n            apiKeyObj.loadBalancer = !!apiKey.loadBalancer;\n\n        } else if (apiKey.applicationId) {\n            logger.assertArgument((typeof (apiKey.applicationId) === \"string\"),\n                \"apiKey.applicationId must be a string\", \"apiKey.applicationId\", apiKey.applicationId);\n\n            apiKeyObj.applicationId = apiKey.applicationId;\n            apiKeyObj.loadBalancer = !!apiKey.loadBalancer;\n\n        } else {\n            logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n        }\n\n        return apiKeyObj;\n    }\n\n    static getUrl(network: Network, apiKey: any): ConnectionInfo {\n        let host: string = null;\n        switch (network ? network.name : \"unknown\") {\n            case \"homestead\":\n                host = \"eth-mainnet.gateway.pokt.network\";\n                break;\n            case \"ropsten\":\n                host = \"eth-ropsten.gateway.pokt.network\";\n                break;\n            case \"rinkeby\":\n                host = \"eth-rinkeby.gateway.pokt.network\";\n                break;\n            case \"goerli\":\n                host = \"eth-goerli.gateway.pokt.network\";\n                break;\n            default:\n                logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n                    argument: \"network\",\n                    value: network\n                });\n        }\n\n        let url = null;\n        if (apiKey.loadBalancer) {\n            url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n        } else {\n            url = `https:/\\/${ host }/v1/${ apiKey.applicationId }`\n        }\n\n        const connection: ConnectionInfo = { url };\n\n        // Initialize empty headers\n        connection.headers = {}\n\n        // Apply application secret key\n        if (apiKey.applicationSecretKey != null) {\n            connection.user = \"\";\n            connection.password = apiKey.applicationSecretKey\n        }\n\n        return connection;\n    }\n\n    isCommunityResource(): boolean {\n        return (this.applicationId === defaultApplicationIds[this.network.name]);\n    }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n    isMetaMask?: boolean;\n    isStatus?: boolean;\n    host?: string;\n    path?: string;\n    sendAsync?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n    send?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n    request?: (request: { method: string, params?: Array<any> }) => Promise<any>\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array<any>) => Promise<any>;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n    const fetcher = \"Web3LegacyFetcher\";\n\n    return function(method: string, params: Array<any>): Promise<any> {\n\n        // Metamask complains about eth_sign (and on some versions hangs)\n        if (method == \"eth_sign\" && (provider.isMetaMask || provider.isStatus)) {\n            // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign\n            method = \"personal_sign\";\n            params = [ params[1], params[0] ];\n        }\n\n        const request = {\n            method: method,\n            params: params,\n            id: (_nextId++),\n            jsonrpc: \"2.0\"\n        };\n\n        return new Promise((resolve, reject) => {\n            this.emit(\"debug\", {\n                action: \"request\",\n                fetcher,\n                request: deepCopy(request),\n                provider: this\n            });\n\n            sendFunc(request, (error, response) => {\n\n                if (error) {\n                    this.emit(\"debug\", {\n                        action: \"response\",\n                        fetcher,\n                        error,\n                        request,\n                        provider: this\n                    });\n\n                    return reject(error);\n                }\n\n                this.emit(\"debug\", {\n                    action: \"response\",\n                    fetcher,\n                    request,\n                    response,\n                    provider: this\n                });\n\n                if (response.error) {\n                    const error = new Error(response.error.message);\n                    (<any>error).code = response.error.code;\n                    (<any>error).data = response.error.data;\n                    return reject(error);\n                }\n\n                resolve(response.result);\n            });\n        });\n    }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n    return function(method: string, params: Array<any>): Promise<any> {\n        if (params == null) { params = [ ]; }\n\n        // Metamask complains about eth_sign (and on some versions hangs)\n        if (method == \"eth_sign\" && (provider.isMetaMask || provider.isStatus)) {\n            // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign\n            method = \"personal_sign\";\n            params = [ params[1], params[0] ];\n        }\n\n        const request = { method, params };\n\n        this.emit(\"debug\", {\n            action: \"request\",\n            fetcher: \"Eip1193Fetcher\",\n            request: deepCopy(request),\n            provider: this\n        });\n\n        return provider.request(request).then((response) => {\n            this.emit(\"debug\", {\n                action: \"response\",\n                fetcher: \"Eip1193Fetcher\",\n                request,\n                response,\n                provider: this\n            });\n\n            return response;\n\n        }, (error) => {\n            this.emit(\"debug\", {\n                action: \"response\",\n                fetcher: \"Eip1193Fetcher\",\n                request,\n                error,\n                provider: this\n            });\n\n            throw error;\n        });\n    }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n    readonly provider: ExternalProvider;\n    readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n    constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n        logger.checkNew(new.target, Web3Provider);\n\n        if (provider == null) {\n            logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n        }\n\n        let path: string = null;\n        let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n        let subprovider: ExternalProvider = null;\n\n        if (typeof(provider) === \"function\") {\n            path = \"unknown:\";\n            jsonRpcFetchFunc = provider;\n\n        } else {\n            path = provider.host || provider.path || \"\";\n            if (!path && provider.isMetaMask) {\n                path = \"metamask\";\n            }\n\n            subprovider = provider;\n\n            if (provider.request) {\n                if (path === \"\") { path = \"eip-1193:\"; }\n                jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n            } else if (provider.sendAsync) {\n                jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n            } else if (provider.send) {\n                jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n            } else {\n                logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n            }\n\n            if (!path) { path = \"unknown:\"; }\n        }\n\n        super(path, network);\n\n        defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n        defineReadOnly(this, \"provider\", subprovider);\n    }\n\n    send(method: string, params: Array<any>): Promise<any> {\n        return this.jsonRpcFetchFunc(method, params);\n    }\n}\n","\"use strict\";\n\nimport {\n    Block,\n    BlockTag,\n    EventType,\n    FeeData,\n    Filter,\n    Log,\n    Listener,\n    Provider,\n    TransactionReceipt,\n    TransactionRequest,\n    TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Network | string, options?: any): BaseProvider {\n    if (network == null) { network = \"homestead\"; }\n\n    // If passed a URL, figure out the right type of provider based on the scheme\n    if (typeof(network) === \"string\") {\n        // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n        // Handle http and ws (and their secure variants)\n        const match = network.match(/^(ws|http)s?:/i);\n        if (match) {\n            switch (match[1]) {\n                case \"http\":\n                    return new JsonRpcProvider(network);\n                case \"ws\":\n                    return new WebSocketProvider(network);\n                default:\n                    logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n            }\n        }\n    }\n\n    const n = getNetwork(network);\n    if (!n || !n._defaultProvider) {\n        logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n            operation: \"getDefaultProvider\",\n            network: network\n        });\n    }\n\n    return n._defaultProvider({\n        FallbackProvider,\n\n        AlchemyProvider,\n        CloudflareProvider,\n        EtherscanProvider,\n        InfuraProvider,\n        JsonRpcProvider,\n        NodesmithProvider,\n        PocketProvider,\n        Web3Provider,\n\n        IpcProvider,\n    }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n    // Abstract Providers (or Abstract-ish)\n    Provider,\n    BaseProvider,\n\n    Resolver,\n\n    UrlJsonRpcProvider,\n\n    ///////////////////////\n    // Concreate Providers\n\n    FallbackProvider,\n\n    AlchemyProvider,\n    AlchemyWebSocketProvider,\n    CloudflareProvider,\n    EtherscanProvider,\n    InfuraProvider,\n    InfuraWebSocketProvider,\n    JsonRpcProvider,\n    JsonRpcBatchProvider,\n    NodesmithProvider,\n    PocketProvider,\n    StaticJsonRpcProvider,\n    Web3Provider,\n    WebSocketProvider,\n\n    IpcProvider,\n\n\n    ///////////////////////\n    // Signer\n\n    JsonRpcSigner,\n\n\n    ///////////////////////\n    // Functions\n\n    getDefaultProvider,\n    getNetwork,\n    isCommunityResource,\n    isCommunityResourcable,\n    showThrottleMessage,\n\n\n    ///////////////////////\n    // Objects\n\n    Formatter,\n\n\n    ///////////////////////\n    // Types\n\n    Block,\n    BlockTag,\n    EventType,\n    FeeData,\n    Filter,\n    Log,\n    Listener,\n    TransactionReceipt,\n    TransactionRequest,\n    TransactionResponse,\n\n    ExternalProvider,\n    JsonRpcFetchFunc,\n\n    Network,\n    Networkish,\n\n    EnsProvider,\n    EnsResolver,\n\n    CommunityResourcable\n};\n\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n    switch(type) {\n        case \"address\":\n            if (isArray) { return zeroPad(value, 32); }\n            return arrayify(value);\n        case \"string\":\n            return toUtf8Bytes(value);\n        case \"bytes\":\n            return arrayify(value);\n        case \"bool\":\n            value = (value ? \"0x01\": \"0x00\");\n            if (isArray) { return zeroPad(value, 32); }\n            return arrayify(value);\n    }\n\n    let match =  type.match(regexNumber);\n    if (match) {\n        //let signed = (match[1] === \"int\")\n        let size = parseInt(match[2] || \"256\")\n\n        if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n            throw new Error(\"invalid number type - \" + type);\n        }\n\n        if (isArray) { size = 256; }\n\n        value = BigNumber.from(value).toTwos(size);\n\n        return zeroPad(value, size / 8);\n    }\n\n    match = type.match(regexBytes);\n    if (match) {\n        const size = parseInt(match[1]);\n\n        if (String(size) !== match[1] || size === 0 || size > 32) {\n            throw new Error(\"invalid bytes type - \" + type);\n        }\n        if (arrayify(value).byteLength !== size) { throw new Error(\"invalid value for \" + type); }\n        if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n        return value;\n    }\n\n    match = type.match(regexArray);\n    if (match && Array.isArray(value)) {\n        const baseType = match[1];\n        const count = parseInt(match[2] || String(value.length));\n        if (count != value.length) { throw new Error(\"invalid value for \" + type); }\n        const result: Array<Uint8Array> = [];\n        value.forEach(function(value) {\n            result.push(_pack(baseType, value, true));\n        });\n        return concat(result);\n    }\n\n    throw new Error(\"invalid type - \" + type);\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n    if (types.length != values.length) { throw new Error(\"type/value count mismatch\"); }\n    const tight: Array<Uint8Array> = [];\n    types.forEach(function(type, index) {\n        tight.push(_pack(type, values[index]));\n    });\n    return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n    return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n    return hashSha256(pack(types, values));\n}\n","export const version = \"units/5.4.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n    \"wei\",\n    \"kwei\",\n    \"mwei\",\n    \"gwei\",\n    \"szabo\",\n    \"finney\",\n    \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n    const comps = String(value).split(\".\");\n\n    if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n        logger.throwArgumentError(\"invalid value\", \"value\", value);\n    }\n\n    // Make sure we have at least one whole digit (0 if none)\n    let whole = comps[0];\n\n    let negative = \"\";\n    if (whole.substring(0, 1) === \"-\") {\n        negative = \"-\";\n        whole = whole.substring(1);\n    }\n\n    // Make sure we have at least 1 whole digit with no leading zeros\n    while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n    if (whole === \"\") { whole = \"0\"; }\n\n    let suffix = \"\";\n    if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n    while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n        suffix = suffix.substring(0, suffix.length - 1);\n    }\n\n    const formatted = [];\n    while (whole.length) {\n        if (whole.length <= 3) {\n            formatted.unshift(whole);\n            break;\n        } else {\n            const index = whole.length - 3;\n            formatted.unshift(whole.substring(index));\n            whole = whole.substring(0, index);\n        }\n    }\n\n    return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n    if (typeof(unitName) === \"string\") {\n        const index = names.indexOf(unitName);\n        if (index !== -1) { unitName = 3 * index; }\n    }\n    return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n    if (typeof(value) !== \"string\") {\n        logger.throwArgumentError(\"value must be a string\", \"value\", value);\n    }\n    if (typeof(unitName) === \"string\") {\n        const index = names.indexOf(unitName);\n        if (index !== -1) { unitName = 3 * index; }\n    }\n    return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n    return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n    return parseUnits(ether, 18);\n}\n\n","\"use strict\";\n\nimport { AbiCoder, checkResultErrors, ConstructorFragment, defaultAbiCoder, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, getAccountPath, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { accessListify, computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction, TransactionTypes } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { AccessList, AccessListish } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n    AbiCoder,\n    defaultAbiCoder,\n\n    Fragment,\n    ConstructorFragment,\n    ErrorFragment,\n    EventFragment,\n    FunctionFragment,\n    ParamType,\n    FormatTypes,\n\n    checkResultErrors,\n    Result,\n\n    Logger,\n\n    RLP,\n\n    _fetchData,\n    fetchJson,\n    poll,\n\n    checkProperties,\n    deepCopy,\n    defineReadOnly,\n    getStatic,\n    resolveProperties,\n    shallowCopy,\n\n    arrayify,\n\n    concat,\n    stripZeros,\n    zeroPad,\n\n    isBytes,\n    isBytesLike,\n\n    defaultPath,\n    HDNode,\n    SigningKey,\n\n    Interface,\n\n    LogDescription,\n    TransactionDescription,\n\n    base58,\n    base64,\n\n    hexlify,\n    isHexString,\n    hexConcat,\n    hexStripZeros,\n    hexValue,\n    hexZeroPad,\n    hexDataLength,\n    hexDataSlice,\n\n    nameprep,\n    _toEscapedUtf8String,\n    toUtf8Bytes,\n    toUtf8CodePoints,\n    toUtf8String,\n    Utf8ErrorFuncs,\n\n    formatBytes32String,\n    parseBytes32String,\n\n    hashMessage,\n    namehash,\n    isValidName,\n    id,\n\n    _TypedDataEncoder,\n\n    getAddress,\n    getIcapAddress,\n    getContractAddress,\n    getCreate2Address,\n    isAddress,\n\n    formatEther,\n    parseEther,\n\n    formatUnits,\n    parseUnits,\n\n    commify,\n\n    computeHmac,\n    keccak256,\n    ripemd160,\n    sha256,\n    sha512,\n\n    randomBytes,\n    shuffled,\n\n    solidityPack,\n    solidityKeccak256,\n    soliditySha256,\n\n    splitSignature,\n    joinSignature,\n\n    accessListify,\n    parseTransaction,\n    serializeTransaction,\n    TransactionTypes,\n\n    getJsonWalletAddress,\n\n    computeAddress,\n    recoverAddress,\n\n    computePublicKey,\n    recoverPublicKey,\n\n    verifyMessage,\n    verifyTypedData,\n\n    getAccountPath,\n    mnemonicToEntropy,\n    entropyToMnemonic,\n    isValidMnemonic,\n    mnemonicToSeed,\n\n\n    ////////////////////////\n    // Enums\n\n    SupportedAlgorithm,\n\n    UnicodeNormalizationForm,\n    Utf8ErrorReason,\n\n    ////////////////////////\n    // Types\n\n    Bytes,\n    BytesLike,\n    Hexable,\n\n    AccessList,\n    AccessListish,\n    UnsignedTransaction,\n\n    CoerceFunc,\n\n    Indexed,\n\n    Mnemonic,\n\n    Deferrable,\n\n    Utf8ErrorFunc,\n\n    ConnectionInfo,\n    OnceBlockable,\n    OncePollable,\n    PollOptions,\n    FetchJsonResponse,\n\n    EncryptOptions,\n    ProgressCallback\n}\n\n","export const version = \"ethers/5.4.1\";\n","\"use strict\";\n\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\n\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\n\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport * as constants from \"@ethersproject/constants\";\n\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\n\nimport { Wordlist, wordlists} from \"@ethersproject/wordlists\";\n\nimport * as utils from \"./utils\";\n\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n\n////////////////////////\n// Types\n\nimport { BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike, Signature } from \"@ethersproject/bytes\";\nimport { Transaction, UnsignedTransaction } from \"@ethersproject/transactions\";\n\n\n////////////////////////\n// Compile-Time Constants\n\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\n////////////////////////\n// Types\n\nimport {\n    ContractFunction,\n    ContractReceipt,\n    ContractTransaction,\n\n    Event,\n    EventFilter,\n\n    Overrides,\n    PayableOverrides,\n    CallOverrides,\n\n    PopulatedTransaction,\n\n    ContractInterface\n} from \"@ethersproject/contracts\";\n\n\n////////////////////////\n// Exports\n\nexport {\n    Signer,\n\n    Wallet,\n    VoidSigner,\n\n    getDefaultProvider,\n    providers,\n\n    BaseContract,\n    Contract,\n    ContractFactory,\n\n    BigNumber,\n    FixedNumber,\n\n    constants,\n    errors,\n\n    logger,\n\n    utils,\n\n    wordlists,\n\n\n    ////////////////////////\n    // Compile-Time Constants\n\n    version,\n\n\n    ////////////////////////\n    // Types\n\n    ContractFunction,\n    ContractReceipt,\n    ContractTransaction,\n    Event,\n    EventFilter,\n\n    Overrides,\n    PayableOverrides,\n    CallOverrides,\n\n    PopulatedTransaction,\n\n    ContractInterface,\n\n    BigNumberish,\n\n    Bytes,\n    BytesLike,\n\n    Signature,\n\n    Transaction,\n    UnsignedTransaction,\n\n    Wordlist\n};\n\n","\"use strict\";\n\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\n\nimport * as ethers from \"./ethers\";\n\ntry {\n    const anyGlobal = (window as any);\n\n    if (anyGlobal._ethers == null) {\n        anyGlobal._ethers = ethers;\n    }\n} catch (error) { }\n\nexport { ethers };\n\nexport {\n    Signer,\n\n    Wallet,\n    VoidSigner,\n\n    getDefaultProvider,\n    providers,\n\n    BaseContract,\n    Contract,\n    ContractFactory,\n\n    BigNumber,\n    FixedNumber,\n\n    constants,\n    errors,\n\n    logger,\n\n    utils,\n\n    wordlists,\n\n\n    ////////////////////////\n    // Compile-Time Constants\n\n    version,\n\n\n    ////////////////////////\n    // Types\n\n    ContractFunction,\n    ContractReceipt,\n    ContractTransaction,\n    Event,\n    EventFilter,\n\n    Overrides,\n    PayableOverrides,\n    CallOverrides,\n\n    PopulatedTransaction,\n\n    ContractInterface,\n\n    BigNumberish,\n\n    Bytes,\n    BytesLike,\n\n    Signature,\n\n    Transaction,\n    UnsignedTransaction,\n\n    Wordlist\n} from \"./ethers\";\n"],"names":["this","_version_1","logger_1","bytes_1","bignumber_1","properties_1","global","keccak256_1","rlp_1","address_1","abstract_coder_1","anonymous_1","constants_1","utf8_1","bytes32_1","idna_1","strings_1","array_1","string_1","bytes_2","tuple_1","null_1","number_1","fixed_bytes_1","fragments_1","message_1","typed_data_1","fragments","abi_coder_1","hash_1","interface_1","minAssert","minUtils","BN","utils","assert","Base","inherits","require$$0","require$$1","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","SHA512","require$$2","require$$3","require$$4","sum32_3","curve","hash","curves","KeyPair","HmacDRBG","Signature","signature","elliptic_1","signing_key_1","transactions_1","abi_1","abstract_signer_1","abstract_provider_1","types_1","sha2_1","wordlist","wordlist_1","lang_cz_1","lang_en_1","lang_es_1","lang_fr_1","lang_it_1","lang_ja_1","lang_ko_1","lang_zh_1","wordlists_1","basex_1","pbkdf2_1","define","utils_1","hdnode_1","random_1","crowdsale_1","inspect_1","keystore_1","json_wallets_1","base64_1","geturl_1","web_1","formatter_1","networks_1","base_provider_1","ws_1","json_rpc_provider_1","websocket_provider_1","url_json_rpc_provider_1","alchemy_provider_1","cloudflare_provider_1","etherscan_provider_1","fallback_provider_1","ipc_provider_1","infura_provider_1","json_rpc_batch_provider_1","nodesmith_provider_1","pocket_provider_1","web3_provider_1","solidity_1","units_1","wallet_1","contracts_1","ethers"],"mappings":"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AAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB;CACA,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;CAChD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,G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AE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;CACA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;CACA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,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;AACjC;CACA,IAAI,QAAQ,GAAG;CACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAA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AAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;CACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACxD,CAAC,CAAC;AACF;CACA,IAAI,EAAE,GAAG;CACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;CACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE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AE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpM;CACA;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7gD,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7gD;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,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,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAA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"}